xml.err.1 78 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054
  1. Registering pre-existing tables
  2. emp
  3. <sql-statement>
  4. CREATE TABLE xmltest (
  5. id int,
  6. data xml
  7. );
  8. </sql-statement>
  9. <sql-statement>
  10. INSERT INTO xmltest VALUES (1, '<value>one</value>');
  11. </sql-statement>
  12. <sql-statement>
  13. INSERT INTO xmltest VALUES (2, '<value>two</value>');
  14. </sql-statement>
  15. <sql-statement>
  16. INSERT INTO xmltest VALUES (3, '<wrong');
  17. </sql-statement>
  18. -stdin-:<main>: Fatal: Execution
  19. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  20. INSERT INTO xmltest VALUES (3, '<wrong');
  21. ^
  22. -stdin-:<main>:1:1: Fatal: ERROR: invalid XML document
  23. DETAIL: line 1: Couldn't find end of Start Tag wrong line 1
  24. <wrong
  25. ^
  26. INSERT INTO xmltest VALUES (3, '<wrong');
  27. ^
  28. <sql-statement>
  29. SELECT * FROM xmltest;
  30. </sql-statement>
  31. <sql-statement>
  32. SELECT xmlcomment('test');
  33. </sql-statement>
  34. <sql-statement>
  35. SELECT xmlcomment('-test');
  36. </sql-statement>
  37. <sql-statement>
  38. SELECT xmlcomment('test-');
  39. </sql-statement>
  40. -stdin-:<main>: Fatal: Execution
  41. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  42. SELECT xmlcomment('test-');
  43. ^
  44. -stdin-:<main>:1:1: Fatal: ERROR: invalid XML comment
  45. SELECT xmlcomment('test-');
  46. ^
  47. <sql-statement>
  48. SELECT xmlcomment('--test');
  49. </sql-statement>
  50. -stdin-:<main>: Fatal: Execution
  51. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  52. SELECT xmlcomment('--test');
  53. ^
  54. -stdin-:<main>:1:1: Fatal: ERROR: invalid XML comment
  55. SELECT xmlcomment('--test');
  56. ^
  57. <sql-statement>
  58. SELECT xmlcomment('te st');
  59. </sql-statement>
  60. <sql-statement>
  61. SELECT xmlconcat(xmlcomment('hello'),
  62. xmlelement(NAME qux, 'foo'),
  63. xmlcomment('world'));
  64. </sql-statement>
  65. -stdin-:<main>: Error: Parse Sql
  66. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  67. SELECT xmlconcat(xmlcomment('hello'),
  68. ^
  69. <sql-statement>
  70. SELECT xmlconcat('hello', 'you');
  71. </sql-statement>
  72. -stdin-:<main>: Error: Parse Sql
  73. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  74. SELECT xmlconcat('hello', 'you');
  75. ^
  76. <sql-statement>
  77. SELECT xmlconcat(1, 2);
  78. </sql-statement>
  79. -stdin-:<main>: Error: Parse Sql
  80. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  81. SELECT xmlconcat(1, 2);
  82. ^
  83. <sql-statement>
  84. SELECT xmlconcat('bad', '<syntax');
  85. </sql-statement>
  86. -stdin-:<main>: Error: Parse Sql
  87. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  88. SELECT xmlconcat('bad', '<syntax');
  89. ^
  90. <sql-statement>
  91. SELECT xmlconcat('<foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');
  92. </sql-statement>
  93. -stdin-:<main>: Error: Parse Sql
  94. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  95. SELECT xmlconcat('<foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');
  96. ^
  97. <sql-statement>
  98. SELECT xmlconcat('<?xml version="1.1"?><foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');
  99. </sql-statement>
  100. -stdin-:<main>: Error: Parse Sql
  101. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  102. SELECT xmlconcat('<?xml version="1.1"?><foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');
  103. ^
  104. <sql-statement>
  105. SELECT xmlconcat(NULL);
  106. </sql-statement>
  107. -stdin-:<main>: Error: Parse Sql
  108. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  109. SELECT xmlconcat(NULL);
  110. ^
  111. <sql-statement>
  112. SELECT xmlconcat(NULL, NULL);
  113. </sql-statement>
  114. -stdin-:<main>: Error: Parse Sql
  115. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  116. SELECT xmlconcat(NULL, NULL);
  117. ^
  118. <sql-statement>
  119. SELECT xmlelement(name element,
  120. xmlattributes (1 as one, 'deuce' as two),
  121. 'content');
  122. </sql-statement>
  123. -stdin-:<main>: Error: Parse Sql
  124. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  125. SELECT xmlelement(name element,
  126. ^
  127. <sql-statement>
  128. SELECT xmlelement(name element,
  129. xmlattributes ('unnamed and wrong'));
  130. </sql-statement>
  131. -stdin-:<main>: Error: Parse Sql
  132. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  133. SELECT xmlelement(name element,
  134. ^
  135. <sql-statement>
  136. SELECT xmlelement(name element, xmlelement(name nested, 'stuff'));
  137. </sql-statement>
  138. -stdin-:<main>: Error: Parse Sql
  139. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  140. SELECT xmlelement(name element, xmlelement(name nested, 'stuff'));
  141. ^
  142. <sql-statement>
  143. SELECT xmlelement(name employee, xmlforest(name, age, salary as pay)) FROM emp;
  144. </sql-statement>
  145. -stdin-:<main>: Error: Parse Sql
  146. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  147. SELECT xmlelement(name employee, xmlforest(name, age, salary as pay)) FROM emp;
  148. ^
  149. <sql-statement>
  150. SELECT xmlelement(name duplicate, xmlattributes(1 as a, 2 as b, 3 as a));
  151. </sql-statement>
  152. -stdin-:<main>: Error: Parse Sql
  153. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  154. SELECT xmlelement(name duplicate, xmlattributes(1 as a, 2 as b, 3 as a));
  155. ^
  156. <sql-statement>
  157. SELECT xmlelement(name num, 37);
  158. </sql-statement>
  159. -stdin-:<main>: Error: Parse Sql
  160. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  161. SELECT xmlelement(name num, 37);
  162. ^
  163. <sql-statement>
  164. SELECT xmlelement(name foo, text 'bar');
  165. </sql-statement>
  166. -stdin-:<main>: Error: Parse Sql
  167. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  168. SELECT xmlelement(name foo, text 'bar');
  169. ^
  170. <sql-statement>
  171. SELECT xmlelement(name foo, xml 'bar');
  172. </sql-statement>
  173. -stdin-:<main>: Error: Parse Sql
  174. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  175. SELECT xmlelement(name foo, xml 'bar');
  176. ^
  177. <sql-statement>
  178. SELECT xmlelement(name foo, text 'b<a/>r');
  179. </sql-statement>
  180. -stdin-:<main>: Error: Parse Sql
  181. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  182. SELECT xmlelement(name foo, text 'b<a/>r');
  183. ^
  184. <sql-statement>
  185. SELECT xmlelement(name foo, xml 'b<a/>r');
  186. </sql-statement>
  187. -stdin-:<main>: Error: Parse Sql
  188. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  189. SELECT xmlelement(name foo, xml 'b<a/>r');
  190. ^
  191. <sql-statement>
  192. SELECT xmlelement(name foo, array[1, 2, 3]);
  193. </sql-statement>
  194. -stdin-:<main>: Error: Parse Sql
  195. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  196. SELECT xmlelement(name foo, array[1, 2, 3]);
  197. ^
  198. <sql-statement>
  199. SET xmlbinary TO base64;
  200. </sql-statement>
  201. -stdin-:<main>: Error: Parse Sql
  202. -stdin-:<main>:1:1: Error: VariableSetStmt, not supported name: xmlbinary
  203. SET xmlbinary TO base64;
  204. ^
  205. <sql-statement>
  206. SELECT xmlelement(name foo, bytea 'bar');
  207. </sql-statement>
  208. -stdin-:<main>: Error: Parse Sql
  209. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  210. SELECT xmlelement(name foo, bytea 'bar');
  211. ^
  212. <sql-statement>
  213. SET xmlbinary TO hex;
  214. </sql-statement>
  215. -stdin-:<main>: Error: Parse Sql
  216. -stdin-:<main>:1:1: Error: VariableSetStmt, not supported name: xmlbinary
  217. SET xmlbinary TO hex;
  218. ^
  219. <sql-statement>
  220. SELECT xmlelement(name foo, bytea 'bar');
  221. </sql-statement>
  222. -stdin-:<main>: Error: Parse Sql
  223. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  224. SELECT xmlelement(name foo, bytea 'bar');
  225. ^
  226. <sql-statement>
  227. SELECT xmlelement(name foo, xmlattributes(true as bar));
  228. </sql-statement>
  229. -stdin-:<main>: Error: Parse Sql
  230. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  231. SELECT xmlelement(name foo, xmlattributes(true as bar));
  232. ^
  233. <sql-statement>
  234. SELECT xmlelement(name foo, xmlattributes('2009-04-09 00:24:37'::timestamp as bar));
  235. </sql-statement>
  236. -stdin-:<main>: Error: Parse Sql
  237. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  238. SELECT xmlelement(name foo, xmlattributes('2009-04-09 00:24:37'::timestamp as bar));
  239. ^
  240. <sql-statement>
  241. SELECT xmlelement(name foo, xmlattributes('infinity'::timestamp as bar));
  242. </sql-statement>
  243. -stdin-:<main>: Error: Parse Sql
  244. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  245. SELECT xmlelement(name foo, xmlattributes('infinity'::timestamp as bar));
  246. ^
  247. <sql-statement>
  248. SELECT xmlelement(name foo, xmlattributes('<>&"''' as funny, xml 'b<a/>r' as funnier));
  249. </sql-statement>
  250. -stdin-:<main>: Error: Parse Sql
  251. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  252. SELECT xmlelement(name foo, xmlattributes('<>&"''' as funny, xml 'b<a/>r' as funnier));
  253. ^
  254. <sql-statement>
  255. SELECT xmlparse(content '');
  256. </sql-statement>
  257. -stdin-:<main>: Error: Parse Sql
  258. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  259. SELECT xmlparse(content '');
  260. ^
  261. <sql-statement>
  262. SELECT xmlparse(content ' ');
  263. </sql-statement>
  264. -stdin-:<main>: Error: Parse Sql
  265. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  266. SELECT xmlparse(content ' ');
  267. ^
  268. <sql-statement>
  269. SELECT xmlparse(content 'abc');
  270. </sql-statement>
  271. -stdin-:<main>: Error: Parse Sql
  272. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  273. SELECT xmlparse(content 'abc');
  274. ^
  275. <sql-statement>
  276. SELECT xmlparse(content '<abc>x</abc>');
  277. </sql-statement>
  278. -stdin-:<main>: Error: Parse Sql
  279. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  280. SELECT xmlparse(content '<abc>x</abc>');
  281. ^
  282. <sql-statement>
  283. SELECT xmlparse(content '<invalidentity>&</invalidentity>');
  284. </sql-statement>
  285. -stdin-:<main>: Error: Parse Sql
  286. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  287. SELECT xmlparse(content '<invalidentity>&</invalidentity>');
  288. ^
  289. <sql-statement>
  290. SELECT xmlparse(content '<undefinedentity>&idontexist;</undefinedentity>');
  291. </sql-statement>
  292. -stdin-:<main>: Error: Parse Sql
  293. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  294. SELECT xmlparse(content '<undefinedentity>&idontexist;</undefinedentity>');
  295. ^
  296. <sql-statement>
  297. SELECT xmlparse(content '<invalidns xmlns=''&lt;''/>');
  298. </sql-statement>
  299. -stdin-:<main>: Error: Parse Sql
  300. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  301. SELECT xmlparse(content '<invalidns xmlns=''&lt;''/>');
  302. ^
  303. <sql-statement>
  304. SELECT xmlparse(content '<relativens xmlns=''relative''/>');
  305. </sql-statement>
  306. -stdin-:<main>: Error: Parse Sql
  307. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  308. SELECT xmlparse(content '<relativens xmlns=''relative''/>');
  309. ^
  310. <sql-statement>
  311. SELECT xmlparse(content '<twoerrors>&idontexist;</unbalanced>');
  312. </sql-statement>
  313. -stdin-:<main>: Error: Parse Sql
  314. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  315. SELECT xmlparse(content '<twoerrors>&idontexist;</unbalanced>');
  316. ^
  317. <sql-statement>
  318. SELECT xmlparse(content '<nosuchprefix:tag/>');
  319. </sql-statement>
  320. -stdin-:<main>: Error: Parse Sql
  321. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  322. SELECT xmlparse(content '<nosuchprefix:tag/>');
  323. ^
  324. <sql-statement>
  325. SELECT xmlparse(document ' ');
  326. </sql-statement>
  327. -stdin-:<main>: Error: Parse Sql
  328. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  329. SELECT xmlparse(document ' ');
  330. ^
  331. <sql-statement>
  332. SELECT xmlparse(document 'abc');
  333. </sql-statement>
  334. -stdin-:<main>: Error: Parse Sql
  335. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  336. SELECT xmlparse(document 'abc');
  337. ^
  338. <sql-statement>
  339. SELECT xmlparse(document '<abc>x</abc>');
  340. </sql-statement>
  341. -stdin-:<main>: Error: Parse Sql
  342. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  343. SELECT xmlparse(document '<abc>x</abc>');
  344. ^
  345. <sql-statement>
  346. SELECT xmlparse(document '<invalidentity>&</abc>');
  347. </sql-statement>
  348. -stdin-:<main>: Error: Parse Sql
  349. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  350. SELECT xmlparse(document '<invalidentity>&</abc>');
  351. ^
  352. <sql-statement>
  353. SELECT xmlparse(document '<undefinedentity>&idontexist;</abc>');
  354. </sql-statement>
  355. -stdin-:<main>: Error: Parse Sql
  356. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  357. SELECT xmlparse(document '<undefinedentity>&idontexist;</abc>');
  358. ^
  359. <sql-statement>
  360. SELECT xmlparse(document '<invalidns xmlns=''&lt;''/>');
  361. </sql-statement>
  362. -stdin-:<main>: Error: Parse Sql
  363. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  364. SELECT xmlparse(document '<invalidns xmlns=''&lt;''/>');
  365. ^
  366. <sql-statement>
  367. SELECT xmlparse(document '<relativens xmlns=''relative''/>');
  368. </sql-statement>
  369. -stdin-:<main>: Error: Parse Sql
  370. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  371. SELECT xmlparse(document '<relativens xmlns=''relative''/>');
  372. ^
  373. <sql-statement>
  374. SELECT xmlparse(document '<twoerrors>&idontexist;</unbalanced>');
  375. </sql-statement>
  376. -stdin-:<main>: Error: Parse Sql
  377. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  378. SELECT xmlparse(document '<twoerrors>&idontexist;</unbalanced>');
  379. ^
  380. <sql-statement>
  381. SELECT xmlparse(document '<nosuchprefix:tag/>');
  382. </sql-statement>
  383. -stdin-:<main>: Error: Parse Sql
  384. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  385. SELECT xmlparse(document '<nosuchprefix:tag/>');
  386. ^
  387. <sql-statement>
  388. SELECT xmlpi(name foo);
  389. </sql-statement>
  390. -stdin-:<main>: Error: Parse Sql
  391. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  392. SELECT xmlpi(name foo);
  393. ^
  394. <sql-statement>
  395. SELECT xmlpi(name xml);
  396. </sql-statement>
  397. -stdin-:<main>: Error: Parse Sql
  398. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  399. SELECT xmlpi(name xml);
  400. ^
  401. <sql-statement>
  402. SELECT xmlpi(name xmlstuff);
  403. </sql-statement>
  404. -stdin-:<main>: Error: Parse Sql
  405. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  406. SELECT xmlpi(name xmlstuff);
  407. ^
  408. <sql-statement>
  409. SELECT xmlpi(name foo, 'bar');
  410. </sql-statement>
  411. -stdin-:<main>: Error: Parse Sql
  412. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  413. SELECT xmlpi(name foo, 'bar');
  414. ^
  415. <sql-statement>
  416. SELECT xmlpi(name foo, 'in?>valid');
  417. </sql-statement>
  418. -stdin-:<main>: Error: Parse Sql
  419. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  420. SELECT xmlpi(name foo, 'in?>valid');
  421. ^
  422. <sql-statement>
  423. SELECT xmlpi(name foo, null);
  424. </sql-statement>
  425. -stdin-:<main>: Error: Parse Sql
  426. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  427. SELECT xmlpi(name foo, null);
  428. ^
  429. <sql-statement>
  430. SELECT xmlpi(name xml, null);
  431. </sql-statement>
  432. -stdin-:<main>: Error: Parse Sql
  433. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  434. SELECT xmlpi(name xml, null);
  435. ^
  436. <sql-statement>
  437. SELECT xmlpi(name xmlstuff, null);
  438. </sql-statement>
  439. -stdin-:<main>: Error: Parse Sql
  440. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  441. SELECT xmlpi(name xmlstuff, null);
  442. ^
  443. <sql-statement>
  444. SELECT xmlpi(name "xml-stylesheet", 'href="mystyle.css" type="text/css"');
  445. </sql-statement>
  446. -stdin-:<main>: Error: Parse Sql
  447. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  448. SELECT xmlpi(name "xml-stylesheet", 'href="mystyle.css" type="text/css"');
  449. ^
  450. <sql-statement>
  451. SELECT xmlpi(name foo, ' bar');
  452. </sql-statement>
  453. -stdin-:<main>: Error: Parse Sql
  454. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  455. SELECT xmlpi(name foo, ' bar');
  456. ^
  457. <sql-statement>
  458. SELECT xmlroot(xml '<foo/>', version no value, standalone no value);
  459. </sql-statement>
  460. -stdin-:<main>: Error: Parse Sql
  461. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  462. SELECT xmlroot(xml '<foo/>', version no value, standalone no value);
  463. ^
  464. <sql-statement>
  465. SELECT xmlroot(xml '<foo/>', version '2.0');
  466. </sql-statement>
  467. -stdin-:<main>: Error: Parse Sql
  468. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  469. SELECT xmlroot(xml '<foo/>', version '2.0');
  470. ^
  471. <sql-statement>
  472. SELECT xmlroot(xml '<foo/>', version no value, standalone yes);
  473. </sql-statement>
  474. -stdin-:<main>: Error: Parse Sql
  475. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  476. SELECT xmlroot(xml '<foo/>', version no value, standalone yes);
  477. ^
  478. <sql-statement>
  479. SELECT xmlroot(xml '<?xml version="1.1"?><foo/>', version no value, standalone yes);
  480. </sql-statement>
  481. -stdin-:<main>: Error: Parse Sql
  482. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  483. SELECT xmlroot(xml '<?xml version="1.1"?><foo/>', version no value, standalone yes);
  484. ^
  485. <sql-statement>
  486. SELECT xmlroot(xmlroot(xml '<foo/>', version '1.0'), version '1.1', standalone no);
  487. </sql-statement>
  488. -stdin-:<main>: Error: Parse Sql
  489. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  490. SELECT xmlroot(xmlroot(xml '<foo/>', version '1.0'), version '1.1', standalone no);
  491. ^
  492. <sql-statement>
  493. SELECT xmlroot('<?xml version="1.1" standalone="yes"?><foo/>', version no value, standalone no);
  494. </sql-statement>
  495. -stdin-:<main>: Error: Parse Sql
  496. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  497. SELECT xmlroot('<?xml version="1.1" standalone="yes"?><foo/>', version no value, standalone no);
  498. ^
  499. <sql-statement>
  500. SELECT xmlroot('<?xml version="1.1" standalone="yes"?><foo/>', version no value, standalone no value);
  501. </sql-statement>
  502. -stdin-:<main>: Error: Parse Sql
  503. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  504. SELECT xmlroot('<?xml version="1.1" standalone="yes"?><foo/>', version no value, standalone no value);
  505. ^
  506. <sql-statement>
  507. SELECT xmlroot('<?xml version="1.1" standalone="yes"?><foo/>', version no value);
  508. </sql-statement>
  509. -stdin-:<main>: Error: Parse Sql
  510. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  511. SELECT xmlroot('<?xml version="1.1" standalone="yes"?><foo/>', version no value);
  512. ^
  513. <sql-statement>
  514. SELECT xmlroot (
  515. xmlelement (
  516. name gazonk,
  517. xmlattributes (
  518. 'val' AS name,
  519. 1 + 1 AS num
  520. ),
  521. xmlelement (
  522. NAME qux,
  523. 'foo'
  524. )
  525. ),
  526. version '1.0',
  527. standalone yes
  528. );
  529. </sql-statement>
  530. -stdin-:<main>: Error: Parse Sql
  531. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  532. SELECT xmlroot (
  533. ^
  534. <sql-statement>
  535. SELECT xmlserialize(content data as character varying(20)) FROM xmltest;
  536. </sql-statement>
  537. -stdin-:<main>: Error: Parse Sql
  538. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 393
  539. SELECT xmlserialize(content data as character varying(20)) FROM xmltest;
  540. ^
  541. <sql-statement>
  542. SELECT xmlserialize(content 'good' as char(10));
  543. </sql-statement>
  544. -stdin-:<main>: Error: Parse Sql
  545. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 393
  546. SELECT xmlserialize(content 'good' as char(10));
  547. ^
  548. <sql-statement>
  549. SELECT xmlserialize(document 'bad' as text);
  550. </sql-statement>
  551. -stdin-:<main>: Error: Parse Sql
  552. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 393
  553. SELECT xmlserialize(document 'bad' as text);
  554. ^
  555. <sql-statement>
  556. SELECT xml '<foo>bar</foo>' IS DOCUMENT;
  557. </sql-statement>
  558. -stdin-:<main>: Error: Parse Sql
  559. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  560. SELECT xml '<foo>bar</foo>' IS DOCUMENT;
  561. ^
  562. <sql-statement>
  563. SELECT xml '<foo>bar</foo><bar>foo</bar>' IS DOCUMENT;
  564. </sql-statement>
  565. -stdin-:<main>: Error: Parse Sql
  566. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  567. SELECT xml '<foo>bar</foo><bar>foo</bar>' IS DOCUMENT;
  568. ^
  569. <sql-statement>
  570. SELECT xml '<abc/>' IS NOT DOCUMENT;
  571. </sql-statement>
  572. -stdin-:<main>: Error: Parse Sql
  573. -stdin-:<main>:1:21: Error: alternative is not implemented yet : 143
  574. SELECT xml '<abc/>' IS NOT DOCUMENT;
  575. ^
  576. <sql-statement>
  577. SELECT xml 'abc' IS NOT DOCUMENT;
  578. </sql-statement>
  579. -stdin-:<main>: Error: Parse Sql
  580. -stdin-:<main>:1:18: Error: alternative is not implemented yet : 143
  581. SELECT xml 'abc' IS NOT DOCUMENT;
  582. ^
  583. <sql-statement>
  584. SELECT '<>' IS NOT DOCUMENT;
  585. </sql-statement>
  586. -stdin-:<main>: Error: Parse Sql
  587. -stdin-:<main>:1:13: Error: alternative is not implemented yet : 143
  588. SELECT '<>' IS NOT DOCUMENT;
  589. ^
  590. <sql-statement>
  591. SELECT xmlagg(data) FROM xmltest;
  592. </sql-statement>
  593. -stdin-:<main>: Fatal: Execution
  594. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  595. SELECT xmlagg(data) FROM xmltest;
  596. ^
  597. -stdin-:<main>:1:1: Fatal: ERROR: invalid XML document
  598. DETAIL: line 1: Extra content at the end of the document
  599. <value>one</value><value>two</value>
  600. ^
  601. SELECT xmlagg(data) FROM xmltest;
  602. ^
  603. <sql-statement>
  604. SELECT xmlagg(data) FROM xmltest WHERE id > 10;
  605. </sql-statement>
  606. <sql-statement>
  607. SELECT xmlelement(name employees, xmlagg(xmlelement(name name, name))) FROM emp;
  608. </sql-statement>
  609. -stdin-:<main>: Error: Parse Sql
  610. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  611. SELECT xmlelement(name employees, xmlagg(xmlelement(name name, name))) FROM emp;
  612. ^
  613. <sql-statement>
  614. -- Check mapping SQL identifier to XML name
  615. SELECT xmlpi(name ":::_xml_abc135.%-&_");
  616. </sql-statement>
  617. -stdin-:<main>: Error: Parse Sql
  618. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  619. -- Check mapping SQL identifier to XML name
  620. ^
  621. <sql-statement>
  622. SELECT xmlpi(name "123");
  623. </sql-statement>
  624. -stdin-:<main>: Error: Parse Sql
  625. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  626. SELECT xmlpi(name "123");
  627. ^
  628. <sql-statement>
  629. PREPARE foo (xml) AS SELECT xmlconcat('<foo/>', $1);
  630. </sql-statement>
  631. -stdin-:<main>: Error: Parse Sql
  632. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 301
  633. PREPARE foo (xml) AS SELECT xmlconcat('<foo/>', $1);
  634. ^
  635. <sql-statement>
  636. SET XML OPTION DOCUMENT;
  637. </sql-statement>
  638. <sql-statement>
  639. EXECUTE foo ('<bar/>');
  640. </sql-statement>
  641. -stdin-:<main>: Error: Parse Sql
  642. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 302
  643. EXECUTE foo ('<bar/>');
  644. ^
  645. <sql-statement>
  646. EXECUTE foo ('bad');
  647. </sql-statement>
  648. -stdin-:<main>: Error: Parse Sql
  649. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 302
  650. EXECUTE foo ('bad');
  651. ^
  652. <sql-statement>
  653. SELECT xml '<!DOCTYPE a><a/><b/>';
  654. </sql-statement>
  655. -stdin-:<main>: Fatal: Execution
  656. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  657. SELECT xml '<!DOCTYPE a><a/><b/>';
  658. ^
  659. -stdin-:<main>:1:1: Fatal: ERROR: invalid XML document
  660. DETAIL: line 1: Extra content at the end of the document
  661. <!DOCTYPE a><a/><b/>
  662. ^
  663. SELECT xml '<!DOCTYPE a><a/><b/>';
  664. ^
  665. <sql-statement>
  666. SET XML OPTION CONTENT;
  667. </sql-statement>
  668. <sql-statement>
  669. EXECUTE foo ('<bar/>');
  670. </sql-statement>
  671. -stdin-:<main>: Error: Parse Sql
  672. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 302
  673. EXECUTE foo ('<bar/>');
  674. ^
  675. <sql-statement>
  676. EXECUTE foo ('good');
  677. </sql-statement>
  678. -stdin-:<main>: Error: Parse Sql
  679. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 302
  680. EXECUTE foo ('good');
  681. ^
  682. <sql-statement>
  683. SELECT xml '<!-- in SQL:2006+ a doc is content too--> <?y z?> <!DOCTYPE a><a/>';
  684. </sql-statement>
  685. <sql-statement>
  686. SELECT xml '<?xml version="1.0"?> <!-- hi--> <!DOCTYPE a><a/>';
  687. </sql-statement>
  688. <sql-statement>
  689. SELECT xml '<!DOCTYPE a><a/>';
  690. </sql-statement>
  691. <sql-statement>
  692. SELECT xml '<!-- hi--> oops <!DOCTYPE a><a/>';
  693. </sql-statement>
  694. -stdin-:<main>: Fatal: Execution
  695. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  696. SELECT xml '<!-- hi--> oops <!DOCTYPE a><a/>';
  697. ^
  698. -stdin-:<main>:1:1: Fatal: ERROR: invalid XML document
  699. DETAIL: line 1: Start tag expected, '<' not found
  700. <!-- hi--> oops <!DOCTYPE a><a/>
  701. ^
  702. SELECT xml '<!-- hi--> oops <!DOCTYPE a><a/>';
  703. ^
  704. <sql-statement>
  705. SELECT xml '<!-- hi--> <oops/> <!DOCTYPE a><a/>';
  706. </sql-statement>
  707. -stdin-:<main>: Fatal: Execution
  708. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  709. SELECT xml '<!-- hi--> <oops/> <!DOCTYPE a><a/>';
  710. ^
  711. -stdin-:<main>:1:1: Fatal: ERROR: invalid XML document
  712. DETAIL: line 1: Extra content at the end of the document
  713. <!-- hi--> <oops/> <!DOCTYPE a><a/>
  714. ^
  715. SELECT xml '<!-- hi--> <oops/> <!DOCTYPE a><a/>';
  716. ^
  717. <sql-statement>
  718. SELECT xml '<!DOCTYPE a><a/><b/>';
  719. </sql-statement>
  720. -stdin-:<main>: Fatal: Execution
  721. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  722. SELECT xml '<!DOCTYPE a><a/><b/>';
  723. ^
  724. -stdin-:<main>:1:1: Fatal: ERROR: invalid XML document
  725. DETAIL: line 1: Extra content at the end of the document
  726. <!DOCTYPE a><a/><b/>
  727. ^
  728. SELECT xml '<!DOCTYPE a><a/><b/>';
  729. ^
  730. <sql-statement>
  731. -- Test backwards parsing
  732. CREATE VIEW xmlview1 AS SELECT xmlcomment('test');
  733. </sql-statement>
  734. -stdin-:<main>: Error: Parse Sql
  735. -stdin-:<main>:1:1: Error: expected at least one target column
  736. -- Test backwards parsing
  737. ^
  738. <sql-statement>
  739. CREATE VIEW xmlview2 AS SELECT xmlconcat('hello', 'you');
  740. </sql-statement>
  741. -stdin-:<main>: Error: Parse Sql
  742. -stdin-:<main>:1:1: Error: expected at least one target column
  743. CREATE VIEW xmlview2 AS SELECT xmlconcat('hello', 'you');
  744. ^
  745. <sql-statement>
  746. CREATE VIEW xmlview3 AS SELECT xmlelement(name element, xmlattributes (1 as ":one:", 'deuce' as two), 'content&');
  747. </sql-statement>
  748. -stdin-:<main>: Error: Parse Sql
  749. -stdin-:<main>:1:1: Error: expected at least one target column
  750. CREATE VIEW xmlview3 AS SELECT xmlelement(name element, xmlattributes (1 as ":one:", 'deuce' as two), 'content&');
  751. ^
  752. <sql-statement>
  753. CREATE VIEW xmlview4 AS SELECT xmlelement(name employee, xmlforest(name, age, salary as pay)) FROM emp;
  754. </sql-statement>
  755. -stdin-:<main>: Error: Parse Sql
  756. -stdin-:<main>:1:1: Error: expected at least one target column
  757. CREATE VIEW xmlview4 AS SELECT xmlelement(name employee, xmlforest(name, age, salary as pay)) FROM emp;
  758. ^
  759. <sql-statement>
  760. CREATE VIEW xmlview5 AS SELECT xmlparse(content '<abc>x</abc>');
  761. </sql-statement>
  762. -stdin-:<main>: Error: Parse Sql
  763. -stdin-:<main>:1:1: Error: expected at least one target column
  764. CREATE VIEW xmlview5 AS SELECT xmlparse(content '<abc>x</abc>');
  765. ^
  766. <sql-statement>
  767. CREATE VIEW xmlview6 AS SELECT xmlpi(name foo, 'bar');
  768. </sql-statement>
  769. -stdin-:<main>: Error: Parse Sql
  770. -stdin-:<main>:1:1: Error: expected at least one target column
  771. CREATE VIEW xmlview6 AS SELECT xmlpi(name foo, 'bar');
  772. ^
  773. <sql-statement>
  774. CREATE VIEW xmlview7 AS SELECT xmlroot(xml '<foo/>', version no value, standalone yes);
  775. </sql-statement>
  776. -stdin-:<main>: Error: Parse Sql
  777. -stdin-:<main>:1:1: Error: expected at least one target column
  778. CREATE VIEW xmlview7 AS SELECT xmlroot(xml '<foo/>', version no value, standalone yes);
  779. ^
  780. <sql-statement>
  781. CREATE VIEW xmlview8 AS SELECT xmlserialize(content 'good' as char(10));
  782. </sql-statement>
  783. -stdin-:<main>: Error: Parse Sql
  784. -stdin-:<main>:1:1: Error: expected at least one target column
  785. CREATE VIEW xmlview8 AS SELECT xmlserialize(content 'good' as char(10));
  786. ^
  787. <sql-statement>
  788. CREATE VIEW xmlview9 AS SELECT xmlserialize(content 'good' as text);
  789. </sql-statement>
  790. -stdin-:<main>: Error: Parse Sql
  791. -stdin-:<main>:1:1: Error: expected at least one target column
  792. CREATE VIEW xmlview9 AS SELECT xmlserialize(content 'good' as text);
  793. ^
  794. <sql-statement>
  795. SELECT table_name, view_definition FROM information_schema.views
  796. WHERE table_name LIKE 'xmlview%' ORDER BY 1;
  797. </sql-statement>
  798. <sql-statement>
  799. -- Text XPath expressions evaluation
  800. SELECT xpath('/value', data) FROM xmltest;
  801. </sql-statement>
  802. -stdin-:<main>: Error: Type annotation
  803. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  804. -- Text XPath expressions evaluation
  805. ^
  806. -stdin-:<main>:2:8: Error: At function: PgCall
  807. SELECT xpath('/value', data) FROM xmltest;
  808. ^
  809. -stdin-:<main>:2:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,xml)
  810. SELECT xpath('/value', data) FROM xmltest;
  811. ^
  812. <sql-statement>
  813. SELECT xpath(NULL, NULL) IS NULL FROM xmltest;
  814. </sql-statement>
  815. -stdin-:<main>: Error: Type annotation
  816. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  817. SELECT xpath(NULL, NULL) IS NULL FROM xmltest;
  818. ^
  819. -stdin-:<main>:1:26: Error: At function: ToPg, At function: Not, At function: Exists
  820. SELECT xpath(NULL, NULL) IS NULL FROM xmltest;
  821. ^
  822. -stdin-:<main>:1:8: Error: At function: PgCall
  823. SELECT xpath(NULL, NULL) IS NULL FROM xmltest;
  824. ^
  825. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  826. SELECT xpath(NULL, NULL) IS NULL FROM xmltest;
  827. ^
  828. <sql-statement>
  829. SELECT xpath('', '<!-- error -->');
  830. </sql-statement>
  831. -stdin-:<main>: Error: Type annotation
  832. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  833. SELECT xpath('', '<!-- error -->');
  834. ^
  835. -stdin-:<main>:1:8: Error: At function: PgCall
  836. SELECT xpath('', '<!-- error -->');
  837. ^
  838. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  839. SELECT xpath('', '<!-- error -->');
  840. ^
  841. <sql-statement>
  842. SELECT xpath('//text()', '<local:data xmlns:local="http://127.0.0.1"><local:piece id="1">number one</local:piece><local:piece id="2" /></local:data>');
  843. </sql-statement>
  844. -stdin-:<main>: Error: Type annotation
  845. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  846. SELECT xpath('//text()', '<local:data xmlns:local="http://127.0.0.1"><local:piece id="1">number one</local:piece><local:piece id="2" /></local:data>');
  847. ^
  848. -stdin-:<main>:1:8: Error: At function: PgCall
  849. SELECT xpath('//text()', '<local:data xmlns:local="http://127.0.0.1"><local:piece id="1">number one</local:piece><local:piece id="2" /></local:data>');
  850. ^
  851. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  852. SELECT xpath('//text()', '<local:data xmlns:local="http://127.0.0.1"><local:piece id="1">number one</local:piece><local:piece id="2" /></local:data>');
  853. ^
  854. <sql-statement>
  855. SELECT xpath('//loc:piece/@id', '<local:data xmlns:local="http://127.0.0.1"><local:piece id="1">number one</local:piece><local:piece id="2" /></local:data>', ARRAY[ARRAY['loc', 'http://127.0.0.1']]);
  856. </sql-statement>
  857. <sql-statement>
  858. SELECT xpath('//loc:piece', '<local:data xmlns:local="http://127.0.0.1"><local:piece id="1">number one</local:piece><local:piece id="2" /></local:data>', ARRAY[ARRAY['loc', 'http://127.0.0.1']]);
  859. </sql-statement>
  860. <sql-statement>
  861. SELECT xpath('//loc:piece', '<local:data xmlns:local="http://127.0.0.1" xmlns="http://127.0.0.2"><local:piece id="1"><internal>number one</internal><internal2/></local:piece><local:piece id="2" /></local:data>', ARRAY[ARRAY['loc', 'http://127.0.0.1']]);
  862. </sql-statement>
  863. <sql-statement>
  864. SELECT xpath('//b', '<a>one <b>two</b> three <b>etc</b></a>');
  865. </sql-statement>
  866. -stdin-:<main>: Error: Type annotation
  867. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  868. SELECT xpath('//b', '<a>one <b>two</b> three <b>etc</b></a>');
  869. ^
  870. -stdin-:<main>:1:8: Error: At function: PgCall
  871. SELECT xpath('//b', '<a>one <b>two</b> three <b>etc</b></a>');
  872. ^
  873. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  874. SELECT xpath('//b', '<a>one <b>two</b> three <b>etc</b></a>');
  875. ^
  876. <sql-statement>
  877. SELECT xpath('//text()', '<root>&lt;</root>');
  878. </sql-statement>
  879. -stdin-:<main>: Error: Type annotation
  880. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  881. SELECT xpath('//text()', '<root>&lt;</root>');
  882. ^
  883. -stdin-:<main>:1:8: Error: At function: PgCall
  884. SELECT xpath('//text()', '<root>&lt;</root>');
  885. ^
  886. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  887. SELECT xpath('//text()', '<root>&lt;</root>');
  888. ^
  889. <sql-statement>
  890. SELECT xpath('//@value', '<root value="&lt;"/>');
  891. </sql-statement>
  892. -stdin-:<main>: Error: Type annotation
  893. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  894. SELECT xpath('//@value', '<root value="&lt;"/>');
  895. ^
  896. -stdin-:<main>:1:8: Error: At function: PgCall
  897. SELECT xpath('//@value', '<root value="&lt;"/>');
  898. ^
  899. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  900. SELECT xpath('//@value', '<root value="&lt;"/>');
  901. ^
  902. <sql-statement>
  903. SELECT xpath('''<<invalid>>''', '<root/>');
  904. </sql-statement>
  905. -stdin-:<main>: Error: Type annotation
  906. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  907. SELECT xpath('''<<invalid>>''', '<root/>');
  908. ^
  909. -stdin-:<main>:1:8: Error: At function: PgCall
  910. SELECT xpath('''<<invalid>>''', '<root/>');
  911. ^
  912. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  913. SELECT xpath('''<<invalid>>''', '<root/>');
  914. ^
  915. <sql-statement>
  916. SELECT xpath('count(//*)', '<root><sub/><sub/></root>');
  917. </sql-statement>
  918. -stdin-:<main>: Error: Type annotation
  919. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  920. SELECT xpath('count(//*)', '<root><sub/><sub/></root>');
  921. ^
  922. -stdin-:<main>:1:8: Error: At function: PgCall
  923. SELECT xpath('count(//*)', '<root><sub/><sub/></root>');
  924. ^
  925. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  926. SELECT xpath('count(//*)', '<root><sub/><sub/></root>');
  927. ^
  928. <sql-statement>
  929. SELECT xpath('count(//*)=0', '<root><sub/><sub/></root>');
  930. </sql-statement>
  931. -stdin-:<main>: Error: Type annotation
  932. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  933. SELECT xpath('count(//*)=0', '<root><sub/><sub/></root>');
  934. ^
  935. -stdin-:<main>:1:8: Error: At function: PgCall
  936. SELECT xpath('count(//*)=0', '<root><sub/><sub/></root>');
  937. ^
  938. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  939. SELECT xpath('count(//*)=0', '<root><sub/><sub/></root>');
  940. ^
  941. <sql-statement>
  942. SELECT xpath('count(//*)=3', '<root><sub/><sub/></root>');
  943. </sql-statement>
  944. -stdin-:<main>: Error: Type annotation
  945. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  946. SELECT xpath('count(//*)=3', '<root><sub/><sub/></root>');
  947. ^
  948. -stdin-:<main>:1:8: Error: At function: PgCall
  949. SELECT xpath('count(//*)=3', '<root><sub/><sub/></root>');
  950. ^
  951. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  952. SELECT xpath('count(//*)=3', '<root><sub/><sub/></root>');
  953. ^
  954. <sql-statement>
  955. SELECT xpath('name(/*)', '<root><sub/><sub/></root>');
  956. </sql-statement>
  957. -stdin-:<main>: Error: Type annotation
  958. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  959. SELECT xpath('name(/*)', '<root><sub/><sub/></root>');
  960. ^
  961. -stdin-:<main>:1:8: Error: At function: PgCall
  962. SELECT xpath('name(/*)', '<root><sub/><sub/></root>');
  963. ^
  964. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  965. SELECT xpath('name(/*)', '<root><sub/><sub/></root>');
  966. ^
  967. <sql-statement>
  968. SELECT xpath('/nosuchtag', '<root/>');
  969. </sql-statement>
  970. -stdin-:<main>: Error: Type annotation
  971. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  972. SELECT xpath('/nosuchtag', '<root/>');
  973. ^
  974. -stdin-:<main>:1:8: Error: At function: PgCall
  975. SELECT xpath('/nosuchtag', '<root/>');
  976. ^
  977. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  978. SELECT xpath('/nosuchtag', '<root/>');
  979. ^
  980. <sql-statement>
  981. SELECT xpath('root', '<root/>');
  982. </sql-statement>
  983. -stdin-:<main>: Error: Type annotation
  984. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  985. SELECT xpath('root', '<root/>');
  986. ^
  987. -stdin-:<main>:1:8: Error: At function: PgCall
  988. SELECT xpath('root', '<root/>');
  989. ^
  990. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  991. SELECT xpath('root', '<root/>');
  992. ^
  993. <sql-statement>
  994. -- Round-trip non-ASCII data through xpath().
  995. DO $$
  996. DECLARE
  997. xml_declaration text := '<?xml version="1.0" encoding="ISO-8859-1"?>';
  998. degree_symbol text;
  999. res xml[];
  1000. BEGIN
  1001. -- Per the documentation, except when the server encoding is UTF8, xpath()
  1002. -- may not work on non-ASCII data. The untranslatable_character and
  1003. -- undefined_function traps below, currently dead code, will become relevant
  1004. -- if we remove this limitation.
  1005. IF current_setting('server_encoding') <> 'UTF8' THEN
  1006. RAISE LOG 'skip: encoding % unsupported for xpath',
  1007. current_setting('server_encoding');
  1008. RETURN;
  1009. END IF;
  1010. degree_symbol := convert_from('\xc2b0', 'UTF8');
  1011. res := xpath('text()', (xml_declaration ||
  1012. '<x>' || degree_symbol || '</x>')::xml);
  1013. IF degree_symbol <> res[1]::text THEN
  1014. RAISE 'expected % (%), got % (%)',
  1015. degree_symbol, convert_to(degree_symbol, 'UTF8'),
  1016. res[1], convert_to(res[1]::text, 'UTF8');
  1017. END IF;
  1018. EXCEPTION
  1019. -- character with byte sequence 0xc2 0xb0 in encoding "UTF8" has no equivalent in encoding "LATIN8"
  1020. WHEN untranslatable_character
  1021. -- default conversion function for encoding "UTF8" to "MULE_INTERNAL" does not exist
  1022. OR undefined_function
  1023. -- unsupported XML feature
  1024. OR feature_not_supported THEN
  1025. RAISE LOG 'skip: %', SQLERRM;
  1026. END
  1027. $$;
  1028. </sql-statement>
  1029. -stdin-:<main>: Error: Parse Sql
  1030. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 263
  1031. -- Round-trip non-ASCII data through xpath().
  1032. ^
  1033. <sql-statement>
  1034. -- Test xmlexists and xpath_exists
  1035. SELECT xmlexists('//town[text() = ''Toronto'']' PASSING BY REF '<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>');
  1036. </sql-statement>
  1037. <sql-statement>
  1038. SELECT xmlexists('//town[text() = ''Cwmbran'']' PASSING BY REF '<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>');
  1039. </sql-statement>
  1040. <sql-statement>
  1041. SELECT xmlexists('count(/nosuchtag)' PASSING BY REF '<root/>');
  1042. </sql-statement>
  1043. <sql-statement>
  1044. SELECT xpath_exists('//town[text() = ''Toronto'']','<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>'::xml);
  1045. </sql-statement>
  1046. -stdin-:<main>: Error: Type annotation
  1047. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  1048. SELECT xpath_exists('//town[text() = ''Toronto'']','<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>'::xml);
  1049. ^
  1050. -stdin-:<main>:1:8: Error: At function: PgCall
  1051. SELECT xpath_exists('//town[text() = ''Toronto'']','<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>'::xml);
  1052. ^
  1053. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath_exists with given argument types: (unknown,xml)
  1054. SELECT xpath_exists('//town[text() = ''Toronto'']','<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>'::xml);
  1055. ^
  1056. <sql-statement>
  1057. SELECT xpath_exists('//town[text() = ''Cwmbran'']','<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>'::xml);
  1058. </sql-statement>
  1059. -stdin-:<main>: Error: Type annotation
  1060. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  1061. SELECT xpath_exists('//town[text() = ''Cwmbran'']','<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>'::xml);
  1062. ^
  1063. -stdin-:<main>:1:8: Error: At function: PgCall
  1064. SELECT xpath_exists('//town[text() = ''Cwmbran'']','<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>'::xml);
  1065. ^
  1066. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath_exists with given argument types: (unknown,xml)
  1067. SELECT xpath_exists('//town[text() = ''Cwmbran'']','<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>'::xml);
  1068. ^
  1069. <sql-statement>
  1070. SELECT xpath_exists('count(/nosuchtag)', '<root/>'::xml);
  1071. </sql-statement>
  1072. -stdin-:<main>: Error: Type annotation
  1073. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  1074. SELECT xpath_exists('count(/nosuchtag)', '<root/>'::xml);
  1075. ^
  1076. -stdin-:<main>:1:8: Error: At function: PgCall
  1077. SELECT xpath_exists('count(/nosuchtag)', '<root/>'::xml);
  1078. ^
  1079. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath_exists with given argument types: (unknown,xml)
  1080. SELECT xpath_exists('count(/nosuchtag)', '<root/>'::xml);
  1081. ^
  1082. <sql-statement>
  1083. INSERT INTO xmltest VALUES (4, '<menu><beers><name>Budvar</name><cost>free</cost><name>Carling</name><cost>lots</cost></beers></menu>'::xml);
  1084. </sql-statement>
  1085. <sql-statement>
  1086. INSERT INTO xmltest VALUES (5, '<menu><beers><name>Molson</name><cost>free</cost><name>Carling</name><cost>lots</cost></beers></menu>'::xml);
  1087. </sql-statement>
  1088. <sql-statement>
  1089. INSERT INTO xmltest VALUES (6, '<myns:menu xmlns:myns="http://myns.com"><myns:beers><myns:name>Budvar</myns:name><myns:cost>free</myns:cost><myns:name>Carling</myns:name><myns:cost>lots</myns:cost></myns:beers></myns:menu>'::xml);
  1090. </sql-statement>
  1091. <sql-statement>
  1092. INSERT INTO xmltest VALUES (7, '<myns:menu xmlns:myns="http://myns.com"><myns:beers><myns:name>Molson</myns:name><myns:cost>free</myns:cost><myns:name>Carling</myns:name><myns:cost>lots</myns:cost></myns:beers></myns:menu>'::xml);
  1093. </sql-statement>
  1094. <sql-statement>
  1095. SELECT COUNT(id) FROM xmltest WHERE xmlexists('/menu/beer' PASSING data);
  1096. </sql-statement>
  1097. <sql-statement>
  1098. SELECT COUNT(id) FROM xmltest WHERE xmlexists('/menu/beer' PASSING BY REF data BY REF);
  1099. </sql-statement>
  1100. <sql-statement>
  1101. SELECT COUNT(id) FROM xmltest WHERE xmlexists('/menu/beers' PASSING BY REF data);
  1102. </sql-statement>
  1103. <sql-statement>
  1104. SELECT COUNT(id) FROM xmltest WHERE xmlexists('/menu/beers/name[text() = ''Molson'']' PASSING BY REF data);
  1105. </sql-statement>
  1106. <sql-statement>
  1107. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beer',data);
  1108. </sql-statement>
  1109. -stdin-:<main>: Error: Type annotation
  1110. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect
  1111. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beer',data);
  1112. ^
  1113. -stdin-:<main>: Error: At function: PgSetItem
  1114. -stdin-:<main>:1:1: Error: At function: PgWhere
  1115. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beer',data);
  1116. ^
  1117. -stdin-:<main>:1:37: Error: At function: PgCall
  1118. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beer',data);
  1119. ^
  1120. -stdin-:<main>:1:37: Error: Unable to find an overload for proc xpath_exists with given argument types: (unknown,xml)
  1121. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beer',data);
  1122. ^
  1123. <sql-statement>
  1124. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers',data);
  1125. </sql-statement>
  1126. -stdin-:<main>: Error: Type annotation
  1127. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect
  1128. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers',data);
  1129. ^
  1130. -stdin-:<main>: Error: At function: PgSetItem
  1131. -stdin-:<main>:1:1: Error: At function: PgWhere
  1132. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers',data);
  1133. ^
  1134. -stdin-:<main>:1:37: Error: At function: PgCall
  1135. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers',data);
  1136. ^
  1137. -stdin-:<main>:1:37: Error: Unable to find an overload for proc xpath_exists with given argument types: (unknown,xml)
  1138. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers',data);
  1139. ^
  1140. <sql-statement>
  1141. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers/name[text() = ''Molson'']',data);
  1142. </sql-statement>
  1143. -stdin-:<main>: Error: Type annotation
  1144. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect
  1145. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers/name[text() = ''Molson'']',data);
  1146. ^
  1147. -stdin-:<main>: Error: At function: PgSetItem
  1148. -stdin-:<main>:1:1: Error: At function: PgWhere
  1149. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers/name[text() = ''Molson'']',data);
  1150. ^
  1151. -stdin-:<main>:1:37: Error: At function: PgCall
  1152. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers/name[text() = ''Molson'']',data);
  1153. ^
  1154. -stdin-:<main>:1:37: Error: Unable to find an overload for proc xpath_exists with given argument types: (unknown,xml)
  1155. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers/name[text() = ''Molson'']',data);
  1156. ^
  1157. <sql-statement>
  1158. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/myns:menu/myns:beer',data,ARRAY[ARRAY['myns','http://myns.com']]);
  1159. </sql-statement>
  1160. <sql-statement>
  1161. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/myns:menu/myns:beers',data,ARRAY[ARRAY['myns','http://myns.com']]);
  1162. </sql-statement>
  1163. <sql-statement>
  1164. SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/myns:menu/myns:beers/myns:name[text() = ''Molson'']',data,ARRAY[ARRAY['myns','http://myns.com']]);
  1165. </sql-statement>
  1166. <sql-statement>
  1167. CREATE TABLE query ( expr TEXT );
  1168. </sql-statement>
  1169. <sql-statement>
  1170. INSERT INTO query VALUES ('/menu/beers/cost[text() = ''lots'']');
  1171. </sql-statement>
  1172. <sql-statement>
  1173. SELECT COUNT(id) FROM xmltest, query WHERE xmlexists(expr PASSING BY REF data);
  1174. </sql-statement>
  1175. <sql-statement>
  1176. -- Test xml_is_well_formed and variants
  1177. SELECT xml_is_well_formed_document('<foo>bar</foo>');
  1178. </sql-statement>
  1179. <sql-statement>
  1180. SELECT xml_is_well_formed_document('abc');
  1181. </sql-statement>
  1182. <sql-statement>
  1183. SELECT xml_is_well_formed_content('<foo>bar</foo>');
  1184. </sql-statement>
  1185. <sql-statement>
  1186. SELECT xml_is_well_formed_content('abc');
  1187. </sql-statement>
  1188. <sql-statement>
  1189. SET xmloption TO DOCUMENT;
  1190. </sql-statement>
  1191. <sql-statement>
  1192. SELECT xml_is_well_formed('abc');
  1193. </sql-statement>
  1194. <sql-statement>
  1195. SELECT xml_is_well_formed('<>');
  1196. </sql-statement>
  1197. <sql-statement>
  1198. SELECT xml_is_well_formed('<abc/>');
  1199. </sql-statement>
  1200. <sql-statement>
  1201. SELECT xml_is_well_formed('<foo>bar</foo>');
  1202. </sql-statement>
  1203. <sql-statement>
  1204. SELECT xml_is_well_formed('<foo>bar</foo');
  1205. </sql-statement>
  1206. <sql-statement>
  1207. SELECT xml_is_well_formed('<foo><bar>baz</foo>');
  1208. </sql-statement>
  1209. <sql-statement>
  1210. SELECT xml_is_well_formed('<local:data xmlns:local="http://127.0.0.1"><local:piece id="1">number one</local:piece><local:piece id="2" /></local:data>');
  1211. </sql-statement>
  1212. <sql-statement>
  1213. SELECT xml_is_well_formed('<pg:foo xmlns:pg="http://postgresql.org/stuff">bar</my:foo>');
  1214. </sql-statement>
  1215. <sql-statement>
  1216. SELECT xml_is_well_formed('<pg:foo xmlns:pg="http://postgresql.org/stuff">bar</pg:foo>');
  1217. </sql-statement>
  1218. <sql-statement>
  1219. SELECT xml_is_well_formed('<invalidentity>&</abc>');
  1220. </sql-statement>
  1221. <sql-statement>
  1222. SELECT xml_is_well_formed('<undefinedentity>&idontexist;</abc>');
  1223. </sql-statement>
  1224. <sql-statement>
  1225. SELECT xml_is_well_formed('<invalidns xmlns=''&lt;''/>');
  1226. </sql-statement>
  1227. <sql-statement>
  1228. SELECT xml_is_well_formed('<relativens xmlns=''relative''/>');
  1229. </sql-statement>
  1230. <sql-statement>
  1231. SELECT xml_is_well_formed('<twoerrors>&idontexist;</unbalanced>');
  1232. </sql-statement>
  1233. <sql-statement>
  1234. SET xmloption TO CONTENT;
  1235. </sql-statement>
  1236. <sql-statement>
  1237. SELECT xml_is_well_formed('abc');
  1238. </sql-statement>
  1239. <sql-statement>
  1240. -- Since xpath() deals with namespaces, it's a bit stricter about
  1241. -- what's well-formed and what's not. If we don't obey these rules
  1242. -- (i.e. ignore namespace-related errors from libxml), xpath()
  1243. -- fails in subtle ways. The following would for example produce
  1244. -- the xml value
  1245. -- <invalidns xmlns='<'/>
  1246. -- which is invalid because '<' may not appear un-escaped in
  1247. -- attribute values.
  1248. -- Since different libxml versions emit slightly different
  1249. -- error messages, we suppress the DETAIL in this test.
  1250. \set VERBOSITY terse
  1251. </sql-statement>
  1252. Metacommand \set VERBOSITY terse is not supported
  1253. <sql-statement>
  1254. SELECT xpath('/*', '<invalidns xmlns=''&lt;''/>');
  1255. </sql-statement>
  1256. -stdin-:<main>: Error: Type annotation
  1257. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  1258. SELECT xpath('/*', '<invalidns xmlns=''&lt;''/>');
  1259. ^
  1260. -stdin-:<main>:1:8: Error: At function: PgCall
  1261. SELECT xpath('/*', '<invalidns xmlns=''&lt;''/>');
  1262. ^
  1263. -stdin-:<main>:1:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  1264. SELECT xpath('/*', '<invalidns xmlns=''&lt;''/>');
  1265. ^
  1266. <sql-statement>
  1267. \set VERBOSITY default
  1268. </sql-statement>
  1269. Metacommand \set VERBOSITY default is not supported
  1270. <sql-statement>
  1271. -- Again, the XML isn't well-formed for namespace purposes
  1272. SELECT xpath('/*', '<nosuchprefix:tag/>');
  1273. </sql-statement>
  1274. -stdin-:<main>: Error: Type annotation
  1275. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  1276. -- Again, the XML isn't well-formed for namespace purposes
  1277. ^
  1278. -stdin-:<main>:2:8: Error: At function: PgCall
  1279. SELECT xpath('/*', '<nosuchprefix:tag/>');
  1280. ^
  1281. -stdin-:<main>:2:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  1282. SELECT xpath('/*', '<nosuchprefix:tag/>');
  1283. ^
  1284. <sql-statement>
  1285. -- XPath deprecates relative namespaces, but they're not supposed to
  1286. -- throw an error, only a warning.
  1287. SELECT xpath('/*', '<relativens xmlns=''relative''/>');
  1288. </sql-statement>
  1289. -stdin-:<main>: Error: Type annotation
  1290. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  1291. -- XPath deprecates relative namespaces, but they're not supposed to
  1292. ^
  1293. -stdin-:<main>:3:8: Error: At function: PgCall
  1294. SELECT xpath('/*', '<relativens xmlns=''relative''/>');
  1295. ^
  1296. -stdin-:<main>:3:8: Error: Unable to find an overload for proc xpath with given argument types: (unknown,unknown)
  1297. SELECT xpath('/*', '<relativens xmlns=''relative''/>');
  1298. ^
  1299. <sql-statement>
  1300. -- External entity references should not leak filesystem information.
  1301. SELECT XMLPARSE(DOCUMENT '<!DOCTYPE foo [<!ENTITY c SYSTEM "/etc/passwd">]><foo>&c;</foo>');
  1302. </sql-statement>
  1303. -stdin-:<main>: Error: Parse Sql
  1304. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  1305. -- External entity references should not leak filesystem information.
  1306. ^
  1307. <sql-statement>
  1308. SELECT XMLPARSE(DOCUMENT '<!DOCTYPE foo [<!ENTITY c SYSTEM "/etc/no.such.file">]><foo>&c;</foo>');
  1309. </sql-statement>
  1310. -stdin-:<main>: Error: Parse Sql
  1311. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  1312. SELECT XMLPARSE(DOCUMENT '<!DOCTYPE foo [<!ENTITY c SYSTEM "/etc/no.such.file">]><foo>&c;</foo>');
  1313. ^
  1314. <sql-statement>
  1315. -- This might or might not load the requested DTD, but it mustn't throw error.
  1316. SELECT XMLPARSE(DOCUMENT '<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"><chapter>&nbsp;</chapter>');
  1317. </sql-statement>
  1318. -stdin-:<main>: Error: Parse Sql
  1319. -stdin-:<main>:1:1: Error: alternative is not implemented yet : 143
  1320. -- This might or might not load the requested DTD, but it mustn't throw error.
  1321. ^
  1322. <sql-statement>
  1323. -- XMLPATH tests
  1324. CREATE TABLE xmldata(data xml);
  1325. </sql-statement>
  1326. <sql-statement>
  1327. INSERT INTO xmldata VALUES('<ROWS>
  1328. <ROW id="1">
  1329. <COUNTRY_ID>AU</COUNTRY_ID>
  1330. <COUNTRY_NAME>Australia</COUNTRY_NAME>
  1331. <REGION_ID>3</REGION_ID>
  1332. </ROW>
  1333. <ROW id="2">
  1334. <COUNTRY_ID>CN</COUNTRY_ID>
  1335. <COUNTRY_NAME>China</COUNTRY_NAME>
  1336. <REGION_ID>3</REGION_ID>
  1337. </ROW>
  1338. <ROW id="3">
  1339. <COUNTRY_ID>HK</COUNTRY_ID>
  1340. <COUNTRY_NAME>HongKong</COUNTRY_NAME>
  1341. <REGION_ID>3</REGION_ID>
  1342. </ROW>
  1343. <ROW id="4">
  1344. <COUNTRY_ID>IN</COUNTRY_ID>
  1345. <COUNTRY_NAME>India</COUNTRY_NAME>
  1346. <REGION_ID>3</REGION_ID>
  1347. </ROW>
  1348. <ROW id="5">
  1349. <COUNTRY_ID>JP</COUNTRY_ID>
  1350. <COUNTRY_NAME>Japan</COUNTRY_NAME>
  1351. <REGION_ID>3</REGION_ID><PREMIER_NAME>Sinzo Abe</PREMIER_NAME>
  1352. </ROW>
  1353. <ROW id="6">
  1354. <COUNTRY_ID>SG</COUNTRY_ID>
  1355. <COUNTRY_NAME>Singapore</COUNTRY_NAME>
  1356. <REGION_ID>3</REGION_ID><SIZE unit="km">791</SIZE>
  1357. </ROW>
  1358. </ROWS>');
  1359. </sql-statement>
  1360. <sql-statement>
  1361. -- XMLTABLE with columns
  1362. SELECT xmltable.*
  1363. FROM (SELECT data FROM xmldata) x,
  1364. LATERAL XMLTABLE('/ROWS/ROW'
  1365. PASSING data
  1366. COLUMNS id int PATH '@id',
  1367. _id FOR ORDINALITY,
  1368. country_name text PATH 'COUNTRY_NAME/text()' NOT NULL,
  1369. country_id text PATH 'COUNTRY_ID',
  1370. region_id int PATH 'REGION_ID',
  1371. size float PATH 'SIZE',
  1372. unit text PATH 'SIZE/@unit',
  1373. premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified');
  1374. </sql-statement>
  1375. -stdin-:<main>: Error: Parse Sql
  1376. -stdin-:<main>:6:41: Error: ERROR: unrecognized column option "PATH"
  1377. COLUMNS id int PATH '@id',
  1378. ^
  1379. <sql-statement>
  1380. CREATE VIEW xmltableview1 AS SELECT xmltable.*
  1381. FROM (SELECT data FROM xmldata) x,
  1382. LATERAL XMLTABLE('/ROWS/ROW'
  1383. PASSING data
  1384. COLUMNS id int PATH '@id',
  1385. _id FOR ORDINALITY,
  1386. country_name text PATH 'COUNTRY_NAME/text()' NOT NULL,
  1387. country_id text PATH 'COUNTRY_ID',
  1388. region_id int PATH 'REGION_ID',
  1389. size float PATH 'SIZE',
  1390. unit text PATH 'SIZE/@unit',
  1391. premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified');
  1392. </sql-statement>
  1393. -stdin-:<main>: Error: Parse Sql
  1394. -stdin-:<main>:5:41: Error: ERROR: unrecognized column option "PATH"
  1395. COLUMNS id int PATH '@id',
  1396. ^
  1397. <sql-statement>
  1398. SELECT * FROM xmltableview1;
  1399. </sql-statement>
  1400. -stdin-:<main>: Fatal: Table metadata loading
  1401. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.xmltableview1
  1402. <sql-statement>
  1403. \sv xmltableview1
  1404. </sql-statement>
  1405. Metacommand \sv xmltableview1 is not supported
  1406. <sql-statement>
  1407. EXPLAIN (COSTS OFF) SELECT * FROM xmltableview1;
  1408. </sql-statement>
  1409. -stdin-:<main>: Error: Parse Sql
  1410. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  1411. EXPLAIN (COSTS OFF) SELECT * FROM xmltableview1;
  1412. ^
  1413. <sql-statement>
  1414. EXPLAIN (COSTS OFF, VERBOSE) SELECT * FROM xmltableview1;
  1415. </sql-statement>
  1416. -stdin-:<main>: Error: Parse Sql
  1417. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  1418. EXPLAIN (COSTS OFF, VERBOSE) SELECT * FROM xmltableview1;
  1419. ^
  1420. <sql-statement>
  1421. -- errors
  1422. SELECT * FROM XMLTABLE (ROW () PASSING null COLUMNS v1 timestamp) AS f (v1, v2);
  1423. </sql-statement>
  1424. -stdin-:<main>: Error: Parse Sql
  1425. -stdin-:<main>:1:1: Error: SelectStmt: alternative is not implemented yet : 371
  1426. -- errors
  1427. ^
  1428. <sql-statement>
  1429. -- XMLNAMESPACES tests
  1430. SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS zz),
  1431. '/zz:rows/zz:row'
  1432. PASSING '<rows xmlns="http://x.y"><row><a>10</a></row></rows>'
  1433. COLUMNS a int PATH 'zz:a');
  1434. </sql-statement>
  1435. -stdin-:<main>: Error: Parse Sql
  1436. -stdin-:<main>:5:37: Error: ERROR: unrecognized column option "PATH"
  1437. COLUMNS a int PATH 'zz:a');
  1438. ^
  1439. <sql-statement>
  1440. CREATE VIEW xmltableview2 AS SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS zz),
  1441. '/zz:rows/zz:row'
  1442. PASSING '<rows xmlns="http://x.y"><row><a>10</a></row></rows>'
  1443. COLUMNS a int PATH 'zz:a');
  1444. </sql-statement>
  1445. -stdin-:<main>: Error: Parse Sql
  1446. -stdin-:<main>:4:37: Error: ERROR: unrecognized column option "PATH"
  1447. COLUMNS a int PATH 'zz:a');
  1448. ^
  1449. <sql-statement>
  1450. SELECT * FROM xmltableview2;
  1451. </sql-statement>
  1452. -stdin-:<main>: Fatal: Table metadata loading
  1453. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.xmltableview2
  1454. <sql-statement>
  1455. SELECT * FROM XMLTABLE(XMLNAMESPACES(DEFAULT 'http://x.y'),
  1456. '/rows/row'
  1457. PASSING '<rows xmlns="http://x.y"><row><a>10</a></row></rows>'
  1458. COLUMNS a int PATH 'a');
  1459. </sql-statement>
  1460. -stdin-:<main>: Error: Parse Sql
  1461. -stdin-:<main>:4:37: Error: ERROR: unrecognized column option "PATH"
  1462. COLUMNS a int PATH 'a');
  1463. ^
  1464. <sql-statement>
  1465. SELECT * FROM XMLTABLE('.'
  1466. PASSING '<foo/>'
  1467. COLUMNS a text PATH 'foo/namespace::node()');
  1468. </sql-statement>
  1469. -stdin-:<main>: Error: Parse Sql
  1470. -stdin-:<main>:3:39: Error: ERROR: unrecognized column option "PATH"
  1471. COLUMNS a text PATH 'foo/namespace::node()');
  1472. ^
  1473. <sql-statement>
  1474. -- used in prepare statements
  1475. PREPARE pp AS
  1476. SELECT xmltable.*
  1477. FROM (SELECT data FROM xmldata) x,
  1478. LATERAL XMLTABLE('/ROWS/ROW'
  1479. PASSING data
  1480. COLUMNS id int PATH '@id',
  1481. _id FOR ORDINALITY,
  1482. country_name text PATH 'COUNTRY_NAME' NOT NULL,
  1483. country_id text PATH 'COUNTRY_ID',
  1484. region_id int PATH 'REGION_ID',
  1485. size float PATH 'SIZE',
  1486. unit text PATH 'SIZE/@unit',
  1487. premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified');
  1488. </sql-statement>
  1489. -stdin-:<main>: Error: Parse Sql
  1490. -stdin-:<main>:7:41: Error: ERROR: unrecognized column option "PATH"
  1491. COLUMNS id int PATH '@id',
  1492. ^
  1493. <sql-statement>
  1494. EXECUTE pp;
  1495. </sql-statement>
  1496. -stdin-:<main>: Error: Parse Sql
  1497. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 302
  1498. EXECUTE pp;
  1499. ^
  1500. <sql-statement>
  1501. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS "COUNTRY_NAME" text, "REGION_ID" int);
  1502. </sql-statement>
  1503. -stdin-:<main>: Error: Parse Sql
  1504. -stdin-:<main>:1:1: Error: SelectStmt: alternative is not implemented yet : 371
  1505. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS "COUNTRY_NAME" text, "REGION_ID" int);
  1506. ^
  1507. <sql-statement>
  1508. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id FOR ORDINALITY, "COUNTRY_NAME" text, "REGION_ID" int);
  1509. </sql-statement>
  1510. -stdin-:<main>: Error: Parse Sql
  1511. -stdin-:<main>:1:1: Error: SelectStmt: alternative is not implemented yet : 371
  1512. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id FOR ORDINALITY, "COUNTRY_NAME" text, "REGION_ID" int);
  1513. ^
  1514. <sql-statement>
  1515. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id', "COUNTRY_NAME" text, "REGION_ID" int);
  1516. </sql-statement>
  1517. -stdin-:<main>: Error: Parse Sql
  1518. -stdin-:<main>:1:137: Error: ERROR: unrecognized column option "PATH"
  1519. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id', "COUNTRY_NAME" text, "REGION_ID" int);
  1520. ^
  1521. <sql-statement>
  1522. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id');
  1523. </sql-statement>
  1524. -stdin-:<main>: Error: Parse Sql
  1525. -stdin-:<main>:1:137: Error: ERROR: unrecognized column option "PATH"
  1526. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id');
  1527. ^
  1528. <sql-statement>
  1529. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id FOR ORDINALITY);
  1530. </sql-statement>
  1531. -stdin-:<main>: Error: Parse Sql
  1532. -stdin-:<main>:1:1: Error: SelectStmt: alternative is not implemented yet : 371
  1533. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id FOR ORDINALITY);
  1534. ^
  1535. <sql-statement>
  1536. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id', "COUNTRY_NAME" text, "REGION_ID" int, rawdata xml PATH '.');
  1537. </sql-statement>
  1538. -stdin-:<main>: Error: Parse Sql
  1539. -stdin-:<main>:1:137: Error: ERROR: unrecognized column option "PATH"
  1540. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id', "COUNTRY_NAME" text, "REGION_ID" int, rawdata xml PATH '.');
  1541. ^
  1542. <sql-statement>
  1543. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id', "COUNTRY_NAME" text, "REGION_ID" int, rawdata xml PATH './*');
  1544. </sql-statement>
  1545. -stdin-:<main>: Error: Parse Sql
  1546. -stdin-:<main>:1:137: Error: ERROR: unrecognized column option "PATH"
  1547. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id', "COUNTRY_NAME" text, "REGION_ID" int, rawdata xml PATH './*');
  1548. ^
  1549. <sql-statement>
  1550. SELECT * FROM xmltable('/root' passing '<root><element>a1a<!-- aaaa -->a2a<?aaaaa?> <!--z--> bbbb<x>xxx</x>cccc</element></root>' COLUMNS element text);
  1551. </sql-statement>
  1552. -stdin-:<main>: Error: Parse Sql
  1553. -stdin-:<main>:1:1: Error: SelectStmt: alternative is not implemented yet : 371
  1554. SELECT * FROM xmltable('/root' passing '<root><element>a1a<!-- aaaa -->a2a<?aaaaa?> <!--z--> bbbb<x>xxx</x>cccc</element></root>' COLUMNS element text);
  1555. ^
  1556. <sql-statement>
  1557. SELECT * FROM xmltable('/root' passing '<root><element>a1a<!-- aaaa -->a2a<?aaaaa?> <!--z--> bbbb<x>xxx</x>cccc</element></root>' COLUMNS element text PATH 'element/text()'); -- should fail
  1558. </sql-statement>
  1559. -stdin-:<main>: Error: Parse Sql
  1560. -stdin-:<main>:1:154: Error: ERROR: unrecognized column option "PATH"
  1561. SELECT * FROM xmltable('/root' passing '<root><element>a1a<!-- aaaa -->a2a<?aaaaa?> <!--z--> bbbb<x>xxx</x>cccc</element></root>' COLUMNS element text PATH 'element/text()'); -- should fail
  1562. ^
  1563. <sql-statement>
  1564. -- CDATA test
  1565. select * from xmltable('d/r' passing '<d><r><c><![CDATA[<hello> &"<>!<a>foo</a>]]></c></r><r><c>2</c></r></d>' columns c text);
  1566. </sql-statement>
  1567. -stdin-:<main>: Error: Parse Sql
  1568. -stdin-:<main>:1:1: Error: SelectStmt: alternative is not implemented yet : 371
  1569. -- CDATA test
  1570. ^
  1571. <sql-statement>
  1572. -- XML builtin entities
  1573. SELECT * FROM xmltable('/x/a' PASSING '<x><a><ent>&apos;</ent></a><a><ent>&quot;</ent></a><a><ent>&amp;</ent></a><a><ent>&lt;</ent></a><a><ent>&gt;</ent></a></x>' COLUMNS ent text);
  1574. </sql-statement>
  1575. -stdin-:<main>: Error: Parse Sql
  1576. -stdin-:<main>:1:1: Error: SelectStmt: alternative is not implemented yet : 371
  1577. -- XML builtin entities
  1578. ^
  1579. <sql-statement>
  1580. SELECT * FROM xmltable('/x/a' PASSING '<x><a><ent>&apos;</ent></a><a><ent>&quot;</ent></a><a><ent>&amp;</ent></a><a><ent>&lt;</ent></a><a><ent>&gt;</ent></a></x>' COLUMNS ent xml);
  1581. </sql-statement>
  1582. -stdin-:<main>: Error: Parse Sql
  1583. -stdin-:<main>:1:1: Error: SelectStmt: alternative is not implemented yet : 371
  1584. SELECT * FROM xmltable('/x/a' PASSING '<x><a><ent>&apos;</ent></a><a><ent>&quot;</ent></a><a><ent>&amp;</ent></a><a><ent>&lt;</ent></a><a><ent>&gt;</ent></a></x>' COLUMNS ent xml);
  1585. ^
  1586. <sql-statement>
  1587. EXPLAIN (VERBOSE, COSTS OFF)
  1588. SELECT xmltable.*
  1589. FROM (SELECT data FROM xmldata) x,
  1590. LATERAL XMLTABLE('/ROWS/ROW'
  1591. PASSING data
  1592. COLUMNS id int PATH '@id',
  1593. _id FOR ORDINALITY,
  1594. country_name text PATH 'COUNTRY_NAME' NOT NULL,
  1595. country_id text PATH 'COUNTRY_ID',
  1596. region_id int PATH 'REGION_ID',
  1597. size float PATH 'SIZE',
  1598. unit text PATH 'SIZE/@unit',
  1599. premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified');
  1600. </sql-statement>
  1601. -stdin-:<main>: Error: Parse Sql
  1602. -stdin-:<main>:6:41: Error: ERROR: unrecognized column option "PATH"
  1603. COLUMNS id int PATH '@id',
  1604. ^
  1605. <sql-statement>
  1606. -- test qual
  1607. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS "COUNTRY_NAME" text, "REGION_ID" int) WHERE "COUNTRY_NAME" = 'Japan';
  1608. </sql-statement>
  1609. -stdin-:<main>: Error: Parse Sql
  1610. -stdin-:<main>:1:1: Error: SelectStmt: alternative is not implemented yet : 371
  1611. -- test qual
  1612. ^
  1613. <sql-statement>
  1614. EXPLAIN (VERBOSE, COSTS OFF)
  1615. SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS "COUNTRY_NAME" text, "REGION_ID" int) WHERE "COUNTRY_NAME" = 'Japan';
  1616. </sql-statement>
  1617. -stdin-:<main>: Error: Parse Sql
  1618. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  1619. EXPLAIN (VERBOSE, COSTS OFF)
  1620. ^
  1621. <sql-statement>
  1622. -- should to work with more data
  1623. INSERT INTO xmldata VALUES('<ROWS>
  1624. <ROW id="10">
  1625. <COUNTRY_ID>CZ</COUNTRY_ID>
  1626. <COUNTRY_NAME>Czech Republic</COUNTRY_NAME>
  1627. <REGION_ID>2</REGION_ID><PREMIER_NAME>Milos Zeman</PREMIER_NAME>
  1628. </ROW>
  1629. <ROW id="11">
  1630. <COUNTRY_ID>DE</COUNTRY_ID>
  1631. <COUNTRY_NAME>Germany</COUNTRY_NAME>
  1632. <REGION_ID>2</REGION_ID>
  1633. </ROW>
  1634. <ROW id="12">
  1635. <COUNTRY_ID>FR</COUNTRY_ID>
  1636. <COUNTRY_NAME>France</COUNTRY_NAME>
  1637. <REGION_ID>2</REGION_ID>
  1638. </ROW>
  1639. </ROWS>');
  1640. </sql-statement>
  1641. <sql-statement>
  1642. INSERT INTO xmldata VALUES('<ROWS>
  1643. <ROW id="20">
  1644. <COUNTRY_ID>EG</COUNTRY_ID>
  1645. <COUNTRY_NAME>Egypt</COUNTRY_NAME>
  1646. <REGION_ID>1</REGION_ID>
  1647. </ROW>
  1648. <ROW id="21">
  1649. <COUNTRY_ID>SD</COUNTRY_ID>
  1650. <COUNTRY_NAME>Sudan</COUNTRY_NAME>
  1651. <REGION_ID>1</REGION_ID>
  1652. </ROW>
  1653. </ROWS>');
  1654. </sql-statement>
  1655. <sql-statement>
  1656. SELECT xmltable.*
  1657. FROM (SELECT data FROM xmldata) x,
  1658. LATERAL XMLTABLE('/ROWS/ROW'
  1659. PASSING data
  1660. COLUMNS id int PATH '@id',
  1661. _id FOR ORDINALITY,
  1662. country_name text PATH 'COUNTRY_NAME' NOT NULL,
  1663. country_id text PATH 'COUNTRY_ID',
  1664. region_id int PATH 'REGION_ID',
  1665. size float PATH 'SIZE',
  1666. unit text PATH 'SIZE/@unit',
  1667. premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified');
  1668. </sql-statement>
  1669. -stdin-:<main>: Error: Parse Sql
  1670. -stdin-:<main>:5:41: Error: ERROR: unrecognized column option "PATH"
  1671. COLUMNS id int PATH '@id',
  1672. ^
  1673. <sql-statement>
  1674. SELECT xmltable.*
  1675. FROM (SELECT data FROM xmldata) x,
  1676. LATERAL XMLTABLE('/ROWS/ROW'
  1677. PASSING data
  1678. COLUMNS id int PATH '@id',
  1679. _id FOR ORDINALITY,
  1680. country_name text PATH 'COUNTRY_NAME' NOT NULL,
  1681. country_id text PATH 'COUNTRY_ID',
  1682. region_id int PATH 'REGION_ID',
  1683. size float PATH 'SIZE',
  1684. unit text PATH 'SIZE/@unit',
  1685. premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified')
  1686. WHERE region_id = 2;
  1687. </sql-statement>
  1688. -stdin-:<main>: Error: Parse Sql
  1689. -stdin-:<main>:5:41: Error: ERROR: unrecognized column option "PATH"
  1690. COLUMNS id int PATH '@id',
  1691. ^
  1692. <sql-statement>
  1693. EXPLAIN (VERBOSE, COSTS OFF)
  1694. SELECT xmltable.*
  1695. FROM (SELECT data FROM xmldata) x,
  1696. LATERAL XMLTABLE('/ROWS/ROW'
  1697. PASSING data
  1698. COLUMNS id int PATH '@id',
  1699. _id FOR ORDINALITY,
  1700. country_name text PATH 'COUNTRY_NAME' NOT NULL,
  1701. country_id text PATH 'COUNTRY_ID',
  1702. region_id int PATH 'REGION_ID',
  1703. size float PATH 'SIZE',
  1704. unit text PATH 'SIZE/@unit',
  1705. premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified')
  1706. WHERE region_id = 2;
  1707. </sql-statement>
  1708. -stdin-:<main>: Error: Parse Sql
  1709. -stdin-:<main>:6:41: Error: ERROR: unrecognized column option "PATH"
  1710. COLUMNS id int PATH '@id',
  1711. ^
  1712. <sql-statement>
  1713. -- should fail, NULL value
  1714. SELECT xmltable.*
  1715. FROM (SELECT data FROM xmldata) x,
  1716. LATERAL XMLTABLE('/ROWS/ROW'
  1717. PASSING data
  1718. COLUMNS id int PATH '@id',
  1719. _id FOR ORDINALITY,
  1720. country_name text PATH 'COUNTRY_NAME' NOT NULL,
  1721. country_id text PATH 'COUNTRY_ID',
  1722. region_id int PATH 'REGION_ID',
  1723. size float PATH 'SIZE' NOT NULL,
  1724. unit text PATH 'SIZE/@unit',
  1725. premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified');
  1726. </sql-statement>
  1727. -stdin-:<main>: Error: Parse Sql
  1728. -stdin-:<main>:6:41: Error: ERROR: unrecognized column option "PATH"
  1729. COLUMNS id int PATH '@id',
  1730. ^
  1731. <sql-statement>
  1732. -- if all is ok, then result is empty
  1733. -- one line xml test
  1734. WITH
  1735. x AS (SELECT proname, proowner, procost::numeric, pronargs,
  1736. array_to_string(proargnames,',') as proargnames,
  1737. case when proargtypes <> '' then array_to_string(proargtypes::oid[],',') end as proargtypes
  1738. FROM pg_proc WHERE proname = 'f_leak'),
  1739. y AS (SELECT xmlelement(name proc,
  1740. xmlforest(proname, proowner,
  1741. procost, pronargs,
  1742. proargnames, proargtypes)) as proc
  1743. FROM x),
  1744. z AS (SELECT xmltable.*
  1745. FROM y,
  1746. LATERAL xmltable('/proc' PASSING proc
  1747. COLUMNS proname name,
  1748. proowner oid,
  1749. procost float,
  1750. pronargs int,
  1751. proargnames text,
  1752. proargtypes text))
  1753. SELECT * FROM z
  1754. EXCEPT SELECT * FROM x;
  1755. </sql-statement>
  1756. -stdin-:<main>: Error: Parse Sql
  1757. -stdin-:<main>:8:4: Error: alternative is not implemented yet : 143
  1758. y AS (SELECT xmlelement(name proc,
  1759. ^
  1760. <sql-statement>
  1761. -- multi line xml test, result should be empty too
  1762. WITH
  1763. x AS (SELECT proname, proowner, procost::numeric, pronargs,
  1764. array_to_string(proargnames,',') as proargnames,
  1765. case when proargtypes <> '' then array_to_string(proargtypes::oid[],',') end as proargtypes
  1766. FROM pg_proc),
  1767. y AS (SELECT xmlelement(name data,
  1768. xmlagg(xmlelement(name proc,
  1769. xmlforest(proname, proowner, procost,
  1770. pronargs, proargnames, proargtypes)))) as doc
  1771. FROM x),
  1772. z AS (SELECT xmltable.*
  1773. FROM y,
  1774. LATERAL xmltable('/data/proc' PASSING doc
  1775. COLUMNS proname name,
  1776. proowner oid,
  1777. procost float,
  1778. pronargs int,
  1779. proargnames text,
  1780. proargtypes text))
  1781. SELECT * FROM z
  1782. EXCEPT SELECT * FROM x;
  1783. </sql-statement>
  1784. -stdin-:<main>: Error: Parse Sql
  1785. -stdin-:<main>:7:4: Error: alternative is not implemented yet : 143
  1786. y AS (SELECT xmlelement(name data,
  1787. ^
  1788. <sql-statement>
  1789. CREATE TABLE xmltest2(x xml, _path text);
  1790. </sql-statement>
  1791. <sql-statement>
  1792. INSERT INTO xmltest2 VALUES('<d><r><ac>1</ac></r></d>', 'A');
  1793. </sql-statement>
  1794. <sql-statement>
  1795. INSERT INTO xmltest2 VALUES('<d><r><bc>2</bc></r></d>', 'B');
  1796. </sql-statement>
  1797. <sql-statement>
  1798. INSERT INTO xmltest2 VALUES('<d><r><cc>3</cc></r></d>', 'C');
  1799. </sql-statement>
  1800. <sql-statement>
  1801. INSERT INTO xmltest2 VALUES('<d><r><dc>2</dc></r></d>', 'D');
  1802. </sql-statement>
  1803. <sql-statement>
  1804. SELECT xmltable.* FROM xmltest2, LATERAL xmltable('/d/r' PASSING x COLUMNS a int PATH '' || lower(_path) || 'c');
  1805. </sql-statement>
  1806. -stdin-:<main>: Error: Parse Sql
  1807. -stdin-:<main>:1:83: Error: ERROR: unrecognized column option "PATH"
  1808. SELECT xmltable.* FROM xmltest2, LATERAL xmltable('/d/r' PASSING x COLUMNS a int PATH '' || lower(_path) || 'c');
  1809. ^
  1810. <sql-statement>
  1811. SELECT xmltable.* FROM xmltest2, LATERAL xmltable(('/d/r/' || lower(_path) || 'c') PASSING x COLUMNS a int PATH '.');
  1812. </sql-statement>
  1813. -stdin-:<main>: Error: Parse Sql
  1814. -stdin-:<main>:1:109: Error: ERROR: unrecognized column option "PATH"
  1815. SELECT xmltable.* FROM xmltest2, LATERAL xmltable(('/d/r/' || lower(_path) || 'c') PASSING x COLUMNS a int PATH '.');
  1816. ^
  1817. <sql-statement>
  1818. SELECT xmltable.* FROM xmltest2, LATERAL xmltable(('/d/r/' || lower(_path) || 'c') PASSING x COLUMNS a int PATH 'x' DEFAULT ascii(_path) - 54);
  1819. </sql-statement>
  1820. -stdin-:<main>: Error: Parse Sql
  1821. -stdin-:<main>:1:109: Error: ERROR: unrecognized column option "PATH"
  1822. SELECT xmltable.* FROM xmltest2, LATERAL xmltable(('/d/r/' || lower(_path) || 'c') PASSING x COLUMNS a int PATH 'x' DEFAULT ascii(_path) - 54);
  1823. ^
  1824. <sql-statement>
  1825. -- XPath result can be boolean or number too
  1826. SELECT * FROM XMLTABLE('*' PASSING '<a>a</a>' COLUMNS a xml PATH '.', b text PATH '.', c text PATH '"hi"', d boolean PATH '. = "a"', e integer PATH 'string-length(.)');
  1827. </sql-statement>
  1828. -stdin-:<main>: Error: Parse Sql
  1829. -stdin-:<main>:2:61: Error: ERROR: unrecognized column option "PATH"
  1830. SELECT * FROM XMLTABLE('*' PASSING '<a>a</a>' COLUMNS a xml PATH '.', b text PATH '.', c text PATH '"hi"', d boolean PATH '. = "a"', e integer PATH 'string-length(.)');
  1831. ^
  1832. <sql-statement>
  1833. \x
  1834. </sql-statement>
  1835. Metacommand \x is not supported
  1836. <sql-statement>
  1837. SELECT * FROM XMLTABLE('*' PASSING '<e>pre<!--c1--><?pi arg?><![CDATA[&ent1]]><n2>&amp;deep</n2>post</e>' COLUMNS x xml PATH 'node()', y xml PATH '/');
  1838. </sql-statement>
  1839. -stdin-:<main>: Error: Parse Sql
  1840. -stdin-:<main>:1:122: Error: ERROR: unrecognized column option "PATH"
  1841. SELECT * FROM XMLTABLE('*' PASSING '<e>pre<!--c1--><?pi arg?><![CDATA[&ent1]]><n2>&amp;deep</n2>post</e>' COLUMNS x xml PATH 'node()', y xml PATH '/');
  1842. ^
  1843. <sql-statement>
  1844. \x
  1845. </sql-statement>
  1846. Metacommand \x is not supported
  1847. <sql-statement>
  1848. SELECT * FROM XMLTABLE('.' PASSING XMLELEMENT(NAME a) columns a varchar(20) PATH '"<foo/>"', b xml PATH '"<foo/>"');
  1849. </sql-statement>
  1850. -stdin-:<main>: Error: Parse Sql
  1851. -stdin-:<main>:1:78: Error: ERROR: unrecognized column option "PATH"
  1852. SELECT * FROM XMLTABLE('.' PASSING XMLELEMENT(NAME a) columns a varchar(20) PATH '"<foo/>"', b xml PATH '"<foo/>"');
  1853. ^