boolean.err 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  1. <sql-statement>
  2. --
  3. -- BOOLEAN
  4. --
  5. --
  6. -- sanity check - if this fails go insane!
  7. --
  8. SELECT 1 AS one;
  9. </sql-statement>
  10. <sql-statement>
  11. -- ******************testing built-in type bool********************
  12. -- check bool input syntax
  13. SELECT true AS true;
  14. </sql-statement>
  15. <sql-statement>
  16. SELECT false AS false;
  17. </sql-statement>
  18. <sql-statement>
  19. SELECT bool 't' AS true;
  20. </sql-statement>
  21. <sql-statement>
  22. SELECT bool ' f ' AS false;
  23. </sql-statement>
  24. <sql-statement>
  25. SELECT bool 'true' AS true;
  26. </sql-statement>
  27. <sql-statement>
  28. SELECT bool 'test' AS error;
  29. </sql-statement>
  30. -stdin-:<main>: Fatal: Execution
  31. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  32. SELECT bool 'test' AS error;
  33. ^
  34. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: "test"
  35. SELECT bool 'test' AS error;
  36. ^
  37. <sql-statement>
  38. SELECT bool 'false' AS false;
  39. </sql-statement>
  40. <sql-statement>
  41. SELECT bool 'foo' AS error;
  42. </sql-statement>
  43. -stdin-:<main>: Fatal: Execution
  44. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  45. SELECT bool 'foo' AS error;
  46. ^
  47. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: "foo"
  48. SELECT bool 'foo' AS error;
  49. ^
  50. <sql-statement>
  51. SELECT bool 'y' AS true;
  52. </sql-statement>
  53. <sql-statement>
  54. SELECT bool 'yes' AS true;
  55. </sql-statement>
  56. <sql-statement>
  57. SELECT bool 'yeah' AS error;
  58. </sql-statement>
  59. -stdin-:<main>: Fatal: Execution
  60. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  61. SELECT bool 'yeah' AS error;
  62. ^
  63. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: "yeah"
  64. SELECT bool 'yeah' AS error;
  65. ^
  66. <sql-statement>
  67. SELECT bool 'n' AS false;
  68. </sql-statement>
  69. <sql-statement>
  70. SELECT bool 'no' AS false;
  71. </sql-statement>
  72. <sql-statement>
  73. SELECT bool 'nay' AS error;
  74. </sql-statement>
  75. -stdin-:<main>: Fatal: Execution
  76. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  77. SELECT bool 'nay' AS error;
  78. ^
  79. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: "nay"
  80. SELECT bool 'nay' AS error;
  81. ^
  82. <sql-statement>
  83. SELECT bool 'on' AS true;
  84. </sql-statement>
  85. <sql-statement>
  86. SELECT bool 'off' AS false;
  87. </sql-statement>
  88. <sql-statement>
  89. SELECT bool 'of' AS false;
  90. </sql-statement>
  91. <sql-statement>
  92. SELECT bool 'o' AS error;
  93. </sql-statement>
  94. -stdin-:<main>: Fatal: Execution
  95. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  96. SELECT bool 'o' AS error;
  97. ^
  98. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: "o"
  99. SELECT bool 'o' AS error;
  100. ^
  101. <sql-statement>
  102. SELECT bool 'on_' AS error;
  103. </sql-statement>
  104. -stdin-:<main>: Fatal: Execution
  105. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  106. SELECT bool 'on_' AS error;
  107. ^
  108. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: "on_"
  109. SELECT bool 'on_' AS error;
  110. ^
  111. <sql-statement>
  112. SELECT bool 'off_' AS error;
  113. </sql-statement>
  114. -stdin-:<main>: Fatal: Execution
  115. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  116. SELECT bool 'off_' AS error;
  117. ^
  118. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: "off_"
  119. SELECT bool 'off_' AS error;
  120. ^
  121. <sql-statement>
  122. SELECT bool '1' AS true;
  123. </sql-statement>
  124. <sql-statement>
  125. SELECT bool '11' AS error;
  126. </sql-statement>
  127. -stdin-:<main>: Fatal: Execution
  128. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  129. SELECT bool '11' AS error;
  130. ^
  131. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: "11"
  132. SELECT bool '11' AS error;
  133. ^
  134. <sql-statement>
  135. SELECT bool '0' AS false;
  136. </sql-statement>
  137. <sql-statement>
  138. SELECT bool '000' AS error;
  139. </sql-statement>
  140. -stdin-:<main>: Fatal: Execution
  141. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  142. SELECT bool '000' AS error;
  143. ^
  144. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: "000"
  145. SELECT bool '000' AS error;
  146. ^
  147. <sql-statement>
  148. SELECT bool '' AS error;
  149. </sql-statement>
  150. -stdin-:<main>: Fatal: Execution
  151. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  152. SELECT bool '' AS error;
  153. ^
  154. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: ""
  155. SELECT bool '' AS error;
  156. ^
  157. <sql-statement>
  158. -- and, or, not in qualifications
  159. SELECT bool 't' or bool 'f' AS true;
  160. </sql-statement>
  161. <sql-statement>
  162. SELECT bool 't' and bool 'f' AS false;
  163. </sql-statement>
  164. <sql-statement>
  165. SELECT not bool 'f' AS true;
  166. </sql-statement>
  167. <sql-statement>
  168. SELECT bool 't' = bool 'f' AS false;
  169. </sql-statement>
  170. <sql-statement>
  171. SELECT bool 't' <> bool 'f' AS true;
  172. </sql-statement>
  173. <sql-statement>
  174. SELECT bool 't' > bool 'f' AS true;
  175. </sql-statement>
  176. <sql-statement>
  177. SELECT bool 't' >= bool 'f' AS true;
  178. </sql-statement>
  179. <sql-statement>
  180. SELECT bool 'f' < bool 't' AS true;
  181. </sql-statement>
  182. <sql-statement>
  183. SELECT bool 'f' <= bool 't' AS true;
  184. </sql-statement>
  185. <sql-statement>
  186. -- explicit casts to/from text
  187. SELECT 'TrUe'::text::boolean AS true, 'fAlse'::text::boolean AS false;
  188. </sql-statement>
  189. <sql-statement>
  190. SELECT ' true '::text::boolean AS true,
  191. ' FALSE'::text::boolean AS false;
  192. </sql-statement>
  193. <sql-statement>
  194. SELECT true::boolean::text AS true, false::boolean::text AS false;
  195. </sql-statement>
  196. <sql-statement>
  197. SELECT ' tru e '::text::boolean AS invalid; -- error
  198. </sql-statement>
  199. -stdin-:<main>: Fatal: Execution
  200. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  201. SELECT ' tru e '::text::boolean AS invalid; -- error
  202. ^
  203. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: " tru e "
  204. SELECT ' tru e '::text::boolean AS invalid; -- error
  205. ^
  206. <sql-statement>
  207. SELECT ''::text::boolean AS invalid; -- error
  208. </sql-statement>
  209. -stdin-:<main>: Fatal: Execution
  210. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  211. SELECT ''::text::boolean AS invalid; -- error
  212. ^
  213. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: ""
  214. SELECT ''::text::boolean AS invalid; -- error
  215. ^
  216. <sql-statement>
  217. CREATE TABLE BOOLTBL1 (f1 bool);
  218. </sql-statement>
  219. <sql-statement>
  220. INSERT INTO BOOLTBL1 (f1) VALUES (bool 't');
  221. </sql-statement>
  222. <sql-statement>
  223. INSERT INTO BOOLTBL1 (f1) VALUES (bool 'True');
  224. </sql-statement>
  225. <sql-statement>
  226. INSERT INTO BOOLTBL1 (f1) VALUES (bool 'true');
  227. </sql-statement>
  228. <sql-statement>
  229. -- BOOLTBL1 should be full of true's at this point
  230. SELECT BOOLTBL1.* FROM BOOLTBL1;
  231. </sql-statement>
  232. <sql-statement>
  233. SELECT BOOLTBL1.*
  234. FROM BOOLTBL1
  235. WHERE f1 = bool 'true';
  236. </sql-statement>
  237. <sql-statement>
  238. SELECT BOOLTBL1.*
  239. FROM BOOLTBL1
  240. WHERE f1 <> bool 'false';
  241. </sql-statement>
  242. <sql-statement>
  243. SELECT BOOLTBL1.*
  244. FROM BOOLTBL1
  245. WHERE booleq(bool 'false', f1);
  246. </sql-statement>
  247. <sql-statement>
  248. INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f');
  249. </sql-statement>
  250. <sql-statement>
  251. SELECT BOOLTBL1.*
  252. FROM BOOLTBL1
  253. WHERE f1 = bool 'false';
  254. </sql-statement>
  255. <sql-statement>
  256. CREATE TABLE BOOLTBL2 (f1 bool);
  257. </sql-statement>
  258. <sql-statement>
  259. INSERT INTO BOOLTBL2 (f1) VALUES (bool 'f');
  260. </sql-statement>
  261. <sql-statement>
  262. INSERT INTO BOOLTBL2 (f1) VALUES (bool 'false');
  263. </sql-statement>
  264. <sql-statement>
  265. INSERT INTO BOOLTBL2 (f1) VALUES (bool 'False');
  266. </sql-statement>
  267. <sql-statement>
  268. INSERT INTO BOOLTBL2 (f1) VALUES (bool 'FALSE');
  269. </sql-statement>
  270. <sql-statement>
  271. -- This is now an invalid expression
  272. -- For pre-v6.3 this evaluated to false - thomas 1997-10-23
  273. INSERT INTO BOOLTBL2 (f1)
  274. VALUES (bool 'XXX');
  275. </sql-statement>
  276. -stdin-:<main>: Fatal: Execution
  277. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  278. -- This is now an invalid expression
  279. ^
  280. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type boolean: "XXX"
  281. -- This is now an invalid expression
  282. ^
  283. <sql-statement>
  284. -- BOOLTBL2 should be full of false's at this point
  285. SELECT BOOLTBL2.* FROM BOOLTBL2;
  286. </sql-statement>
  287. <sql-statement>
  288. SELECT BOOLTBL1.*, BOOLTBL2.*
  289. FROM BOOLTBL1, BOOLTBL2
  290. WHERE BOOLTBL2.f1 <> BOOLTBL1.f1;
  291. </sql-statement>
  292. -stdin-:<main>: Error: Type annotation
  293. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  294. SELECT BOOLTBL1.*, BOOLTBL2.*
  295. ^
  296. -stdin-:<main>:1:1: Error: Duplicated member: f1
  297. SELECT BOOLTBL1.*, BOOLTBL2.*
  298. ^
  299. <sql-statement>
  300. SELECT BOOLTBL1.*, BOOLTBL2.*
  301. FROM BOOLTBL1, BOOLTBL2
  302. WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1);
  303. </sql-statement>
  304. -stdin-:<main>: Error: Type annotation
  305. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  306. SELECT BOOLTBL1.*, BOOLTBL2.*
  307. ^
  308. -stdin-:<main>:1:1: Error: Duplicated member: f1
  309. SELECT BOOLTBL1.*, BOOLTBL2.*
  310. ^
  311. <sql-statement>
  312. SELECT BOOLTBL1.*, BOOLTBL2.*
  313. FROM BOOLTBL1, BOOLTBL2
  314. WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false';
  315. </sql-statement>
  316. -stdin-:<main>: Error: Type annotation
  317. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  318. SELECT BOOLTBL1.*, BOOLTBL2.*
  319. ^
  320. -stdin-:<main>:1:1: Error: Duplicated member: f1
  321. SELECT BOOLTBL1.*, BOOLTBL2.*
  322. ^
  323. <sql-statement>
  324. SELECT BOOLTBL1.*, BOOLTBL2.*
  325. FROM BOOLTBL1, BOOLTBL2
  326. WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true'
  327. ORDER BY BOOLTBL1.f1, BOOLTBL2.f1;
  328. </sql-statement>
  329. -stdin-:<main>: Error: Type annotation
  330. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  331. SELECT BOOLTBL1.*, BOOLTBL2.*
  332. ^
  333. -stdin-:<main>:1:1: Error: Duplicated member: f1
  334. SELECT BOOLTBL1.*, BOOLTBL2.*
  335. ^
  336. <sql-statement>
  337. --
  338. -- SQL syntax
  339. -- Try all combinations to ensure that we get nothing when we expect nothing
  340. -- - thomas 2000-01-04
  341. --
  342. SELECT f1
  343. FROM BOOLTBL1
  344. WHERE f1 IS TRUE;
  345. </sql-statement>
  346. <sql-statement>
  347. SELECT f1
  348. FROM BOOLTBL1
  349. WHERE f1 IS NOT FALSE;
  350. </sql-statement>
  351. <sql-statement>
  352. SELECT f1
  353. FROM BOOLTBL1
  354. WHERE f1 IS FALSE;
  355. </sql-statement>
  356. <sql-statement>
  357. SELECT f1
  358. FROM BOOLTBL1
  359. WHERE f1 IS NOT TRUE;
  360. </sql-statement>
  361. <sql-statement>
  362. SELECT f1
  363. FROM BOOLTBL2
  364. WHERE f1 IS TRUE;
  365. </sql-statement>
  366. <sql-statement>
  367. SELECT f1
  368. FROM BOOLTBL2
  369. WHERE f1 IS NOT FALSE;
  370. </sql-statement>
  371. <sql-statement>
  372. SELECT f1
  373. FROM BOOLTBL2
  374. WHERE f1 IS FALSE;
  375. </sql-statement>
  376. <sql-statement>
  377. SELECT f1
  378. FROM BOOLTBL2
  379. WHERE f1 IS NOT TRUE;
  380. </sql-statement>
  381. <sql-statement>
  382. --
  383. -- Tests for BooleanTest
  384. --
  385. CREATE TABLE BOOLTBL3 (d text, b bool, o int);
  386. </sql-statement>
  387. <sql-statement>
  388. INSERT INTO BOOLTBL3 (d, b, o) VALUES ('true', true, 1);
  389. </sql-statement>
  390. <sql-statement>
  391. INSERT INTO BOOLTBL3 (d, b, o) VALUES ('false', false, 2);
  392. </sql-statement>
  393. <sql-statement>
  394. INSERT INTO BOOLTBL3 (d, b, o) VALUES ('null', null, 3);
  395. </sql-statement>
  396. <sql-statement>
  397. SELECT
  398. d,
  399. b IS TRUE AS istrue,
  400. b IS NOT TRUE AS isnottrue,
  401. b IS FALSE AS isfalse,
  402. b IS NOT FALSE AS isnotfalse,
  403. b IS UNKNOWN AS isunknown,
  404. b IS NOT UNKNOWN AS isnotunknown
  405. FROM booltbl3 ORDER BY o;
  406. </sql-statement>
  407. -stdin-:<main>: Fatal: Table metadata loading
  408. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.booltbl3
  409. <sql-statement>
  410. -- Test to make sure short-circuiting and NULL handling is
  411. -- correct. Use a table as source to prevent constant simplification
  412. -- to interfer.
  413. CREATE TABLE booltbl4(isfalse bool, istrue bool, isnul bool);
  414. </sql-statement>
  415. <sql-statement>
  416. INSERT INTO booltbl4 VALUES (false, true, null);
  417. </sql-statement>
  418. <sql-statement>
  419. \pset null '(null)'
  420. </sql-statement>
  421. <sql-statement>
  422. -- AND expression need to return null if there's any nulls and not all
  423. -- of the value are true
  424. SELECT istrue AND isnul AND istrue FROM booltbl4;
  425. </sql-statement>
  426. <sql-statement>
  427. SELECT istrue AND istrue AND isnul FROM booltbl4;
  428. </sql-statement>
  429. <sql-statement>
  430. SELECT isnul AND istrue AND istrue FROM booltbl4;
  431. </sql-statement>
  432. <sql-statement>
  433. SELECT isfalse AND isnul AND istrue FROM booltbl4;
  434. </sql-statement>
  435. <sql-statement>
  436. SELECT istrue AND isfalse AND isnul FROM booltbl4;
  437. </sql-statement>
  438. <sql-statement>
  439. SELECT isnul AND istrue AND isfalse FROM booltbl4;
  440. </sql-statement>
  441. <sql-statement>
  442. -- OR expression need to return null if there's any nulls and none
  443. -- of the value is true
  444. SELECT isfalse OR isnul OR isfalse FROM booltbl4;
  445. </sql-statement>
  446. <sql-statement>
  447. SELECT isfalse OR isfalse OR isnul FROM booltbl4;
  448. </sql-statement>
  449. <sql-statement>
  450. SELECT isnul OR isfalse OR isfalse FROM booltbl4;
  451. </sql-statement>
  452. <sql-statement>
  453. SELECT isfalse OR isnul OR istrue FROM booltbl4;
  454. </sql-statement>
  455. <sql-statement>
  456. SELECT istrue OR isfalse OR isnul FROM booltbl4;
  457. </sql-statement>
  458. <sql-statement>
  459. SELECT isnul OR istrue OR isfalse FROM booltbl4;
  460. </sql-statement>
  461. <sql-statement>
  462. --
  463. -- Clean up
  464. -- Many tables are retained by the regression test, but these do not seem
  465. -- particularly useful so just get rid of them for now.
  466. -- - thomas 1997-11-30
  467. --
  468. DROP TABLE BOOLTBL1;
  469. </sql-statement>
  470. <sql-statement>
  471. DROP TABLE BOOLTBL2;
  472. </sql-statement>
  473. <sql-statement>
  474. DROP TABLE BOOLTBL3;
  475. </sql-statement>
  476. <sql-statement>
  477. DROP TABLE BOOLTBL4;
  478. </sql-statement>