bit.err 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  1. <sql-statement>
  2. --
  3. -- BIT types
  4. --
  5. --
  6. -- Build tables for testing
  7. --
  8. CREATE TABLE BIT_TABLE(b BIT(11));
  9. </sql-statement>
  10. <sql-statement>
  11. INSERT INTO BIT_TABLE VALUES (B'10'); -- too short
  12. </sql-statement>
  13. <sql-statement>
  14. INSERT INTO BIT_TABLE VALUES (B'00000000000');
  15. </sql-statement>
  16. <sql-statement>
  17. INSERT INTO BIT_TABLE VALUES (B'11011000000');
  18. </sql-statement>
  19. <sql-statement>
  20. INSERT INTO BIT_TABLE VALUES (B'01010101010');
  21. </sql-statement>
  22. <sql-statement>
  23. INSERT INTO BIT_TABLE VALUES (B'101011111010'); -- too long
  24. </sql-statement>
  25. <sql-statement>
  26. --INSERT INTO BIT_TABLE VALUES ('X554');
  27. --INSERT INTO BIT_TABLE VALUES ('X555');
  28. SELECT * FROM BIT_TABLE;
  29. </sql-statement>
  30. <sql-statement>
  31. CREATE TABLE VARBIT_TABLE(v BIT VARYING(11));
  32. </sql-statement>
  33. <sql-statement>
  34. INSERT INTO VARBIT_TABLE VALUES (B'');
  35. </sql-statement>
  36. <sql-statement>
  37. INSERT INTO VARBIT_TABLE VALUES (B'0');
  38. </sql-statement>
  39. <sql-statement>
  40. INSERT INTO VARBIT_TABLE VALUES (B'010101');
  41. </sql-statement>
  42. <sql-statement>
  43. INSERT INTO VARBIT_TABLE VALUES (B'01010101010');
  44. </sql-statement>
  45. <sql-statement>
  46. INSERT INTO VARBIT_TABLE VALUES (B'101011111010'); -- too long
  47. </sql-statement>
  48. <sql-statement>
  49. --INSERT INTO VARBIT_TABLE VALUES ('X554');
  50. --INSERT INTO VARBIT_TABLE VALUES ('X555');
  51. SELECT * FROM VARBIT_TABLE;
  52. </sql-statement>
  53. <sql-statement>
  54. -- Concatenation
  55. SELECT v, b, (v || b) AS concat
  56. FROM BIT_TABLE, VARBIT_TABLE
  57. ORDER BY 3;
  58. </sql-statement>
  59. <sql-statement>
  60. -- Length
  61. SELECT b, length(b) AS lb
  62. FROM BIT_TABLE;
  63. </sql-statement>
  64. <sql-statement>
  65. SELECT v, length(v) AS lv
  66. FROM VARBIT_TABLE;
  67. </sql-statement>
  68. <sql-statement>
  69. -- Substring
  70. SELECT b,
  71. SUBSTRING(b FROM 2 FOR 4) AS sub_2_4,
  72. SUBSTRING(b FROM 7 FOR 13) AS sub_7_13,
  73. SUBSTRING(b FROM 6) AS sub_6
  74. FROM BIT_TABLE;
  75. </sql-statement>
  76. <sql-statement>
  77. SELECT v,
  78. SUBSTRING(v FROM 2 FOR 4) AS sub_2_4,
  79. SUBSTRING(v FROM 7 FOR 13) AS sub_7_13,
  80. SUBSTRING(v FROM 6) AS sub_6
  81. FROM VARBIT_TABLE;
  82. </sql-statement>
  83. <sql-statement>
  84. -- test overflow cases
  85. SELECT SUBSTRING('01010101'::bit(8) FROM 2 FOR 2147483646) AS "1010101";
  86. </sql-statement>
  87. <sql-statement>
  88. SELECT SUBSTRING('01010101'::bit(8) FROM -10 FOR 2147483646) AS "01010101";
  89. </sql-statement>
  90. <sql-statement>
  91. SELECT SUBSTRING('01010101'::bit(8) FROM -10 FOR -2147483646) AS "error";
  92. </sql-statement>
  93. -stdin-:<main>: Fatal: Execution
  94. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  95. SELECT SUBSTRING('01010101'::bit(8) FROM -10 FOR -2147483646) AS "error";
  96. ^
  97. -stdin-:<main>:1:1: Fatal: ERROR: negative substring length not allowed
  98. SELECT SUBSTRING('01010101'::bit(8) FROM -10 FOR -2147483646) AS "error";
  99. ^
  100. <sql-statement>
  101. SELECT SUBSTRING('01010101'::varbit FROM 2 FOR 2147483646) AS "1010101";
  102. </sql-statement>
  103. <sql-statement>
  104. SELECT SUBSTRING('01010101'::varbit FROM -10 FOR 2147483646) AS "01010101";
  105. </sql-statement>
  106. <sql-statement>
  107. SELECT SUBSTRING('01010101'::varbit FROM -10 FOR -2147483646) AS "error";
  108. </sql-statement>
  109. -stdin-:<main>: Fatal: Execution
  110. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  111. SELECT SUBSTRING('01010101'::varbit FROM -10 FOR -2147483646) AS "error";
  112. ^
  113. -stdin-:<main>:1:1: Fatal: ERROR: negative substring length not allowed
  114. SELECT SUBSTRING('01010101'::varbit FROM -10 FOR -2147483646) AS "error";
  115. ^
  116. <sql-statement>
  117. --- Bit operations
  118. DROP TABLE varbit_table;
  119. </sql-statement>
  120. <sql-statement>
  121. CREATE TABLE varbit_table (a BIT VARYING(16), b BIT VARYING(16));
  122. </sql-statement>
  123. <sql-statement>
  124. COPY varbit_table FROM stdin;
  125. X0F X10
  126. X1F X11
  127. X2F X12
  128. X3F X13
  129. X8F X04
  130. X000F X0010
  131. X0123 XFFFF
  132. X2468 X2468
  133. XFA50 X05AF
  134. X1234 XFFF5
  135. \.
  136. </sql-statement>
  137. Metacommand \. is not supported
  138. <sql-statement>
  139. SELECT a, b, ~a AS "~ a", a & b AS "a & b",
  140. a | b AS "a | b", a # b AS "a # b" FROM varbit_table;
  141. </sql-statement>
  142. <sql-statement>
  143. SELECT a,b,a<b AS "a<b",a<=b AS "a<=b",a=b AS "a=b",
  144. a>=b AS "a>=b",a>b AS "a>b",a<>b AS "a<>b" FROM varbit_table;
  145. </sql-statement>
  146. <sql-statement>
  147. SELECT a,a<<4 AS "a<<4",b,b>>2 AS "b>>2" FROM varbit_table;
  148. </sql-statement>
  149. <sql-statement>
  150. DROP TABLE varbit_table;
  151. </sql-statement>
  152. <sql-statement>
  153. --- Bit operations
  154. DROP TABLE bit_table;
  155. </sql-statement>
  156. <sql-statement>
  157. CREATE TABLE bit_table (a BIT(16), b BIT(16));
  158. </sql-statement>
  159. <sql-statement>
  160. COPY bit_table FROM stdin;
  161. X0F00 X1000
  162. X1F00 X1100
  163. X2F00 X1200
  164. X3F00 X1300
  165. X8F00 X0400
  166. X000F X0010
  167. X0123 XFFFF
  168. X2468 X2468
  169. XFA50 X05AF
  170. X1234 XFFF5
  171. \.
  172. </sql-statement>
  173. Metacommand \. is not supported
  174. <sql-statement>
  175. SELECT a,b,~a AS "~ a",a & b AS "a & b",
  176. a|b AS "a | b", a # b AS "a # b" FROM bit_table;
  177. </sql-statement>
  178. <sql-statement>
  179. SELECT a,b,a<b AS "a<b",a<=b AS "a<=b",a=b AS "a=b",
  180. a>=b AS "a>=b",a>b AS "a>b",a<>b AS "a<>b" FROM bit_table;
  181. </sql-statement>
  182. <sql-statement>
  183. SELECT a,a<<4 AS "a<<4",b,b>>2 AS "b>>2" FROM bit_table;
  184. </sql-statement>
  185. <sql-statement>
  186. DROP TABLE bit_table;
  187. </sql-statement>
  188. <sql-statement>
  189. -- The following should fail
  190. select B'001' & B'10';
  191. </sql-statement>
  192. -stdin-:<main>: Fatal: Execution
  193. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  194. -- The following should fail
  195. ^
  196. -stdin-:<main>:1:1: Fatal: ERROR: cannot AND bit strings of different sizes
  197. -- The following should fail
  198. ^
  199. <sql-statement>
  200. select B'0111' | B'011';
  201. </sql-statement>
  202. -stdin-:<main>: Fatal: Execution
  203. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  204. select B'0111' | B'011';
  205. ^
  206. -stdin-:<main>:1:1: Fatal: ERROR: cannot OR bit strings of different sizes
  207. select B'0111' | B'011';
  208. ^
  209. <sql-statement>
  210. select B'0010' # B'011101';
  211. </sql-statement>
  212. -stdin-:<main>: Fatal: Execution
  213. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  214. select B'0010' # B'011101';
  215. ^
  216. -stdin-:<main>:1:1: Fatal: ERROR: cannot XOR bit strings of different sizes
  217. select B'0010' # B'011101';
  218. ^
  219. <sql-statement>
  220. -- More position tests, checking all the boundary cases
  221. SELECT POSITION(B'1010' IN B'0000101'); -- 0
  222. </sql-statement>
  223. <sql-statement>
  224. SELECT POSITION(B'1010' IN B'00001010'); -- 5
  225. </sql-statement>
  226. <sql-statement>
  227. SELECT POSITION(B'1010' IN B'00000101'); -- 0
  228. </sql-statement>
  229. <sql-statement>
  230. SELECT POSITION(B'1010' IN B'000001010'); -- 6
  231. </sql-statement>
  232. <sql-statement>
  233. SELECT POSITION(B'' IN B'00001010'); -- 1
  234. </sql-statement>
  235. <sql-statement>
  236. SELECT POSITION(B'0' IN B''); -- 0
  237. </sql-statement>
  238. <sql-statement>
  239. SELECT POSITION(B'' IN B''); -- 0
  240. </sql-statement>
  241. <sql-statement>
  242. SELECT POSITION(B'101101' IN B'001011011011011000'); -- 3
  243. </sql-statement>
  244. <sql-statement>
  245. SELECT POSITION(B'10110110' IN B'001011011011010'); -- 3
  246. </sql-statement>
  247. <sql-statement>
  248. SELECT POSITION(B'1011011011011' IN B'001011011011011'); -- 3
  249. </sql-statement>
  250. <sql-statement>
  251. SELECT POSITION(B'1011011011011' IN B'00001011011011011'); -- 5
  252. </sql-statement>
  253. <sql-statement>
  254. SELECT POSITION(B'11101011' IN B'11101011'); -- 1
  255. </sql-statement>
  256. <sql-statement>
  257. SELECT POSITION(B'11101011' IN B'011101011'); -- 2
  258. </sql-statement>
  259. <sql-statement>
  260. SELECT POSITION(B'11101011' IN B'00011101011'); -- 4
  261. </sql-statement>
  262. <sql-statement>
  263. SELECT POSITION(B'11101011' IN B'0000011101011'); -- 6
  264. </sql-statement>
  265. <sql-statement>
  266. SELECT POSITION(B'111010110' IN B'111010110'); -- 1
  267. </sql-statement>
  268. <sql-statement>
  269. SELECT POSITION(B'111010110' IN B'0111010110'); -- 2
  270. </sql-statement>
  271. <sql-statement>
  272. SELECT POSITION(B'111010110' IN B'000111010110'); -- 4
  273. </sql-statement>
  274. <sql-statement>
  275. SELECT POSITION(B'111010110' IN B'00000111010110'); -- 6
  276. </sql-statement>
  277. <sql-statement>
  278. SELECT POSITION(B'111010110' IN B'11101011'); -- 0
  279. </sql-statement>
  280. <sql-statement>
  281. SELECT POSITION(B'111010110' IN B'011101011'); -- 0
  282. </sql-statement>
  283. <sql-statement>
  284. SELECT POSITION(B'111010110' IN B'00011101011'); -- 0
  285. </sql-statement>
  286. <sql-statement>
  287. SELECT POSITION(B'111010110' IN B'0000011101011'); -- 0
  288. </sql-statement>
  289. <sql-statement>
  290. SELECT POSITION(B'111010110' IN B'111010110'); -- 1
  291. </sql-statement>
  292. <sql-statement>
  293. SELECT POSITION(B'111010110' IN B'0111010110'); -- 2
  294. </sql-statement>
  295. <sql-statement>
  296. SELECT POSITION(B'111010110' IN B'000111010110'); -- 4
  297. </sql-statement>
  298. <sql-statement>
  299. SELECT POSITION(B'111010110' IN B'00000111010110'); -- 6
  300. </sql-statement>
  301. <sql-statement>
  302. SELECT POSITION(B'111010110' IN B'000001110101111101011'); -- 0
  303. </sql-statement>
  304. <sql-statement>
  305. SELECT POSITION(B'111010110' IN B'0000001110101111101011'); -- 0
  306. </sql-statement>
  307. <sql-statement>
  308. SELECT POSITION(B'111010110' IN B'000000001110101111101011'); -- 0
  309. </sql-statement>
  310. <sql-statement>
  311. SELECT POSITION(B'111010110' IN B'00000000001110101111101011'); -- 0
  312. </sql-statement>
  313. <sql-statement>
  314. SELECT POSITION(B'111010110' IN B'0000011101011111010110'); -- 14
  315. </sql-statement>
  316. <sql-statement>
  317. SELECT POSITION(B'111010110' IN B'00000011101011111010110'); -- 15
  318. </sql-statement>
  319. <sql-statement>
  320. SELECT POSITION(B'111010110' IN B'0000000011101011111010110'); -- 17
  321. </sql-statement>
  322. <sql-statement>
  323. SELECT POSITION(B'111010110' IN B'000000000011101011111010110'); -- 19
  324. </sql-statement>
  325. <sql-statement>
  326. SELECT POSITION(B'000000000011101011111010110' IN B'000000000011101011111010110'); -- 1
  327. </sql-statement>
  328. <sql-statement>
  329. SELECT POSITION(B'00000000011101011111010110' IN B'000000000011101011111010110'); -- 2
  330. </sql-statement>
  331. <sql-statement>
  332. SELECT POSITION(B'0000000000011101011111010110' IN B'000000000011101011111010110'); -- 0
  333. </sql-statement>
  334. <sql-statement>
  335. -- Shifting
  336. CREATE TABLE BIT_SHIFT_TABLE(b BIT(16));
  337. </sql-statement>
  338. <sql-statement>
  339. INSERT INTO BIT_SHIFT_TABLE VALUES (B'1101100000000000');
  340. </sql-statement>
  341. <sql-statement>
  342. INSERT INTO BIT_SHIFT_TABLE SELECT b>>1 FROM BIT_SHIFT_TABLE;
  343. </sql-statement>
  344. <sql-statement>
  345. INSERT INTO BIT_SHIFT_TABLE SELECT b>>2 FROM BIT_SHIFT_TABLE;
  346. </sql-statement>
  347. <sql-statement>
  348. INSERT INTO BIT_SHIFT_TABLE SELECT b>>4 FROM BIT_SHIFT_TABLE;
  349. </sql-statement>
  350. <sql-statement>
  351. INSERT INTO BIT_SHIFT_TABLE SELECT b>>8 FROM BIT_SHIFT_TABLE;
  352. </sql-statement>
  353. <sql-statement>
  354. SELECT POSITION(B'1101' IN b),
  355. POSITION(B'11011' IN b),
  356. b
  357. FROM BIT_SHIFT_TABLE ;
  358. </sql-statement>
  359. -stdin-:<main>: Error: Type annotation
  360. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  361. SELECT POSITION(B'1101' IN b),
  362. ^
  363. -stdin-:<main>:1:1: Error: Duplicated member: position
  364. SELECT POSITION(B'1101' IN b),
  365. ^
  366. <sql-statement>
  367. SELECT b, b >> 1 AS bsr, b << 1 AS bsl
  368. FROM BIT_SHIFT_TABLE ;
  369. </sql-statement>
  370. <sql-statement>
  371. SELECT b, b >> 8 AS bsr8, b << 8 AS bsl8
  372. FROM BIT_SHIFT_TABLE ;
  373. </sql-statement>
  374. <sql-statement>
  375. SELECT b::bit(15), b::bit(15) >> 1 AS bsr, b::bit(15) << 1 AS bsl
  376. FROM BIT_SHIFT_TABLE ;
  377. </sql-statement>
  378. <sql-statement>
  379. SELECT b::bit(15), b::bit(15) >> 8 AS bsr8, b::bit(15) << 8 AS bsl8
  380. FROM BIT_SHIFT_TABLE ;
  381. </sql-statement>
  382. <sql-statement>
  383. CREATE TABLE VARBIT_SHIFT_TABLE(v BIT VARYING(20));
  384. </sql-statement>
  385. <sql-statement>
  386. INSERT INTO VARBIT_SHIFT_TABLE VALUES (B'11011');
  387. </sql-statement>
  388. <sql-statement>
  389. INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'0' AS BIT VARYING(6)) >>1 FROM VARBIT_SHIFT_TABLE;
  390. </sql-statement>
  391. <sql-statement>
  392. INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'00' AS BIT VARYING(8)) >>2 FROM VARBIT_SHIFT_TABLE;
  393. </sql-statement>
  394. <sql-statement>
  395. INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'0000' AS BIT VARYING(12)) >>4 FROM VARBIT_SHIFT_TABLE;
  396. </sql-statement>
  397. <sql-statement>
  398. INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'00000000' AS BIT VARYING(20)) >>8 FROM VARBIT_SHIFT_TABLE;
  399. </sql-statement>
  400. <sql-statement>
  401. SELECT POSITION(B'1101' IN v),
  402. POSITION(B'11011' IN v),
  403. v
  404. FROM VARBIT_SHIFT_TABLE ;
  405. </sql-statement>
  406. -stdin-:<main>: Error: Type annotation
  407. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  408. SELECT POSITION(B'1101' IN v),
  409. ^
  410. -stdin-:<main>:1:1: Error: Duplicated member: position
  411. SELECT POSITION(B'1101' IN v),
  412. ^
  413. <sql-statement>
  414. SELECT v, v >> 1 AS vsr, v << 1 AS vsl
  415. FROM VARBIT_SHIFT_TABLE ;
  416. </sql-statement>
  417. <sql-statement>
  418. SELECT v, v >> 8 AS vsr8, v << 8 AS vsl8
  419. FROM VARBIT_SHIFT_TABLE ;
  420. </sql-statement>
  421. <sql-statement>
  422. DROP TABLE BIT_SHIFT_TABLE;
  423. </sql-statement>
  424. <sql-statement>
  425. DROP TABLE VARBIT_SHIFT_TABLE;
  426. </sql-statement>
  427. <sql-statement>
  428. -- Get/Set bit
  429. SELECT get_bit(B'0101011000100', 10);
  430. </sql-statement>
  431. <sql-statement>
  432. SELECT set_bit(B'0101011000100100', 15, 1);
  433. </sql-statement>
  434. <sql-statement>
  435. SELECT set_bit(B'0101011000100100', 16, 1); -- fail
  436. </sql-statement>
  437. -stdin-:<main>: Fatal: Execution
  438. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  439. SELECT set_bit(B'0101011000100100', 16, 1); -- fail
  440. ^
  441. -stdin-:<main>:1:1: Fatal: ERROR: bit index 16 out of valid range (0..15)
  442. SELECT set_bit(B'0101011000100100', 16, 1); -- fail
  443. ^
  444. <sql-statement>
  445. -- Overlay
  446. SELECT overlay(B'0101011100' placing '001' from 2 for 3);
  447. </sql-statement>
  448. <sql-statement>
  449. SELECT overlay(B'0101011100' placing '101' from 6);
  450. </sql-statement>
  451. <sql-statement>
  452. SELECT overlay(B'0101011100' placing '001' from 11);
  453. </sql-statement>
  454. <sql-statement>
  455. SELECT overlay(B'0101011100' placing '001' from 20);
  456. </sql-statement>
  457. <sql-statement>
  458. -- bit_count
  459. SELECT bit_count(B'0101011100'::bit(10));
  460. </sql-statement>
  461. <sql-statement>
  462. SELECT bit_count(B'1111111111'::bit(10));
  463. </sql-statement>
  464. <sql-statement>
  465. -- This table is intentionally left around to exercise pg_dump/pg_upgrade
  466. CREATE TABLE bit_defaults(
  467. b1 bit(4) DEFAULT '1001',
  468. b2 bit(4) DEFAULT B'0101',
  469. b3 bit varying(5) DEFAULT '1001',
  470. b4 bit varying(5) DEFAULT B'0101'
  471. );
  472. </sql-statement>
  473. <sql-statement>
  474. \d bit_defaults
  475. </sql-statement>
  476. Metacommand \d bit_defaults is not supported
  477. <sql-statement>
  478. INSERT INTO bit_defaults DEFAULT VALUES;
  479. </sql-statement>
  480. -stdin-:<main>: Fatal: tools/enum_parser/enum_serialization_runtime/enum_runtime.cpp:70: Key 'default_values' not found in enum NYql::EYtSettingType. Valid options are: 'initial', 'infer_scheme', 'force_infer_schema', 'do_not_fail_on_invalid_schema', 'direct_read', 'view', 'mode', 'scheme', 'weak_concat', 'anonymous', 'with_qb', 'inline', 'sample', 'joinLabel', 'ignore_non_existing', 'warn_non_existing', 'xlock', 'unordered', 'nonUnique', 'userschema', 'usercolumns', 'statcolumns', 'syscolumns', 'ignoretypev3', 'memUsage', 'itemsCount', 'rowFactor', 'ordered', 'keyFilter', 'keyFilter2', 'take', 'skip', 'limit', 'sortLimitBy', 'sortBy', 'reduceBy', 'reduceFilterBy', 'forceTransform', 'weakFields', 'sharded', 'combineChunks', 'jobCount', 'joinReduce', 'firstAsPrimary', 'flow', 'keepSorted', 'keySwitch', 'uniqueBy', 'opHash', 'mapOutputType', 'reduceInputType', 'noDq', 'split', 'compression_codec', 'erasure_codec', 'expiration', 'replication_factor', 'user_attrs', 'media', 'primary_medium', 'keep_meta', 'monotonic_keys', 'mutationid'.
  481. <sql-statement>
  482. TABLE bit_defaults;
  483. </sql-statement>