unsigned_int.slt 17 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. query I
  10. SELECT 42::uint2
  11. ----
  12. 42
  13. query I
  14. SELECT 32768::uint2
  15. ----
  16. 32768
  17. query T
  18. SELECT pg_typeof(42::uint2)
  19. ----
  20. uint2
  21. query error "-666" uint2 out of range
  22. SELECT -666::uint2
  23. query error "65536" uint2 out of range
  24. SELECT 65536::uint2
  25. query I
  26. SELECT 42::uint4
  27. ----
  28. 42
  29. query I
  30. SELECT 65536::uint4
  31. ----
  32. 65536
  33. query I
  34. SELECT 2147483648::uint4
  35. ----
  36. 2147483648
  37. query T
  38. SELECT pg_typeof(42::uint4)
  39. ----
  40. uint4
  41. query error "-666" uint4 out of range
  42. SELECT -666::uint4
  43. query error "4294967296" uint4 out of range
  44. SELECT 4294967296::uint4
  45. query I
  46. SELECT 42::uint8
  47. ----
  48. 42
  49. query I
  50. SELECT 65536::uint8
  51. ----
  52. 65536
  53. query I
  54. SELECT 4294967296::uint8
  55. ----
  56. 4294967296
  57. query I
  58. SELECT 9223372036854775808::uint8
  59. ----
  60. 9223372036854775808
  61. query T
  62. SELECT pg_typeof(42::uint8)
  63. ----
  64. uint8
  65. query error "-666" uint8 out of range
  66. SELECT -666::uint8
  67. query error "18446744073709551616" uint8 out of range
  68. SELECT 18446744073709551616::uint8
  69. statement ok
  70. CREATE TABLE t2 (a uint2)
  71. statement ok
  72. INSERT INTO t2 VALUES (13)
  73. statement ok
  74. INSERT INTO t2 VALUES (32768)
  75. statement error "65536" uint2 out of range
  76. INSERT INTO t2 VALUES (65536)
  77. statement error "-13" uint2 out of range
  78. INSERT INTO t2 VALUES (-13)
  79. query I rowsort
  80. SELECT a from t2
  81. ----
  82. 13
  83. 32768
  84. statement ok
  85. CREATE TABLE t4 (a uint4)
  86. statement ok
  87. INSERT INTO t4 VALUES (13), (65536), (2147483648)
  88. statement error "4294967296" uint4 out of range
  89. INSERT INTO t4 VALUES (4294967296)
  90. statement error "-13" uint4 out of range
  91. INSERT INTO t4 VALUES (-13)
  92. query I rowsort
  93. SELECT a FROM t4
  94. ----
  95. 13
  96. 2147483648
  97. 65536
  98. statement ok
  99. CREATE TABLE t8 (a uint8)
  100. statement ok
  101. INSERT INTO t8 VALUES (13), (65536), (4294967296), (9223372036854775808)
  102. statement error "18446744073709551616" uint8 out of range
  103. INSERT INTO t8 VALUES (18446744073709551616)
  104. statement error "-13" uint8 out of range
  105. INSERT INTO t8 VALUES (-13)
  106. query I rowsort
  107. SELECT a FROM t8
  108. ----
  109. 13
  110. 4294967296
  111. 65536
  112. 9223372036854775808
  113. # Test casts to/from unsigned integers
  114. # From int2
  115. query I
  116. SELECT 21::int2::uint2
  117. ----
  118. 21
  119. query error "-21" uint2 out of range
  120. SELECT -21::int2::uint2
  121. query I
  122. SELECT 47::int2::uint4
  123. ----
  124. 47
  125. query error "-47" uint4 out of range
  126. SELECT -47::int2::uint4
  127. query I
  128. SELECT 99::int2::uint8
  129. ----
  130. 99
  131. query error "-99" uint8 out of range
  132. SELECT -99::int2::uint8
  133. # From int4
  134. query I
  135. SELECT 21::int4::uint2
  136. ----
  137. 21
  138. query error "-21" uint2 out of range
  139. SELECT -21::int4::uint2
  140. query error "65536" uint2 out of range
  141. SELECT 65536::int4::uint2
  142. query I
  143. SELECT 47::int4::uint4
  144. ----
  145. 47
  146. query I
  147. SELECT 65536::int4::uint4
  148. ----
  149. 65536
  150. query error "-47" uint4 out of range
  151. SELECT -47::int4::uint4
  152. query I
  153. SELECT 99::int4::uint8
  154. ----
  155. 99
  156. query I
  157. SELECT 65536::int4::uint8
  158. ----
  159. 65536
  160. query error "-99" uint8 out of range
  161. SELECT -99::int4::uint8
  162. # From int8
  163. query I
  164. SELECT 21::int8::uint2
  165. ----
  166. 21
  167. query error "-21" uint2 out of range
  168. SELECT -21::int8::uint2
  169. query error "65536" uint2 out of range
  170. SELECT 65536::int8::uint2
  171. query I
  172. SELECT 47::int8::uint4
  173. ----
  174. 47
  175. query I
  176. SELECT 65536::int8::uint4
  177. ----
  178. 65536
  179. query error uint4 out of range
  180. SELECT -47::int8::uint4
  181. query error "4294967296" uint4 out of range
  182. SELECT 4294967296::int8::uint4
  183. query I
  184. SELECT 99::int8::uint8
  185. ----
  186. 99
  187. query I
  188. SELECT 65536::int8::uint8
  189. ----
  190. 65536
  191. query I
  192. SELECT 4294967296::int8::uint8
  193. ----
  194. 4294967296
  195. query error "-99" uint8 out of range
  196. SELECT -99::int8::uint8
  197. # From numeric
  198. query I
  199. SELECT 12.0::numeric::uint2
  200. ----
  201. 12
  202. query I
  203. SELECT 12.4::numeric::uint2
  204. ----
  205. 12
  206. query I
  207. SELECT 12.6::numeric::uint2
  208. ----
  209. 13
  210. query error "-12" uint2 out of range
  211. SELECT -12.0::numeric::uint2
  212. query error "65536" uint2 out of range
  213. SELECT 65536.0::numeric::uint2
  214. query I
  215. SELECT 65535.4::numeric::uint2
  216. ----
  217. 65535
  218. query error "65536" uint2 out of range
  219. SELECT 65535.5::numeric::uint2
  220. query I
  221. SELECT 12.0::numeric::uint4
  222. ----
  223. 12
  224. query I
  225. SELECT 12.4::numeric::uint4
  226. ----
  227. 12
  228. query I
  229. SELECT 12.6::numeric::uint4
  230. ----
  231. 13
  232. query I
  233. SELECT 65536.0::numeric::uint4
  234. ----
  235. 65536
  236. query error uint4 out of range
  237. SELECT -12.0::numeric::uint4
  238. query error uint4 out of range
  239. SELECT 4294967296::numeric::uint4
  240. query I
  241. SELECT 4294967295.4::numeric::uint4
  242. ----
  243. 4294967295
  244. query error uint4 out of range
  245. SELECT 4294967295.5::numeric::uint4
  246. query I
  247. SELECT 12.0::numeric::uint8
  248. ----
  249. 12
  250. query I
  251. SELECT 12.4::numeric::uint8
  252. ----
  253. 12
  254. query I
  255. SELECT 12.6::numeric::uint8
  256. ----
  257. 13
  258. query I
  259. SELECT 65536.0::numeric::uint8
  260. ----
  261. 65536
  262. query I
  263. SELECT 4294967296.0::numeric::uint8
  264. ----
  265. 4294967296
  266. query error "-12" uint8 out of range
  267. SELECT -12.0::numeric::uint8
  268. query error "18446744073709551616" uint8 out of range
  269. SELECT 18446744073709551616::numeric::uint8
  270. query I
  271. SELECT 18446744073709551615.4::numeric::uint8
  272. ----
  273. 18446744073709551615
  274. query error "18446744073709551616" uint8 out of range
  275. SELECT 18446744073709551615.5::numeric::uint8
  276. # From float32
  277. query I
  278. SELECT 12.0::float::uint2
  279. ----
  280. 12
  281. query I
  282. SELECT 12.4::float::uint2
  283. ----
  284. 12
  285. query I
  286. SELECT 12.6::float::uint2
  287. ----
  288. 13
  289. query error "-12" uint2 out of range
  290. SELECT -12.0::float::uint2
  291. query error "65536" uint2 out of range
  292. SELECT 65536.0::float::uint2
  293. query I
  294. SELECT 65535.4::float::uint2
  295. ----
  296. 65535
  297. query error "65536" uint2 out of range
  298. SELECT 65535.5::float::uint2
  299. query I
  300. SELECT 12.0::float::uint4
  301. ----
  302. 12
  303. query I
  304. SELECT 12.4::float::uint4
  305. ----
  306. 12
  307. query I
  308. SELECT 12.6::float::uint4
  309. ----
  310. 13
  311. query I
  312. SELECT 65536.0::float::uint4
  313. ----
  314. 65536
  315. query error uint4 out of range
  316. SELECT -12.0::float::uint4
  317. query error uint4 out of range
  318. SELECT 4294967296::float::uint4
  319. query I
  320. SELECT 4294967295.4::float::uint4
  321. ----
  322. 4294967295
  323. query error uint4 out of range
  324. SELECT 4294967295.5::float::uint4
  325. query I
  326. SELECT 12.0::float::uint8
  327. ----
  328. 12
  329. query I
  330. SELECT 12.4::float::uint8
  331. ----
  332. 12
  333. query I
  334. SELECT 12.6::float::uint8
  335. ----
  336. 13
  337. query I
  338. SELECT 65536.0::float::uint8
  339. ----
  340. 65536
  341. query I
  342. SELECT 4294967296.0::float::uint8
  343. ----
  344. 4294967296
  345. query error "-12" uint8 out of range
  346. SELECT -12.0::float::uint8
  347. query error "18446744073709556000" uint8 out of range
  348. SELECT 18446744073709553665::float::uint8
  349. query I
  350. SELECT 18446744073709553664.0::float::uint8
  351. ----
  352. 18446744073709551615
  353. query error "18446744073709556000" uint8 out of range
  354. SELECT 18446744073709553664.5::float::uint8
  355. # From float64
  356. query I
  357. SELECT 12.0::double::uint2
  358. ----
  359. 12
  360. query I
  361. SELECT 12.4::double::uint2
  362. ----
  363. 12
  364. query I
  365. SELECT 12.6::double::uint2
  366. ----
  367. 13
  368. query error "-12" uint2 out of range
  369. SELECT -12.0::double::uint2
  370. query error "65536" uint2 out of range
  371. SELECT 65536.0::double::uint2
  372. query I
  373. SELECT 65535.4::double::uint2
  374. ----
  375. 65535
  376. query error "65536" uint2 out of range
  377. SELECT 65535.5::double::uint2
  378. query I
  379. SELECT 12.0::double::uint4
  380. ----
  381. 12
  382. query I
  383. SELECT 12.4::double::uint4
  384. ----
  385. 12
  386. query I
  387. SELECT 12.6::double::uint4
  388. ----
  389. 13
  390. query I
  391. SELECT 65536.0::double::uint4
  392. ----
  393. 65536
  394. query error uint4 out of range
  395. SELECT -12.0::double::uint4
  396. query error uint4 out of range
  397. SELECT 4294967296::double::uint4
  398. query I
  399. SELECT 4294967295.4::double::uint4
  400. ----
  401. 4294967295
  402. query error uint4 out of range
  403. SELECT 4294967295.5::double::uint4
  404. query I
  405. SELECT 12.0::double::uint8
  406. ----
  407. 12
  408. query I
  409. SELECT 12.4::double::uint8
  410. ----
  411. 12
  412. query I
  413. SELECT 12.6::double::uint8
  414. ----
  415. 13
  416. query I
  417. SELECT 65536.0::double::uint8
  418. ----
  419. 65536
  420. query I
  421. SELECT 4294967296.0::double::uint8
  422. ----
  423. 4294967296
  424. query error "-12" uint8 out of range
  425. SELECT -12.0::double::uint8
  426. query error "18446744073709556000" uint8 out of range
  427. SELECT 18446744073709553665::double::uint8
  428. query I
  429. SELECT 18446744073709553664.0::double::uint8
  430. ----
  431. 18446744073709551615
  432. query error "18446744073709556000" uint8 out of range
  433. SELECT 18446744073709553664.5::double::uint8
  434. # From text
  435. query I
  436. SELECT '44'::uint2
  437. ----
  438. 44
  439. query error invalid input syntax for type uint2: invalid digit found in string: "-44"
  440. SELECT '-44'::uint2
  441. query error invalid input syntax for type uint2: number too large to fit in target type: "65536"
  442. SELECT '65536'::uint2
  443. query I
  444. SELECT '44'::uint4
  445. ----
  446. 44
  447. query error invalid input syntax for type uint4: invalid digit found in string: "-44"
  448. SELECT '-44'::uint4
  449. query error invalid input syntax for type uint4: number too large to fit in target type: "4294967296"
  450. SELECT '4294967296'::uint4
  451. query I
  452. SELECT '44'::uint8
  453. ----
  454. 44
  455. query error invalid input syntax for type uint8: invalid digit found in string: "-44"
  456. SELECT '-44'::uint8
  457. query error invalid input syntax for type uint8: number too large to fit in target type: "18446744073709551616"
  458. SELECT '18446744073709551616'::uint8
  459. # From uint2
  460. query I
  461. SELECT 124::uint2::uint4
  462. ----
  463. 124
  464. query I
  465. SELECT 124::uint2::uint8
  466. ----
  467. 124
  468. query I
  469. SELECT 124::uint2::int4
  470. ----
  471. 124
  472. query I
  473. SELECT 124::uint2::int8
  474. ----
  475. 124
  476. query I
  477. SELECT 124::uint2::numeric
  478. ----
  479. 124
  480. query I
  481. SELECT 124::uint2::real
  482. ----
  483. 124
  484. query I
  485. SELECT 124::uint2::double
  486. ----
  487. 124
  488. query T
  489. SELECT 124::uint2::text
  490. ----
  491. 124
  492. # From uint4
  493. query I
  494. SELECT 6789::uint4::uint2
  495. ----
  496. 6789
  497. query error "65536" uint2 out of range
  498. SELECT 65536::uint4::uint2
  499. query I
  500. SELECT 6789::uint4::uint8
  501. ----
  502. 6789
  503. query I
  504. SELECT 6789::uint4::int4
  505. ----
  506. 6789
  507. query error "2147483648" integer out of range
  508. SELECT 2147483648::uint4::int4
  509. query I
  510. SELECT 6789::uint4::int8
  511. ----
  512. 6789
  513. query I
  514. SELECT 6789::uint4::numeric
  515. ----
  516. 6789
  517. query I
  518. SELECT 6789::uint4::real
  519. ----
  520. 6789
  521. query I
  522. SELECT 6789::uint4::double
  523. ----
  524. 6789
  525. query T
  526. SELECT 6789::uint4::text
  527. ----
  528. 6789
  529. # From uint8
  530. query I
  531. SELECT 15445::uint8::uint2
  532. ----
  533. 15445
  534. query error "65536" uint2 out of range
  535. SELECT 65536::uint8::uint2
  536. query I
  537. SELECT 15445::uint8::uint4
  538. ----
  539. 15445
  540. query error uint4 out of range
  541. SELECT 4294967296::uint8::uint4
  542. query I
  543. SELECT 15445::uint8::int4
  544. ----
  545. 15445
  546. query error "2147483648" integer out of range
  547. SELECT 2147483648::uint8::int4
  548. query I
  549. SELECT 15445::uint8::int8
  550. ----
  551. 15445
  552. query error "9223372036854775808" bigint out of range
  553. SELECT 9223372036854775808::uint8::int8
  554. query I
  555. SELECT 15445::uint8::numeric
  556. ----
  557. 15445
  558. query I
  559. SELECT 15445::uint8::real
  560. ----
  561. 15445
  562. query I
  563. SELECT 15445::uint8::double
  564. ----
  565. 15445
  566. query T
  567. SELECT 15445::uint8::text
  568. ----
  569. 15445
  570. # Test arithmetic
  571. # Addition
  572. query I
  573. SELECT 10::uint2 + 3::uint2
  574. ----
  575. 13
  576. query error "65535 \+ 1" uint2 out of range
  577. SELECT 65535::uint2 + 1::uint2
  578. query I
  579. SELECT 10::uint4 + 3::uint4
  580. ----
  581. 13
  582. query I
  583. SELECT 32767::uint4 + 1::uint4
  584. ----
  585. 32768
  586. query error uint4 out of range
  587. SELECT 4294967295::uint4 + 1::uint4
  588. query I
  589. SELECT 10::uint8 + 3::uint8
  590. ----
  591. 13
  592. query I
  593. SELECT 32767::uint8 + 1::uint8
  594. ----
  595. 32768
  596. query I
  597. SELECT 4294967295::uint8 + 1::uint8
  598. ----
  599. 4294967296
  600. query error "18446744073709551615 \+ 1" uint8 out of range
  601. SELECT 18446744073709551615::uint8 + 1::uint8
  602. # Subtraction
  603. query I
  604. SELECT 45::uint2 - 3::uint2
  605. ----
  606. 42
  607. query error "45 - 50" uint2 out of range
  608. SELECT 45::uint2 - 50::uint2
  609. query I
  610. SELECT 45::uint4 - 3::uint4
  611. ----
  612. 42
  613. query error uint4 out of range
  614. SELECT 45::uint4 - 50::uint4
  615. query I
  616. SELECT 45::uint8 - 3::uint8
  617. ----
  618. 42
  619. query error "45 - 50" uint8 out of range
  620. SELECT 45::uint8 - 50::uint8
  621. # Multiplication
  622. query I
  623. SELECT 10::uint2 * 3::uint2
  624. ----
  625. 30
  626. query error "65535 \* 2" uint2 out of range
  627. SELECT 65535::uint2 * 2::uint2
  628. query I
  629. SELECT 10::uint4 * 3::uint4
  630. ----
  631. 30
  632. query I
  633. SELECT 32767::uint4 * 2::uint4
  634. ----
  635. 65534
  636. query error uint4 out of range
  637. SELECT 4294967295::uint4 * 2::uint4
  638. query I
  639. SELECT 10::uint8 * 3::uint8
  640. ----
  641. 30
  642. query I
  643. SELECT 32767::uint8 * 2::uint8
  644. ----
  645. 65534
  646. query I
  647. SELECT 4294967295::uint8 * 2::uint8
  648. ----
  649. 8589934590
  650. query error "18446744073709551615 \* 2" uint8 out of range
  651. SELECT 18446744073709551615::uint8 * 2::uint8
  652. # Division
  653. query I
  654. SELECT 20::uint2 / 2::uint2
  655. ----
  656. 10
  657. query error division by zero
  658. SELECT 20::uint2 / 0::uint2
  659. query I
  660. SELECT 20::uint4 / 2::uint4
  661. ----
  662. 10
  663. query error division by zero
  664. SELECT 20::uint4 / 0::uint4
  665. query I
  666. SELECT 20::uint8 / 2::uint8
  667. ----
  668. 10
  669. query error division by zero
  670. SELECT 20::uint8 / 0::uint8
  671. # Modulo
  672. query I
  673. SELECT 13::uint2 % 5::uint2
  674. ----
  675. 3
  676. query error division by zero
  677. SELECT 66::uint2 % 0::uint2
  678. query I
  679. SELECT 13::uint4 % 5::uint4
  680. ----
  681. 3
  682. query error division by zero
  683. SELECT 66::uint4 % 0::uint4
  684. query I
  685. SELECT 13::uint8 % 5::uint8
  686. ----
  687. 3
  688. query error division by zero
  689. SELECT 66::uint8 % 0::uint8
  690. query I
  691. SELECT MOD(13::uint2, 5::uint2)
  692. ----
  693. 3
  694. query error division by zero
  695. SELECT MOD(66::uint2, 0::uint2)
  696. query I
  697. SELECT MOD(13::uint4, 5::uint4)
  698. ----
  699. 3
  700. query error division by zero
  701. SELECT MOD(66::uint4, 0::uint4)
  702. query I
  703. SELECT MOD(13::uint8, 5::uint8)
  704. ----
  705. 3
  706. query error division by zero
  707. SELECT MOD(66::uint8, 0::uint8)
  708. # And
  709. query I
  710. SELECT 4::uint2 & 5::uint2
  711. ----
  712. 4
  713. query I
  714. SELECT 4::uint4 & 5::uint4
  715. ----
  716. 4
  717. query I
  718. SELECT 4::uint8 & 5::uint8
  719. ----
  720. 4
  721. # Or
  722. query I
  723. SELECT 4::uint2 | 5::uint2
  724. ----
  725. 5
  726. query I
  727. SELECT 4::uint4 | 5::uint4
  728. ----
  729. 5
  730. query I
  731. SELECT 4::uint8 | 5::uint8
  732. ----
  733. 5
  734. # Xor
  735. query I
  736. SELECT 4::uint2 # 5::uint2
  737. ----
  738. 1
  739. query I
  740. SELECT 4::uint4 # 5::uint4
  741. ----
  742. 1
  743. query I
  744. SELECT 4::uint8 # 5::uint8
  745. ----
  746. 1
  747. # Shift Left
  748. query I
  749. SELECT 64::uint2 << 1::uint4
  750. ----
  751. 128
  752. query I
  753. SELECT 64::uint4 << 1::uint4
  754. ----
  755. 128
  756. query I
  757. SELECT 64::uint8 << 1::uint4
  758. ----
  759. 128
  760. # Shift Right
  761. query I
  762. SELECT 64::uint2 >> 1::uint4
  763. ----
  764. 32
  765. query I
  766. SELECT 64::uint4 >> 1::uint4
  767. ----
  768. 32
  769. query I
  770. SELECT 64::uint8 >> 1::uint4
  771. ----
  772. 32
  773. # Not
  774. query I
  775. SELECT ~42::uint2
  776. ----
  777. 65493
  778. query I
  779. SELECT ~42::uint4
  780. ----
  781. 4294967253
  782. query I
  783. SELECT ~42::uint8
  784. ----
  785. 18446744073709551573
  786. # LT
  787. query B
  788. SELECT 1::uint2 < 2::uint2
  789. ----
  790. true
  791. query B
  792. SELECT 5::uint2 < 2::uint2
  793. ----
  794. false
  795. query B
  796. SELECT 1::uint4 < 2::uint4
  797. ----
  798. true
  799. query B
  800. SELECT 5::uint4 < 2::uint4
  801. ----
  802. false
  803. query B
  804. SELECT 1::uint8 < 2::uint8
  805. ----
  806. true
  807. query B
  808. SELECT 5::uint8 < 2::uint8
  809. ----
  810. false
  811. # LTE
  812. query B
  813. SELECT 1::uint2 <= 2::uint2
  814. ----
  815. true
  816. query B
  817. SELECT 5::uint2 <= 2::uint2
  818. ----
  819. false
  820. query B
  821. SELECT 23::uint2 <= 23::uint2
  822. ----
  823. true
  824. query B
  825. SELECT 1::uint4 <= 2::uint4
  826. ----
  827. true
  828. query B
  829. SELECT 5::uint4 <= 2::uint4
  830. ----
  831. false
  832. query B
  833. SELECT 23::uint4 <= 23::uint4
  834. ----
  835. true
  836. query B
  837. SELECT 1::uint8 <= 2::uint8
  838. ----
  839. true
  840. query B
  841. SELECT 5::uint8 <= 2::uint8
  842. ----
  843. false
  844. query B
  845. SELECT 23::uint8 <= 23::uint8
  846. ----
  847. true
  848. # GT
  849. query B
  850. SELECT 1::uint2 > 2::uint2
  851. ----
  852. false
  853. query B
  854. SELECT 5::uint2 > 2::uint2
  855. ----
  856. true
  857. query B
  858. SELECT 1::uint4 > 2::uint4
  859. ----
  860. false
  861. query B
  862. SELECT 5::uint4 > 2::uint4
  863. ----
  864. true
  865. query B
  866. SELECT 1::uint8 > 2::uint8
  867. ----
  868. false
  869. query B
  870. SELECT 5::uint8 > 2::uint8
  871. ----
  872. true
  873. # GTE
  874. query B
  875. SELECT 1::uint2 >= 2::uint2
  876. ----
  877. false
  878. query B
  879. SELECT 5::uint2 >= 2::uint2
  880. ----
  881. true
  882. query B
  883. SELECT 23::uint2 >= 23::uint2
  884. ----
  885. true
  886. query B
  887. SELECT 1::uint4 >= 2::uint4
  888. ----
  889. false
  890. query B
  891. SELECT 5::uint4 >= 2::uint4
  892. ----
  893. true
  894. query B
  895. SELECT 23::uint4 >= 23::uint4
  896. ----
  897. true
  898. query B
  899. SELECT 1::uint8 >= 2::uint8
  900. ----
  901. false
  902. query B
  903. SELECT 5::uint8 >= 2::uint8
  904. ----
  905. true
  906. query B
  907. SELECT 23::uint8 >= 23::uint8
  908. ----
  909. true
  910. # EQ
  911. query B
  912. SELECT 18::uint2 = 18::uint2
  913. ----
  914. true
  915. query B
  916. SELECT 18::uint2 = 36::uint2
  917. ----
  918. false
  919. query B
  920. SELECT 18::uint4 = 18::uint4
  921. ----
  922. true
  923. query B
  924. SELECT 18::uint8 = 36::uint8
  925. ----
  926. false
  927. query B
  928. SELECT 18::uint8 = 18::uint8
  929. ----
  930. true
  931. query B
  932. SELECT 18::uint8 = 36::uint8
  933. ----
  934. false
  935. # Not EQ
  936. query B
  937. SELECT 18::uint2 <> 18::uint2
  938. ----
  939. false
  940. query B
  941. SELECT 18::uint2 <> 36::uint2
  942. ----
  943. true
  944. query B
  945. SELECT 18::uint4 <> 18::uint4
  946. ----
  947. false
  948. query B
  949. SELECT 18::uint8 <> 36::uint8
  950. ----
  951. true
  952. query B
  953. SELECT 18::uint8 <> 18::uint8
  954. ----
  955. false
  956. query B
  957. SELECT 18::uint8 <> 36::uint8
  958. ----
  959. true
  960. # Max
  961. query I
  962. SELECT MAX(a) FROM t2
  963. ----
  964. 32768
  965. query I
  966. SELECT MAX(a) FROM t4
  967. ----
  968. 2147483648
  969. query I
  970. SELECT MAX(a) FROM t8
  971. ----
  972. 9223372036854775808
  973. # Min
  974. query I
  975. SELECT MIN(a) FROM t2
  976. ----
  977. 13
  978. query I
  979. SELECT MIN(a) FROM t4
  980. ----
  981. 13
  982. query I
  983. SELECT MIN(a) FROM t8
  984. ----
  985. 13
  986. # Avg
  987. query R
  988. SELECT AVG(a) FROM t2
  989. ----
  990. 16390.5
  991. query R
  992. SELECT AVG(a) FROM t4
  993. ----
  994. 715849732.333
  995. query R
  996. SELECT AVG(a) FROM t8
  997. ----
  998. 2305843010287452163.25
  999. # Stddev
  1000. query R
  1001. SELECT STDDEV(a) FROM t2
  1002. ----
  1003. 23161.283
  1004. query R
  1005. SELECT STDDEV(a) FROM t4
  1006. ----
  1007. 1239831340.320
  1008. # This query no longer overflows, since we avoid transiting through floating-point
  1009. # intermediates when computing average-related functions over integer data.
  1010. query R
  1011. SELECT STDDEV(a) FROM t8
  1012. ----
  1013. 4611686017711549096.944
  1014. # Avoid overflow (known issue https://github.com/MaterializeInc/database-issues/issues/4341)
  1015. statement ok
  1016. DROP TABLE t8
  1017. statement ok
  1018. CREATE TABLE t8 (a uint8)
  1019. statement ok
  1020. INSERT INTO t8 VALUES (23), (55)
  1021. query R
  1022. SELECT STDDEV(a) FROM t8
  1023. ----
  1024. 22.627
  1025. # Stddev Pop
  1026. query R
  1027. SELECT STDDEV_POP(a) FROM t2
  1028. ----
  1029. 16377.5
  1030. query R
  1031. SELECT STDDEV_POP(a) FROM t4
  1032. ----
  1033. 1012318050.298
  1034. query R
  1035. SELECT STDDEV_POP(a) FROM t8
  1036. ----
  1037. 16
  1038. # Stddev Samp
  1039. query R
  1040. SELECT STDDEV_SAMP(a) FROM t2
  1041. ----
  1042. 23161.283
  1043. query R
  1044. SELECT STDDEV_SAMP(a) FROM t4
  1045. ----
  1046. 1239831340.320
  1047. query R
  1048. SELECT STDDEV_SAMP(a) FROM t8
  1049. ----
  1050. 22.627
  1051. # Variance
  1052. query R
  1053. SELECT VARIANCE(a) FROM t2
  1054. ----
  1055. 536445012.5
  1056. query R
  1057. SELECT VARIANCE(a) FROM t4
  1058. ----
  1059. 1537181752438620216.333
  1060. query R
  1061. SELECT VARIANCE(a) FROM t8
  1062. ----
  1063. 512
  1064. # Var Pop
  1065. query R
  1066. SELECT VAR_POP(a) FROM t2
  1067. ----
  1068. 268222506.25
  1069. query R
  1070. SELECT VAR_POP(a) FROM t4
  1071. ----
  1072. 1024787834959080144.222
  1073. query R
  1074. SELECT VAR_POP(a) FROM t8
  1075. ----
  1076. 256
  1077. # Var Samp
  1078. query R
  1079. SELECT VAR_SAMP(a) FROM t2
  1080. ----
  1081. 536445012.5
  1082. query R
  1083. SELECT VAR_SAMP(a) FROM t4
  1084. ----
  1085. 1537181752438620216.333
  1086. query R
  1087. SELECT VAR_SAMP(a) FROM t8
  1088. ----
  1089. 512
  1090. # Dropping rows
  1091. statement ok
  1092. DELETE FROM t2 WHERE a = 13
  1093. query I
  1094. SELECT SUM(a) FROM t2;
  1095. ----
  1096. 32768