1-- 2-- NAME 3-- all inputs are silently truncated at NAMEDATALEN-1 (63) characters 4-- 5 6-- fixed-length by reference 7SELECT name 'name string' = name 'name string' AS "True"; 8 9SELECT name 'name string' = name 'name string ' AS "False"; 10 11-- 12-- 13-- 14 15CREATE TABLE NAME_TBL(f1 name); 16 17INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'); 18 19INSERT INTO NAME_TBL(f1) VALUES ('1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr'); 20 21INSERT INTO NAME_TBL(f1) VALUES ('asdfghjkl;'); 22 23INSERT INTO NAME_TBL(f1) VALUES ('343f%2a'); 24 25INSERT INTO NAME_TBL(f1) VALUES ('d34aaasdf'); 26 27INSERT INTO NAME_TBL(f1) VALUES (''); 28 29INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'); 30 31 32SELECT '' AS seven, * FROM NAME_TBL; 33 34SELECT '' AS six, c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; 35 36SELECT '' AS one, c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; 37 38SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; 39 40SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; 41 42SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; 43 44SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; 45 46SELECT '' AS seven, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*'; 47 48SELECT '' AS zero, c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*'; 49 50SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]'; 51 52SELECT '' AS two, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*'; 53 54DROP TABLE NAME_TBL; 55 56DO $$ 57DECLARE r text[]; 58BEGIN 59 r := parse_ident('Schemax.Tabley'); 60 RAISE NOTICE '%', format('%I.%I', r[1], r[2]); 61 r := parse_ident('"SchemaX"."TableY"'); 62 RAISE NOTICE '%', format('%I.%I', r[1], r[2]); 63END; 64$$; 65 66SELECT parse_ident('foo.boo'); 67SELECT parse_ident('foo.boo[]'); -- should fail 68SELECT parse_ident('foo.boo[]', strict => false); -- ok 69 70-- should fail 71SELECT parse_ident(' '); 72SELECT parse_ident(' .aaa'); 73SELECT parse_ident(' aaa . '); 74SELECT parse_ident('aaa.a%b'); 75SELECT parse_ident(E'X\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'); 76 77SELECT length(a[1]), length(a[2]) from parse_ident('"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy') as a ; 78 79SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"'); 80SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[]; 81 82SELECT parse_ident(E'"c".X XXXX\002XXXXXX'); 83SELECT parse_ident('1020'); 84SELECT parse_ident('10.20'); 85SELECT parse_ident('.'); 86SELECT parse_ident('.1020'); 87SELECT parse_ident('xxx.1020'); 88