int4.err 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. <sql-statement>
  2. --
  3. -- INT4
  4. --
  5. CREATE TABLE INT4_TBL(f1 int4);
  6. </sql-statement>
  7. <sql-statement>
  8. INSERT INTO INT4_TBL(f1) VALUES (' 0 ');
  9. </sql-statement>
  10. <sql-statement>
  11. INSERT INTO INT4_TBL(f1) VALUES ('123456 ');
  12. </sql-statement>
  13. <sql-statement>
  14. INSERT INTO INT4_TBL(f1) VALUES (' -123456');
  15. </sql-statement>
  16. <sql-statement>
  17. INSERT INTO INT4_TBL(f1) VALUES ('34.5');
  18. </sql-statement>
  19. -stdin-:<main>: Fatal: Execution
  20. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  21. INSERT INTO INT4_TBL(f1) VALUES ('34.5');
  22. ^
  23. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type integer: "34.5"
  24. INSERT INTO INT4_TBL(f1) VALUES ('34.5');
  25. ^
  26. <sql-statement>
  27. -- largest and smallest values
  28. INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
  29. </sql-statement>
  30. <sql-statement>
  31. INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
  32. </sql-statement>
  33. <sql-statement>
  34. -- bad input values -- should give errors
  35. INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
  36. </sql-statement>
  37. -stdin-:<main>: Fatal: Execution
  38. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  39. -- bad input values -- should give errors
  40. ^
  41. -stdin-:<main>:1:1: Fatal: ERROR: value "1000000000000" is out of range for type integer
  42. -- bad input values -- should give errors
  43. ^
  44. <sql-statement>
  45. INSERT INTO INT4_TBL(f1) VALUES ('asdf');
  46. </sql-statement>
  47. -stdin-:<main>: Fatal: Execution
  48. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  49. INSERT INTO INT4_TBL(f1) VALUES ('asdf');
  50. ^
  51. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type integer: "asdf"
  52. INSERT INTO INT4_TBL(f1) VALUES ('asdf');
  53. ^
  54. <sql-statement>
  55. INSERT INTO INT4_TBL(f1) VALUES (' ');
  56. </sql-statement>
  57. -stdin-:<main>: Fatal: Execution
  58. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  59. INSERT INTO INT4_TBL(f1) VALUES (' ');
  60. ^
  61. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type integer: " "
  62. INSERT INTO INT4_TBL(f1) VALUES (' ');
  63. ^
  64. <sql-statement>
  65. INSERT INTO INT4_TBL(f1) VALUES (' asdf ');
  66. </sql-statement>
  67. -stdin-:<main>: Fatal: Execution
  68. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  69. INSERT INTO INT4_TBL(f1) VALUES (' asdf ');
  70. ^
  71. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type integer: " asdf "
  72. INSERT INTO INT4_TBL(f1) VALUES (' asdf ');
  73. ^
  74. <sql-statement>
  75. INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
  76. </sql-statement>
  77. -stdin-:<main>: Fatal: Execution
  78. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  79. INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
  80. ^
  81. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type integer: "- 1234"
  82. INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
  83. ^
  84. <sql-statement>
  85. INSERT INTO INT4_TBL(f1) VALUES ('123 5');
  86. </sql-statement>
  87. -stdin-:<main>: Fatal: Execution
  88. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  89. INSERT INTO INT4_TBL(f1) VALUES ('123 5');
  90. ^
  91. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type integer: "123 5"
  92. INSERT INTO INT4_TBL(f1) VALUES ('123 5');
  93. ^
  94. <sql-statement>
  95. INSERT INTO INT4_TBL(f1) VALUES ('');
  96. </sql-statement>
  97. -stdin-:<main>: Fatal: Execution
  98. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  99. INSERT INTO INT4_TBL(f1) VALUES ('');
  100. ^
  101. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type integer: ""
  102. INSERT INTO INT4_TBL(f1) VALUES ('');
  103. ^
  104. <sql-statement>
  105. SELECT * FROM INT4_TBL;
  106. </sql-statement>
  107. <sql-statement>
  108. SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0';
  109. </sql-statement>
  110. <sql-statement>
  111. SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0';
  112. </sql-statement>
  113. <sql-statement>
  114. SELECT i.* FROM INT4_TBL i WHERE i.f1 = int2 '0';
  115. </sql-statement>
  116. <sql-statement>
  117. SELECT i.* FROM INT4_TBL i WHERE i.f1 = int4 '0';
  118. </sql-statement>
  119. <sql-statement>
  120. SELECT i.* FROM INT4_TBL i WHERE i.f1 < int2 '0';
  121. </sql-statement>
  122. <sql-statement>
  123. SELECT i.* FROM INT4_TBL i WHERE i.f1 < int4 '0';
  124. </sql-statement>
  125. <sql-statement>
  126. SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0';
  127. </sql-statement>
  128. <sql-statement>
  129. SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0';
  130. </sql-statement>
  131. <sql-statement>
  132. SELECT i.* FROM INT4_TBL i WHERE i.f1 > int2 '0';
  133. </sql-statement>
  134. <sql-statement>
  135. SELECT i.* FROM INT4_TBL i WHERE i.f1 > int4 '0';
  136. </sql-statement>
  137. <sql-statement>
  138. SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0';
  139. </sql-statement>
  140. <sql-statement>
  141. SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0';
  142. </sql-statement>
  143. <sql-statement>
  144. -- positive odds
  145. SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
  146. </sql-statement>
  147. <sql-statement>
  148. -- any evens
  149. SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
  150. </sql-statement>
  151. <sql-statement>
  152. SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i;
  153. </sql-statement>
  154. -stdin-:<main>: Fatal: Execution
  155. -stdin-:<main>:1:1: Fatal: Execution of node: YtMap!
  156. SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i;
  157. ^
  158. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  159. SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i;
  160. ^
  161. <sql-statement>
  162. SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i
  163. WHERE abs(f1) < 1073741824;
  164. </sql-statement>
  165. <sql-statement>
  166. SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i;
  167. </sql-statement>
  168. -stdin-:<main>: Fatal: Execution
  169. -stdin-:<main>:1:1: Fatal: Execution of node: YtMap!
  170. SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i;
  171. ^
  172. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  173. SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i;
  174. ^
  175. <sql-statement>
  176. SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i
  177. WHERE abs(f1) < 1073741824;
  178. </sql-statement>
  179. <sql-statement>
  180. SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i;
  181. </sql-statement>
  182. -stdin-:<main>: Fatal: Execution
  183. -stdin-:<main>:1:1: Fatal: Execution of node: YtMap!
  184. SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i;
  185. ^
  186. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  187. SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i;
  188. ^
  189. <sql-statement>
  190. SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i
  191. WHERE f1 < 2147483646;
  192. </sql-statement>
  193. <sql-statement>
  194. SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i;
  195. </sql-statement>
  196. -stdin-:<main>: Fatal: Execution
  197. -stdin-:<main>:1:1: Fatal: Execution of node: YtMap!
  198. SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i;
  199. ^
  200. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  201. SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i;
  202. ^
  203. <sql-statement>
  204. SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i
  205. WHERE f1 < 2147483646;
  206. </sql-statement>
  207. <sql-statement>
  208. SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i;
  209. </sql-statement>
  210. -stdin-:<main>: Fatal: Execution
  211. -stdin-:<main>:1:1: Fatal: Execution of node: YtMap!
  212. SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i;
  213. ^
  214. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  215. SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i;
  216. ^
  217. <sql-statement>
  218. SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i
  219. WHERE f1 > -2147483647;
  220. </sql-statement>
  221. <sql-statement>
  222. SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i;
  223. </sql-statement>
  224. -stdin-:<main>: Fatal: Execution
  225. -stdin-:<main>:1:1: Fatal: Execution of node: YtMap!
  226. SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i;
  227. ^
  228. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  229. SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i;
  230. ^
  231. <sql-statement>
  232. SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i
  233. WHERE f1 > -2147483647;
  234. </sql-statement>
  235. <sql-statement>
  236. SELECT i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i;
  237. </sql-statement>
  238. <sql-statement>
  239. SELECT i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i;
  240. </sql-statement>
  241. <sql-statement>
  242. --
  243. -- more complex expressions
  244. --
  245. -- variations on unary minus parsing
  246. SELECT -2+3 AS one;
  247. </sql-statement>
  248. <sql-statement>
  249. SELECT 4-2 AS two;
  250. </sql-statement>
  251. <sql-statement>
  252. SELECT 2- -1 AS three;
  253. </sql-statement>
  254. <sql-statement>
  255. SELECT 2 - -2 AS four;
  256. </sql-statement>
  257. <sql-statement>
  258. SELECT int2 '2' * int2 '2' = int2 '16' / int2 '4' AS true;
  259. </sql-statement>
  260. <sql-statement>
  261. SELECT int4 '2' * int2 '2' = int2 '16' / int4 '4' AS true;
  262. </sql-statement>
  263. <sql-statement>
  264. SELECT int2 '2' * int4 '2' = int4 '16' / int2 '4' AS true;
  265. </sql-statement>
  266. <sql-statement>
  267. SELECT int4 '1000' < int4 '999' AS false;
  268. </sql-statement>
  269. <sql-statement>
  270. SELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS ten;
  271. </sql-statement>
  272. <sql-statement>
  273. SELECT 2 + 2 / 2 AS three;
  274. </sql-statement>
  275. <sql-statement>
  276. SELECT (2 + 2) / 2 AS two;
  277. </sql-statement>
  278. <sql-statement>
  279. -- corner case
  280. SELECT (-1::int4<<31)::text;
  281. </sql-statement>
  282. <sql-statement>
  283. SELECT ((-1::int4<<31)+1)::text;
  284. </sql-statement>
  285. <sql-statement>
  286. -- check sane handling of INT_MIN overflow cases
  287. SELECT (-2147483648)::int4 * (-1)::int4;
  288. </sql-statement>
  289. -stdin-:<main>: Fatal: Execution
  290. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  291. -- check sane handling of INT_MIN overflow cases
  292. ^
  293. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  294. -- check sane handling of INT_MIN overflow cases
  295. ^
  296. <sql-statement>
  297. SELECT (-2147483648)::int4 / (-1)::int4;
  298. </sql-statement>
  299. -stdin-:<main>: Fatal: Execution
  300. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  301. SELECT (-2147483648)::int4 / (-1)::int4;
  302. ^
  303. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  304. SELECT (-2147483648)::int4 / (-1)::int4;
  305. ^
  306. <sql-statement>
  307. SELECT (-2147483648)::int4 % (-1)::int4;
  308. </sql-statement>
  309. <sql-statement>
  310. SELECT (-2147483648)::int4 * (-1)::int2;
  311. </sql-statement>
  312. -stdin-:<main>: Fatal: Execution
  313. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  314. SELECT (-2147483648)::int4 * (-1)::int2;
  315. ^
  316. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  317. SELECT (-2147483648)::int4 * (-1)::int2;
  318. ^
  319. <sql-statement>
  320. SELECT (-2147483648)::int4 / (-1)::int2;
  321. </sql-statement>
  322. -stdin-:<main>: Fatal: Execution
  323. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  324. SELECT (-2147483648)::int4 / (-1)::int2;
  325. ^
  326. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  327. SELECT (-2147483648)::int4 / (-1)::int2;
  328. ^
  329. <sql-statement>
  330. SELECT (-2147483648)::int4 % (-1)::int2;
  331. </sql-statement>
  332. <sql-statement>
  333. -- check rounding when casting from float
  334. SELECT x, x::int4 AS int4_value
  335. FROM (VALUES (-2.5::float8),
  336. (-1.5::float8),
  337. (-0.5::float8),
  338. (0.0::float8),
  339. (0.5::float8),
  340. (1.5::float8),
  341. (2.5::float8)) t(x);
  342. </sql-statement>
  343. <sql-statement>
  344. -- check rounding when casting from numeric
  345. SELECT x, x::int4 AS int4_value
  346. FROM (VALUES (-2.5::numeric),
  347. (-1.5::numeric),
  348. (-0.5::numeric),
  349. (0.0::numeric),
  350. (0.5::numeric),
  351. (1.5::numeric),
  352. (2.5::numeric)) t(x);
  353. </sql-statement>
  354. <sql-statement>
  355. -- test gcd()
  356. SELECT a, b, gcd(a, b), gcd(a, -b), gcd(b, a), gcd(-b, a)
  357. FROM (VALUES (0::int4, 0::int4),
  358. (0::int4, 6410818::int4),
  359. (61866666::int4, 6410818::int4),
  360. (-61866666::int4, 6410818::int4),
  361. ((-2147483648)::int4, 1::int4),
  362. ((-2147483648)::int4, 2147483647::int4),
  363. ((-2147483648)::int4, 1073741824::int4)) AS v(a, b);
  364. </sql-statement>
  365. -stdin-:<main>: Error: Type annotation
  366. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  367. -- test gcd()
  368. ^
  369. -stdin-:<main>:1:1: Error: Duplicated member: gcd
  370. -- test gcd()
  371. ^
  372. <sql-statement>
  373. SELECT gcd((-2147483648)::int4, 0::int4); -- overflow
  374. </sql-statement>
  375. -stdin-:<main>: Fatal: Execution
  376. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  377. SELECT gcd((-2147483648)::int4, 0::int4); -- overflow
  378. ^
  379. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  380. SELECT gcd((-2147483648)::int4, 0::int4); -- overflow
  381. ^
  382. <sql-statement>
  383. SELECT gcd((-2147483648)::int4, (-2147483648)::int4); -- overflow
  384. </sql-statement>
  385. -stdin-:<main>: Fatal: Execution
  386. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  387. SELECT gcd((-2147483648)::int4, (-2147483648)::int4); -- overflow
  388. ^
  389. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  390. SELECT gcd((-2147483648)::int4, (-2147483648)::int4); -- overflow
  391. ^
  392. <sql-statement>
  393. -- test lcm()
  394. SELECT a, b, lcm(a, b), lcm(a, -b), lcm(b, a), lcm(-b, a)
  395. FROM (VALUES (0::int4, 0::int4),
  396. (0::int4, 42::int4),
  397. (42::int4, 42::int4),
  398. (330::int4, 462::int4),
  399. (-330::int4, 462::int4),
  400. ((-2147483648)::int4, 0::int4)) AS v(a, b);
  401. </sql-statement>
  402. -stdin-:<main>: Error: Type annotation
  403. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  404. -- test lcm()
  405. ^
  406. -stdin-:<main>:1:1: Error: Duplicated member: lcm
  407. -- test lcm()
  408. ^
  409. <sql-statement>
  410. SELECT lcm((-2147483648)::int4, 1::int4); -- overflow
  411. </sql-statement>
  412. -stdin-:<main>: Fatal: Execution
  413. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  414. SELECT lcm((-2147483648)::int4, 1::int4); -- overflow
  415. ^
  416. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  417. SELECT lcm((-2147483648)::int4, 1::int4); -- overflow
  418. ^
  419. <sql-statement>
  420. SELECT lcm(2147483647::int4, 2147483646::int4); -- overflow
  421. </sql-statement>
  422. -stdin-:<main>: Fatal: Execution
  423. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  424. SELECT lcm(2147483647::int4, 2147483646::int4); -- overflow
  425. ^
  426. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  427. SELECT lcm(2147483647::int4, 2147483646::int4); -- overflow
  428. ^