name.err 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. <sql-statement>
  2. --
  3. -- NAME
  4. -- all inputs are silently truncated at NAMEDATALEN-1 (63) characters
  5. --
  6. -- fixed-length by reference
  7. SELECT name 'name string' = name 'name string' AS "True";
  8. </sql-statement>
  9. <sql-statement>
  10. SELECT name 'name string' = name 'name string ' AS "False";
  11. </sql-statement>
  12. <sql-statement>
  13. --
  14. --
  15. --
  16. CREATE TABLE NAME_TBL(f1 name);
  17. </sql-statement>
  18. <sql-statement>
  19. INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR');
  20. </sql-statement>
  21. <sql-statement>
  22. INSERT INTO NAME_TBL(f1) VALUES ('1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr');
  23. </sql-statement>
  24. <sql-statement>
  25. INSERT INTO NAME_TBL(f1) VALUES ('asdfghjkl;');
  26. </sql-statement>
  27. <sql-statement>
  28. INSERT INTO NAME_TBL(f1) VALUES ('343f%2a');
  29. </sql-statement>
  30. <sql-statement>
  31. INSERT INTO NAME_TBL(f1) VALUES ('d34aaasdf');
  32. </sql-statement>
  33. <sql-statement>
  34. INSERT INTO NAME_TBL(f1) VALUES ('');
  35. </sql-statement>
  36. <sql-statement>
  37. INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ');
  38. </sql-statement>
  39. <sql-statement>
  40. SELECT * FROM NAME_TBL;
  41. </sql-statement>
  42. <sql-statement>
  43. SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
  44. </sql-statement>
  45. <sql-statement>
  46. SELECT c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
  47. </sql-statement>
  48. <sql-statement>
  49. SELECT c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
  50. </sql-statement>
  51. <sql-statement>
  52. SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
  53. </sql-statement>
  54. <sql-statement>
  55. SELECT c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
  56. </sql-statement>
  57. <sql-statement>
  58. SELECT c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
  59. </sql-statement>
  60. <sql-statement>
  61. SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*';
  62. </sql-statement>
  63. <sql-statement>
  64. SELECT c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*';
  65. </sql-statement>
  66. <sql-statement>
  67. SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]';
  68. </sql-statement>
  69. <sql-statement>
  70. SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*';
  71. </sql-statement>
  72. <sql-statement>
  73. DROP TABLE NAME_TBL;
  74. </sql-statement>
  75. <sql-statement>
  76. DO $$
  77. DECLARE r text[];
  78. BEGIN
  79. r := parse_ident('Schemax.Tabley');
  80. RAISE NOTICE '%', format('%I.%I', r[1], r[2]);
  81. r := parse_ident('"SchemaX"."TableY"');
  82. RAISE NOTICE '%', format('%I.%I', r[1], r[2]);
  83. END;
  84. $$;
  85. </sql-statement>
  86. -stdin-:<main>: Error: Parse Sql
  87. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 263
  88. DO $$
  89. ^
  90. <sql-statement>
  91. SELECT parse_ident('foo.boo');
  92. </sql-statement>
  93. -stdin-:<main>: Error: Type annotation
  94. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  95. SELECT parse_ident('foo.boo');
  96. ^
  97. -stdin-:<main>:1:8: Error: At function: PgCall
  98. SELECT parse_ident('foo.boo');
  99. ^
  100. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  101. SELECT parse_ident('foo.boo');
  102. ^
  103. <sql-statement>
  104. SELECT parse_ident('foo.boo[]'); -- should fail
  105. </sql-statement>
  106. -stdin-:<main>: Error: Type annotation
  107. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  108. SELECT parse_ident('foo.boo[]'); -- should fail
  109. ^
  110. -stdin-:<main>:1:8: Error: At function: PgCall
  111. SELECT parse_ident('foo.boo[]'); -- should fail
  112. ^
  113. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  114. SELECT parse_ident('foo.boo[]'); -- should fail
  115. ^
  116. <sql-statement>
  117. SELECT parse_ident('foo.boo[]', strict => false); -- ok
  118. </sql-statement>
  119. -stdin-:<main>: Error: Parse Sql
  120. -stdin-:<main>:1:8: Error: alternative is not implemented yet : 118
  121. SELECT parse_ident('foo.boo[]', strict => false); -- ok
  122. ^
  123. <sql-statement>
  124. -- should fail
  125. SELECT parse_ident(' ');
  126. </sql-statement>
  127. -stdin-:<main>: Error: Type annotation
  128. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  129. -- should fail
  130. ^
  131. -stdin-:<main>:2:8: Error: At function: PgCall
  132. SELECT parse_ident(' ');
  133. ^
  134. -stdin-:<main>:2:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  135. SELECT parse_ident(' ');
  136. ^
  137. <sql-statement>
  138. SELECT parse_ident(' .aaa');
  139. </sql-statement>
  140. -stdin-:<main>: Error: Type annotation
  141. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  142. SELECT parse_ident(' .aaa');
  143. ^
  144. -stdin-:<main>:1:8: Error: At function: PgCall
  145. SELECT parse_ident(' .aaa');
  146. ^
  147. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  148. SELECT parse_ident(' .aaa');
  149. ^
  150. <sql-statement>
  151. SELECT parse_ident(' aaa . ');
  152. </sql-statement>
  153. -stdin-:<main>: Error: Type annotation
  154. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  155. SELECT parse_ident(' aaa . ');
  156. ^
  157. -stdin-:<main>:1:8: Error: At function: PgCall
  158. SELECT parse_ident(' aaa . ');
  159. ^
  160. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  161. SELECT parse_ident(' aaa . ');
  162. ^
  163. <sql-statement>
  164. SELECT parse_ident('aaa.a%b');
  165. </sql-statement>
  166. -stdin-:<main>: Error: Type annotation
  167. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  168. SELECT parse_ident('aaa.a%b');
  169. ^
  170. -stdin-:<main>:1:8: Error: At function: PgCall
  171. SELECT parse_ident('aaa.a%b');
  172. ^
  173. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  174. SELECT parse_ident('aaa.a%b');
  175. ^
  176. <sql-statement>
  177. SELECT parse_ident(E'X\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
  178. </sql-statement>
  179. -stdin-:<main>: Error: Type annotation
  180. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  181. SELECT parse_ident(E'X\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
  182. ^
  183. -stdin-:<main>:1:8: Error: At function: PgCall
  184. SELECT parse_ident(E'X\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
  185. ^
  186. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  187. SELECT parse_ident(E'X\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
  188. ^
  189. <sql-statement>
  190. SELECT length(a[1]), length(a[2]) from parse_ident('"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy') as a ;
  191. </sql-statement>
  192. -stdin-:<main>: Error: Parse Sql
  193. -stdin-:<main>:1:8: Error: alternative is not implemented yet : 360
  194. SELECT length(a[1]), length(a[2]) from parse_ident('"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy') as a ;
  195. ^
  196. <sql-statement>
  197. SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"');
  198. </sql-statement>
  199. -stdin-:<main>: Error: Type annotation
  200. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  201. SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"');
  202. ^
  203. -stdin-:<main>:1:8: Error: At function: PgCall
  204. SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"');
  205. ^
  206. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (text)
  207. SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"');
  208. ^
  209. <sql-statement>
  210. SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[];
  211. </sql-statement>
  212. -stdin-:<main>: Error: Type annotation
  213. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  214. SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[];
  215. ^
  216. -stdin-:<main>:1:91: Error: At function: PgCast
  217. SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[];
  218. ^
  219. -stdin-:<main>:1:8: Error: At function: PgCall
  220. SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[];
  221. ^
  222. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (text)
  223. SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[];
  224. ^
  225. <sql-statement>
  226. SELECT parse_ident(E'"c".X XXXX\002XXXXXX');
  227. </sql-statement>
  228. -stdin-:<main>: Error: Type annotation
  229. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  230. SELECT parse_ident(E'"c".X XXXX\002XXXXXX');
  231. ^
  232. -stdin-:<main>:1:8: Error: At function: PgCall
  233. SELECT parse_ident(E'"c".X XXXX\002XXXXXX');
  234. ^
  235. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  236. SELECT parse_ident(E'"c".X XXXX\002XXXXXX');
  237. ^
  238. <sql-statement>
  239. SELECT parse_ident('1020');
  240. </sql-statement>
  241. -stdin-:<main>: Error: Type annotation
  242. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  243. SELECT parse_ident('1020');
  244. ^
  245. -stdin-:<main>:1:8: Error: At function: PgCall
  246. SELECT parse_ident('1020');
  247. ^
  248. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  249. SELECT parse_ident('1020');
  250. ^
  251. <sql-statement>
  252. SELECT parse_ident('10.20');
  253. </sql-statement>
  254. -stdin-:<main>: Error: Type annotation
  255. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  256. SELECT parse_ident('10.20');
  257. ^
  258. -stdin-:<main>:1:8: Error: At function: PgCall
  259. SELECT parse_ident('10.20');
  260. ^
  261. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  262. SELECT parse_ident('10.20');
  263. ^
  264. <sql-statement>
  265. SELECT parse_ident('.');
  266. </sql-statement>
  267. -stdin-:<main>: Error: Type annotation
  268. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  269. SELECT parse_ident('.');
  270. ^
  271. -stdin-:<main>:1:8: Error: At function: PgCall
  272. SELECT parse_ident('.');
  273. ^
  274. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  275. SELECT parse_ident('.');
  276. ^
  277. <sql-statement>
  278. SELECT parse_ident('.1020');
  279. </sql-statement>
  280. -stdin-:<main>: Error: Type annotation
  281. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  282. SELECT parse_ident('.1020');
  283. ^
  284. -stdin-:<main>:1:8: Error: At function: PgCall
  285. SELECT parse_ident('.1020');
  286. ^
  287. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  288. SELECT parse_ident('.1020');
  289. ^
  290. <sql-statement>
  291. SELECT parse_ident('xxx.1020');
  292. </sql-statement>
  293. -stdin-:<main>: Error: Type annotation
  294. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  295. SELECT parse_ident('xxx.1020');
  296. ^
  297. -stdin-:<main>:1:8: Error: At function: PgCall
  298. SELECT parse_ident('xxx.1020');
  299. ^
  300. -stdin-:<main>:1:8: Error: Unable to find an overload for proc parse_ident with given argument types: (unknown)
  301. SELECT parse_ident('xxx.1020');
  302. ^