From 13fdd0e4d1773e91bab1b3f255ef432409505b47 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Fri, 7 Nov 2008 23:17:30 +0000 Subject: [PATCH] Add some more citext test cases, per David Wheeler. Also remove the citext-to-and-from-xml tests, since those caused variation between installations with or without libxml without really proving much. Instead repurpose citext_1.out as the expected results in glibc en_US (and probably other) locales. --- contrib/citext/expected/citext.out | 60 ++++++++++--------- contrib/citext/expected/citext_1.out | 86 ++++++++++++++-------------- contrib/citext/sql/citext.sql | 28 +++++---- 3 files changed, 94 insertions(+), 80 deletions(-) diff --git a/contrib/citext/expected/citext.out b/contrib/citext/expected/citext.out index 8d9c66e3c3e..4d8f1ac0665 100644 --- a/contrib/citext/expected/citext.out +++ b/contrib/citext/expected/citext.out @@ -710,6 +710,30 @@ SELECT 'foo'::citext::name = 'foo'::name AS t; t (1 row) +SELECT 'f'::char::citext = 'f' AS t; + t +--- + t +(1 row) + +SELECT 'f'::citext::char = 'f'::char AS t; + t +--- + t +(1 row) + +SELECT 'f'::"char"::citext = 'f' AS t; + t +--- + t +(1 row) + +SELECT 'f'::citext::"char" = 'f'::"char" AS t; + t +--- + t +(1 row) + SELECT 'foo'::bytea::citext = 'foo' AS t; t --- @@ -806,18 +830,6 @@ SELECT '08:00:2b:01:02:03'::citext::macaddr = '08:00:2b:01:02:03'::macaddr AS t; t (1 row) -SELECT '<p>foo</p>'::xml::citext = '<p>foo</p>' AS t; - t ---- - t -(1 row) - -SELECT '<p>foo</p>'::citext::xml::text = '<p>foo</p>'::xml::text AS t; - t ---- - t -(1 row) - SELECT '1999-01-08 04:05:06'::timestamp::citext = '1999-01-08 04:05:06'::timestamp::text AS t; t --- @@ -1041,6 +1053,8 @@ CREATE TABLE caster ( text text, varchar varchar, bpchar bpchar, + char char, + chr "char", name name, bytea bytea, boolean boolean, @@ -1053,7 +1067,6 @@ CREATE TABLE caster ( cidr cidr, inet inet, macaddr macaddr, - xml xml, money money, timestamp timestamp, timestamptz timestamptz, @@ -1083,6 +1096,14 @@ INSERT INTO caster (bpchar) VALUES ('foo'::text); INSERT INTO caster (text) VALUES ('foo'::bpchar); INSERT INTO caster (bpchar) VALUES ('foo'::citext); INSERT INTO caster (citext) VALUES ('foo'::bpchar); +INSERT INTO caster (char) VALUES ('f'::text); +INSERT INTO caster (text) VALUES ('f'::char); +INSERT INTO caster (char) VALUES ('f'::citext); +INSERT INTO caster (citext) VALUES ('f'::char); +INSERT INTO caster (chr) VALUES ('f'::text); +INSERT INTO caster (text) VALUES ('f'::"char"); +INSERT INTO caster (chr) VALUES ('f'::citext); +INSERT INTO caster (citext) VALUES ('f'::"char"); INSERT INTO caster (name) VALUES ('foo'::text); INSERT INTO caster (text) VALUES ('foo'::name); INSERT INTO caster (name) VALUES ('foo'::citext); @@ -1230,19 +1251,6 @@ LINE 1: INSERT INTO caster (macaddr) VALUES ('08:00:2b:01:02:0... ^ HINT: You will need to rewrite or cast the expression. INSERT INTO caster (citext) VALUES ('08:00:2b:01:02:03'::macaddr); --- Cannot cast to xml on assignment. -INSERT INTO caster (xml) VALUES ('<p>foo</p>'::text); -ERROR: column "xml" is of type xml but expression is of type text -LINE 1: INSERT INTO caster (xml) VALUES ('<p>foo</p>'::tex... - ^ -HINT: You will need to rewrite or cast the expression. -INSERT INTO caster (text) VALUES ('<p>foo</p>'::xml); -INSERT INTO caster (xml) VALUES ('<p>foo</p>'::citext); -ERROR: column "xml" is of type xml but expression is of type citext -LINE 1: INSERT INTO caster (xml) VALUES ('<p>foo</p>'::cit... - ^ -HINT: You will need to rewrite or cast the expression. -INSERT INTO caster (citext) VALUES ('<p>foo</p>'::xml); -- Cannot cast to money on assignment. INSERT INTO caster (money) VALUES ('12'::text); ERROR: column "money" is of type money but expression is of type text diff --git a/contrib/citext/expected/citext_1.out b/contrib/citext/expected/citext_1.out index ff93842a914..e9bb6124c80 100644 --- a/contrib/citext/expected/citext_1.out +++ b/contrib/citext/expected/citext_1.out @@ -122,25 +122,25 @@ SELECT 'A'::text <> 'a'::citext AS t; SELECT 'B'::citext < 'a'::text AS t; -- text wins. t --- - t + f (1 row) SELECT 'B'::citext <= 'a'::text AS t; -- text wins. t --- - t + f (1 row) SELECT 'a'::citext > 'B'::text AS t; -- text wins. t --- - t + f (1 row) SELECT 'a'::citext >= 'B'::text AS t; -- text wins. t --- - t + f (1 row) -- Test implicit casting. citext casts to varchar, but not vice-versa. @@ -159,25 +159,25 @@ SELECT 'A'::varchar <> 'a'::citext AS t; SELECT 'B'::citext < 'a'::varchar AS t; -- varchar wins. t --- - t + f (1 row) SELECT 'B'::citext <= 'a'::varchar AS t; -- varchar wins. t --- - t + f (1 row) SELECT 'a'::citext > 'B'::varchar AS t; -- varchar wins. t --- - t + f (1 row) SELECT 'a'::citext >= 'B'::varchar AS t; -- varchar wins. t --- - t + f (1 row) -- A couple of longer examlpes to ensure that we don't get any issues with bad @@ -710,6 +710,30 @@ SELECT 'foo'::citext::name = 'foo'::name AS t; t (1 row) +SELECT 'f'::char::citext = 'f' AS t; + t +--- + t +(1 row) + +SELECT 'f'::citext::char = 'f'::char AS t; + t +--- + t +(1 row) + +SELECT 'f'::"char"::citext = 'f' AS t; + t +--- + t +(1 row) + +SELECT 'f'::citext::"char" = 'f'::"char" AS t; + t +--- + t +(1 row) + SELECT 'foo'::bytea::citext = 'foo' AS t; t --- @@ -806,18 +830,6 @@ SELECT '08:00:2b:01:02:03'::citext::macaddr = '08:00:2b:01:02:03'::macaddr AS t; t (1 row) -SELECT '<p>foo</p>'::xml::citext = '<p>foo</p>' AS t; -ERROR: unsupported XML feature -LINE 1: SELECT '<p>foo</p>'::xml::citext = '<p>foo</p>' AS t; - ^ -DETAIL: This functionality requires the server to be built with libxml support. -HINT: You need to rebuild PostgreSQL using --with-libxml. -SELECT '<p>foo</p>'::citext::xml::text = '<p>foo</p>'::xml::text AS t; -ERROR: unsupported XML feature -LINE 1: SELECT '<p>foo</p>'::citext::xml::text = '<p>foo</p>'::xml::... - ^ -DETAIL: This functionality requires the server to be built with libxml support. -HINT: You need to rebuild PostgreSQL using --with-libxml. SELECT '1999-01-08 04:05:06'::timestamp::citext = '1999-01-08 04:05:06'::timestamp::text AS t; t --- @@ -1041,6 +1053,8 @@ CREATE TABLE caster ( text text, varchar varchar, bpchar bpchar, + char char, + chr "char", name name, bytea bytea, boolean boolean, @@ -1053,7 +1067,6 @@ CREATE TABLE caster ( cidr cidr, inet inet, macaddr macaddr, - xml xml, money money, timestamp timestamp, timestamptz timestamptz, @@ -1083,6 +1096,14 @@ INSERT INTO caster (bpchar) VALUES ('foo'::text); INSERT INTO caster (text) VALUES ('foo'::bpchar); INSERT INTO caster (bpchar) VALUES ('foo'::citext); INSERT INTO caster (citext) VALUES ('foo'::bpchar); +INSERT INTO caster (char) VALUES ('f'::text); +INSERT INTO caster (text) VALUES ('f'::char); +INSERT INTO caster (char) VALUES ('f'::citext); +INSERT INTO caster (citext) VALUES ('f'::char); +INSERT INTO caster (chr) VALUES ('f'::text); +INSERT INTO caster (text) VALUES ('f'::"char"); +INSERT INTO caster (chr) VALUES ('f'::citext); +INSERT INTO caster (citext) VALUES ('f'::"char"); INSERT INTO caster (name) VALUES ('foo'::text); INSERT INTO caster (text) VALUES ('foo'::name); INSERT INTO caster (name) VALUES ('foo'::citext); @@ -1230,29 +1251,6 @@ LINE 1: INSERT INTO caster (macaddr) VALUES ('08:00:2b:01:02:0... ^ HINT: You will need to rewrite or cast the expression. INSERT INTO caster (citext) VALUES ('08:00:2b:01:02:03'::macaddr); --- Cannot cast to xml on assignment. -INSERT INTO caster (xml) VALUES ('<p>foo</p>'::text); -ERROR: column "xml" is of type xml but expression is of type text -LINE 1: INSERT INTO caster (xml) VALUES ('<p>foo</p>'::tex... - ^ -HINT: You will need to rewrite or cast the expression. -INSERT INTO caster (text) VALUES ('<p>foo</p>'::xml); -ERROR: unsupported XML feature -LINE 1: INSERT INTO caster (text) VALUES ('<p>foo</p>'::xml... - ^ -DETAIL: This functionality requires the server to be built with libxml support. -HINT: You need to rebuild PostgreSQL using --with-libxml. -INSERT INTO caster (xml) VALUES ('<p>foo</p>'::citext); -ERROR: column "xml" is of type xml but expression is of type citext -LINE 1: INSERT INTO caster (xml) VALUES ('<p>foo</p>'::cit... - ^ -HINT: You will need to rewrite or cast the expression. -INSERT INTO caster (citext) VALUES ('<p>foo</p>'::xml); -ERROR: unsupported XML feature -LINE 1: INSERT INTO caster (citext) VALUES ('<p>foo</p>'::xml... - ^ -DETAIL: This functionality requires the server to be built with libxml support. -HINT: You need to rebuild PostgreSQL using --with-libxml. -- Cannot cast to money on assignment. INSERT INTO caster (money) VALUES ('12'::text); ERROR: column "money" is of type money but expression is of type text diff --git a/contrib/citext/sql/citext.sql b/contrib/citext/sql/citext.sql index 428f6e1cfc2..379c0786f18 100644 --- a/contrib/citext/sql/citext.sql +++ b/contrib/citext/sql/citext.sql @@ -220,6 +220,12 @@ SELECT '4.0'::citext::float8 = 4.0 AS t; SELECT 'foo'::name::citext = 'foo' AS t; SELECT 'foo'::citext::name = 'foo'::name AS t; +SELECT 'f'::char::citext = 'f' AS t; +SELECT 'f'::citext::char = 'f'::char AS t; + +SELECT 'f'::"char"::citext = 'f' AS t; +SELECT 'f'::citext::"char" = 'f'::"char" AS t; + SELECT 'foo'::bytea::citext = 'foo' AS t; SELECT 'foo'::citext::bytea = 'foo'::bytea AS t; @@ -244,9 +250,6 @@ SELECT '192.168.100.128'::citext::inet = '192.168.100.128'::inet AS t; SELECT '08:00:2b:01:02:03'::macaddr::citext = '08:00:2b:01:02:03' AS t; SELECT '08:00:2b:01:02:03'::citext::macaddr = '08:00:2b:01:02:03'::macaddr AS t; -SELECT '<p>foo</p>'::xml::citext = '<p>foo</p>' AS t; -SELECT '<p>foo</p>'::citext::xml::text = '<p>foo</p>'::xml::text AS t; - SELECT '1999-01-08 04:05:06'::timestamp::citext = '1999-01-08 04:05:06'::timestamp::text AS t; SELECT '1999-01-08 04:05:06'::citext::timestamp = '1999-01-08 04:05:06'::timestamp AS t; SELECT '1999-01-08 04:05:06'::timestamptz::citext = '1999-01-08 04:05:06'::timestamptz::text AS t; @@ -300,6 +303,8 @@ CREATE TABLE caster ( text text, varchar varchar, bpchar bpchar, + char char, + chr "char", name name, bytea bytea, boolean boolean, @@ -312,7 +317,6 @@ CREATE TABLE caster ( cidr cidr, inet inet, macaddr macaddr, - xml xml, money money, timestamp timestamp, timestamptz timestamptz, @@ -346,6 +350,16 @@ INSERT INTO caster (text) VALUES ('foo'::bpchar); INSERT INTO caster (bpchar) VALUES ('foo'::citext); INSERT INTO caster (citext) VALUES ('foo'::bpchar); +INSERT INTO caster (char) VALUES ('f'::text); +INSERT INTO caster (text) VALUES ('f'::char); +INSERT INTO caster (char) VALUES ('f'::citext); +INSERT INTO caster (citext) VALUES ('f'::char); + +INSERT INTO caster (chr) VALUES ('f'::text); +INSERT INTO caster (text) VALUES ('f'::"char"); +INSERT INTO caster (chr) VALUES ('f'::citext); +INSERT INTO caster (citext) VALUES ('f'::"char"); + INSERT INTO caster (name) VALUES ('foo'::text); INSERT INTO caster (text) VALUES ('foo'::name); INSERT INTO caster (name) VALUES ('foo'::citext); @@ -417,12 +431,6 @@ INSERT INTO caster (text) VALUES ('08:00:2b:01:02:03'::macaddr); INSERT INTO caster (macaddr) VALUES ('08:00:2b:01:02:03'::citext); INSERT INTO caster (citext) VALUES ('08:00:2b:01:02:03'::macaddr); --- Cannot cast to xml on assignment. -INSERT INTO caster (xml) VALUES ('<p>foo</p>'::text); -INSERT INTO caster (text) VALUES ('<p>foo</p>'::xml); -INSERT INTO caster (xml) VALUES ('<p>foo</p>'::citext); -INSERT INTO caster (citext) VALUES ('<p>foo</p>'::xml); - -- Cannot cast to money on assignment. INSERT INTO caster (money) VALUES ('12'::text); INSERT INTO caster (text) VALUES ('12'::money); -- GitLab