--
-- NAME
-- all inputs are silently truncated at NAMEDATALEN-1 (63) characters
--
-- fixed-length by reference
SELECT name 'name string' = name 'name string' AS "True";
SELECT name 'name string' = name 'name string ' AS "False";
--
--
--
CREATE TABLE NAME_TBL(f1 name);
INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR');
INSERT INTO NAME_TBL(f1) VALUES ('1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr');
INSERT INTO NAME_TBL(f1) VALUES ('asdfghjkl;');
INSERT INTO NAME_TBL(f1) VALUES ('343f%2a');
INSERT INTO NAME_TBL(f1) VALUES ('d34aaasdf');
INSERT INTO NAME_TBL(f1) VALUES ('');
INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ');
SELECT * FROM NAME_TBL;
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*';
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*';
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]';
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*';
DROP TABLE NAME_TBL;
DO $$
DECLARE r text[];
BEGIN
r := parse_ident('Schemax.Tabley');
RAISE NOTICE '%', format('%I.%I', r[1], r[2]);
r := parse_ident('"SchemaX"."TableY"');
RAISE NOTICE '%', format('%I.%I', r[1], r[2]);
END;
$$;
-stdin-:: Error: Parse Sql
-stdin-::1:1: Error: RawStmt: alternative is not implemented yet : 263
DO $$
^
SELECT parse_ident('foo.boo');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident('foo.boo');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident('foo.boo');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident('foo.boo');
^
SELECT parse_ident('foo.boo[]'); -- should fail
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident('foo.boo[]'); -- should fail
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident('foo.boo[]'); -- should fail
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident('foo.boo[]'); -- should fail
^
SELECT parse_ident('foo.boo[]', strict => false); -- ok
-stdin-:: Error: Parse Sql
-stdin-::1:8: Error: alternative is not implemented yet : 118
SELECT parse_ident('foo.boo[]', strict => false); -- ok
^
-- should fail
SELECT parse_ident(' ');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
-- should fail
^
-stdin-::2:8: Error: At function: PgCall
SELECT parse_ident(' ');
^
-stdin-::2:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident(' ');
^
SELECT parse_ident(' .aaa');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident(' .aaa');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident(' .aaa');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident(' .aaa');
^
SELECT parse_ident(' aaa . ');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident(' aaa . ');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident(' aaa . ');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident(' aaa . ');
^
SELECT parse_ident('aaa.a%b');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident('aaa.a%b');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident('aaa.a%b');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident('aaa.a%b');
^
SELECT parse_ident(E'X\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident(E'X\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident(E'X\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident(E'X\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
^
SELECT length(a[1]), length(a[2]) from parse_ident('"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy') as a ;
-stdin-:: Error: Parse Sql
-stdin-::1:8: Error: alternative is not implemented yet : 360
SELECT length(a[1]), length(a[2]) from parse_ident('"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy') as a ;
^
SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (text)
SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"');
^
SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[];
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[];
^
-stdin-::1:91: Error: At function: PgCast
SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[];
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[];
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (text)
SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[];
^
SELECT parse_ident(E'"c".X XXXX\002XXXXXX');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident(E'"c".X XXXX\002XXXXXX');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident(E'"c".X XXXX\002XXXXXX');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident(E'"c".X XXXX\002XXXXXX');
^
SELECT parse_ident('1020');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident('1020');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident('1020');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident('1020');
^
SELECT parse_ident('10.20');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident('10.20');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident('10.20');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident('10.20');
^
SELECT parse_ident('.');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident('.');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident('.');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident('.');
^
SELECT parse_ident('.1020');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident('.1020');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident('.1020');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident('.1020');
^
SELECT parse_ident('xxx.1020');
-stdin-:: Error: Type annotation
-stdin-::1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
SELECT parse_ident('xxx.1020');
^
-stdin-::1:8: Error: At function: PgCall
SELECT parse_ident('xxx.1020');
^
-stdin-::1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
SELECT parse_ident('xxx.1020');
^