float4.err 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854
  1. <sql-statement>
  2. --
  3. -- FLOAT4
  4. --
  5. CREATE TABLE FLOAT4_TBL (f1 float4);
  6. </sql-statement>
  7. <sql-statement>
  8. INSERT INTO FLOAT4_TBL(f1) VALUES (' 0.0');
  9. </sql-statement>
  10. <sql-statement>
  11. INSERT INTO FLOAT4_TBL(f1) VALUES ('1004.30 ');
  12. </sql-statement>
  13. <sql-statement>
  14. INSERT INTO FLOAT4_TBL(f1) VALUES (' -34.84 ');
  15. </sql-statement>
  16. <sql-statement>
  17. INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e+20');
  18. </sql-statement>
  19. <sql-statement>
  20. INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e-20');
  21. </sql-statement>
  22. <sql-statement>
  23. -- test for over and under flow
  24. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70');
  25. </sql-statement>
  26. -stdin-:<main>: Fatal: Execution
  27. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  28. -- test for over and under flow
  29. ^
  30. -stdin-:<main>:1:1: Fatal: ERROR: "10e70" is out of range for type real
  31. -- test for over and under flow
  32. ^
  33. <sql-statement>
  34. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70');
  35. </sql-statement>
  36. -stdin-:<main>: Fatal: Execution
  37. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  38. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70');
  39. ^
  40. -stdin-:<main>:1:1: Fatal: ERROR: "-10e70" is out of range for type real
  41. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70');
  42. ^
  43. <sql-statement>
  44. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70');
  45. </sql-statement>
  46. -stdin-:<main>: Fatal: Execution
  47. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  48. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70');
  49. ^
  50. -stdin-:<main>:1:1: Fatal: ERROR: "10e-70" is out of range for type real
  51. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70');
  52. ^
  53. <sql-statement>
  54. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70');
  55. </sql-statement>
  56. -stdin-:<main>: Fatal: Execution
  57. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  58. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70');
  59. ^
  60. -stdin-:<main>:1:1: Fatal: ERROR: "-10e-70" is out of range for type real
  61. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70');
  62. ^
  63. <sql-statement>
  64. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70'::float8);
  65. </sql-statement>
  66. -stdin-:<main>: Fatal: Execution
  67. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  68. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70'::float8);
  69. ^
  70. -stdin-:<main>:1:1: Fatal: ERROR: value out of range: overflow
  71. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70'::float8);
  72. ^
  73. <sql-statement>
  74. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70'::float8);
  75. </sql-statement>
  76. -stdin-:<main>: Fatal: Execution
  77. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  78. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70'::float8);
  79. ^
  80. -stdin-:<main>:1:1: Fatal: ERROR: value out of range: overflow
  81. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70'::float8);
  82. ^
  83. <sql-statement>
  84. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70'::float8);
  85. </sql-statement>
  86. -stdin-:<main>: Fatal: Execution
  87. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  88. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70'::float8);
  89. ^
  90. -stdin-:<main>:1:1: Fatal: ERROR: value out of range: underflow
  91. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70'::float8);
  92. ^
  93. <sql-statement>
  94. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70'::float8);
  95. </sql-statement>
  96. -stdin-:<main>: Fatal: Execution
  97. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  98. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70'::float8);
  99. ^
  100. -stdin-:<main>:1:1: Fatal: ERROR: value out of range: underflow
  101. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70'::float8);
  102. ^
  103. <sql-statement>
  104. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e400');
  105. </sql-statement>
  106. -stdin-:<main>: Fatal: Execution
  107. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  108. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e400');
  109. ^
  110. -stdin-:<main>:1:1: Fatal: ERROR: "10e400" is out of range for type real
  111. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e400');
  112. ^
  113. <sql-statement>
  114. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e400');
  115. </sql-statement>
  116. -stdin-:<main>: Fatal: Execution
  117. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  118. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e400');
  119. ^
  120. -stdin-:<main>:1:1: Fatal: ERROR: "-10e400" is out of range for type real
  121. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e400');
  122. ^
  123. <sql-statement>
  124. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-400');
  125. </sql-statement>
  126. -stdin-:<main>: Fatal: Execution
  127. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  128. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-400');
  129. ^
  130. -stdin-:<main>:1:1: Fatal: ERROR: "10e-400" is out of range for type real
  131. INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-400');
  132. ^
  133. <sql-statement>
  134. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-400');
  135. </sql-statement>
  136. -stdin-:<main>: Fatal: Execution
  137. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  138. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-400');
  139. ^
  140. -stdin-:<main>:1:1: Fatal: ERROR: "-10e-400" is out of range for type real
  141. INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-400');
  142. ^
  143. <sql-statement>
  144. -- bad input
  145. INSERT INTO FLOAT4_TBL(f1) VALUES ('');
  146. </sql-statement>
  147. -stdin-:<main>: Fatal: Execution
  148. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  149. -- bad input
  150. ^
  151. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: ""
  152. -- bad input
  153. ^
  154. <sql-statement>
  155. INSERT INTO FLOAT4_TBL(f1) VALUES (' ');
  156. </sql-statement>
  157. -stdin-:<main>: Fatal: Execution
  158. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  159. INSERT INTO FLOAT4_TBL(f1) VALUES (' ');
  160. ^
  161. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: " "
  162. INSERT INTO FLOAT4_TBL(f1) VALUES (' ');
  163. ^
  164. <sql-statement>
  165. INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
  166. </sql-statement>
  167. -stdin-:<main>: Fatal: Execution
  168. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  169. INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
  170. ^
  171. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: "xyz"
  172. INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
  173. ^
  174. <sql-statement>
  175. INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0');
  176. </sql-statement>
  177. -stdin-:<main>: Fatal: Execution
  178. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  179. INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0');
  180. ^
  181. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: "5.0.0"
  182. INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0');
  183. ^
  184. <sql-statement>
  185. INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0');
  186. </sql-statement>
  187. -stdin-:<main>: Fatal: Execution
  188. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  189. INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0');
  190. ^
  191. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: "5 . 0"
  192. INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0');
  193. ^
  194. <sql-statement>
  195. INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0');
  196. </sql-statement>
  197. -stdin-:<main>: Fatal: Execution
  198. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  199. INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0');
  200. ^
  201. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: "5. 0"
  202. INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0');
  203. ^
  204. <sql-statement>
  205. INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0');
  206. </sql-statement>
  207. -stdin-:<main>: Fatal: Execution
  208. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  209. INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0');
  210. ^
  211. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: " - 3.0"
  212. INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0');
  213. ^
  214. <sql-statement>
  215. INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5');
  216. </sql-statement>
  217. -stdin-:<main>: Fatal: Execution
  218. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  219. INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5');
  220. ^
  221. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: "123 5"
  222. INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5');
  223. ^
  224. <sql-statement>
  225. -- special inputs
  226. SELECT 'NaN'::float4;
  227. </sql-statement>
  228. <sql-statement>
  229. SELECT 'nan'::float4;
  230. </sql-statement>
  231. <sql-statement>
  232. SELECT ' NAN '::float4;
  233. </sql-statement>
  234. <sql-statement>
  235. SELECT 'infinity'::float4;
  236. </sql-statement>
  237. <sql-statement>
  238. SELECT ' -INFINiTY '::float4;
  239. </sql-statement>
  240. <sql-statement>
  241. -- bad special inputs
  242. SELECT 'N A N'::float4;
  243. </sql-statement>
  244. -stdin-:<main>: Fatal: Execution
  245. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  246. -- bad special inputs
  247. ^
  248. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: "N A N"
  249. -- bad special inputs
  250. ^
  251. <sql-statement>
  252. SELECT 'NaN x'::float4;
  253. </sql-statement>
  254. -stdin-:<main>: Fatal: Execution
  255. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  256. SELECT 'NaN x'::float4;
  257. ^
  258. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: "NaN x"
  259. SELECT 'NaN x'::float4;
  260. ^
  261. <sql-statement>
  262. SELECT ' INFINITY x'::float4;
  263. </sql-statement>
  264. -stdin-:<main>: Fatal: Execution
  265. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  266. SELECT ' INFINITY x'::float4;
  267. ^
  268. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type real: " INFINITY x"
  269. SELECT ' INFINITY x'::float4;
  270. ^
  271. <sql-statement>
  272. SELECT 'Infinity'::float4 + 100.0;
  273. </sql-statement>
  274. <sql-statement>
  275. SELECT 'Infinity'::float4 / 'Infinity'::float4;
  276. </sql-statement>
  277. <sql-statement>
  278. SELECT '42'::float4 / 'Infinity'::float4;
  279. </sql-statement>
  280. <sql-statement>
  281. SELECT 'nan'::float4 / 'nan'::float4;
  282. </sql-statement>
  283. <sql-statement>
  284. SELECT 'nan'::float4 / '0'::float4;
  285. </sql-statement>
  286. <sql-statement>
  287. SELECT 'nan'::numeric::float4;
  288. </sql-statement>
  289. <sql-statement>
  290. SELECT * FROM FLOAT4_TBL;
  291. </sql-statement>
  292. <sql-statement>
  293. SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3';
  294. </sql-statement>
  295. <sql-statement>
  296. SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
  297. </sql-statement>
  298. <sql-statement>
  299. SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1;
  300. </sql-statement>
  301. <sql-statement>
  302. SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3';
  303. </sql-statement>
  304. <sql-statement>
  305. SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1;
  306. </sql-statement>
  307. <sql-statement>
  308. SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3';
  309. </sql-statement>
  310. <sql-statement>
  311. SELECT f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f
  312. WHERE f.f1 > '0.0';
  313. </sql-statement>
  314. <sql-statement>
  315. SELECT f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f
  316. WHERE f.f1 > '0.0';
  317. </sql-statement>
  318. <sql-statement>
  319. SELECT f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f
  320. WHERE f.f1 > '0.0';
  321. </sql-statement>
  322. <sql-statement>
  323. SELECT f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f
  324. WHERE f.f1 > '0.0';
  325. </sql-statement>
  326. <sql-statement>
  327. -- test divide by zero
  328. SELECT f.f1 / '0.0' from FLOAT4_TBL f;
  329. </sql-statement>
  330. -stdin-:<main>: Fatal: Execution
  331. -stdin-:<main>:1:1: Fatal: Execution of node: YtMap!
  332. -- test divide by zero
  333. ^
  334. -stdin-:<main>:1:1: Fatal: ERROR: division by zero
  335. -- test divide by zero
  336. ^
  337. <sql-statement>
  338. SELECT * FROM FLOAT4_TBL;
  339. </sql-statement>
  340. <sql-statement>
  341. -- test the unary float4abs operator
  342. SELECT f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f;
  343. </sql-statement>
  344. <sql-statement>
  345. UPDATE FLOAT4_TBL
  346. SET f1 = FLOAT4_TBL.f1 * '-1'
  347. WHERE FLOAT4_TBL.f1 > '0.0';
  348. </sql-statement>
  349. -stdin-:<main>: Fatal: Pre type annotation
  350. -stdin-:<main>: Fatal: tools/enum_parser/enum_serialization_runtime/enum_runtime.cpp:70: Key 'pg_update' 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'.
  351. <sql-statement>
  352. SELECT * FROM FLOAT4_TBL;
  353. </sql-statement>
  354. <sql-statement>
  355. -- test edge-case coercions to integer
  356. SELECT '32767.4'::float4::int2;
  357. </sql-statement>
  358. <sql-statement>
  359. SELECT '32767.6'::float4::int2;
  360. </sql-statement>
  361. -stdin-:<main>: Fatal: Execution
  362. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  363. SELECT '32767.6'::float4::int2;
  364. ^
  365. -stdin-:<main>:1:1: Fatal: ERROR: smallint out of range
  366. SELECT '32767.6'::float4::int2;
  367. ^
  368. <sql-statement>
  369. SELECT '-32768.4'::float4::int2;
  370. </sql-statement>
  371. <sql-statement>
  372. SELECT '-32768.6'::float4::int2;
  373. </sql-statement>
  374. -stdin-:<main>: Fatal: Execution
  375. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  376. SELECT '-32768.6'::float4::int2;
  377. ^
  378. -stdin-:<main>:1:1: Fatal: ERROR: smallint out of range
  379. SELECT '-32768.6'::float4::int2;
  380. ^
  381. <sql-statement>
  382. SELECT '2147483520'::float4::int4;
  383. </sql-statement>
  384. <sql-statement>
  385. SELECT '2147483647'::float4::int4;
  386. </sql-statement>
  387. -stdin-:<main>: Fatal: Execution
  388. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  389. SELECT '2147483647'::float4::int4;
  390. ^
  391. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  392. SELECT '2147483647'::float4::int4;
  393. ^
  394. <sql-statement>
  395. SELECT '-2147483648.5'::float4::int4;
  396. </sql-statement>
  397. <sql-statement>
  398. SELECT '-2147483900'::float4::int4;
  399. </sql-statement>
  400. -stdin-:<main>: Fatal: Execution
  401. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  402. SELECT '-2147483900'::float4::int4;
  403. ^
  404. -stdin-:<main>:1:1: Fatal: ERROR: integer out of range
  405. SELECT '-2147483900'::float4::int4;
  406. ^
  407. <sql-statement>
  408. SELECT '9223369837831520256'::float4::int8;
  409. </sql-statement>
  410. <sql-statement>
  411. SELECT '9223372036854775807'::float4::int8;
  412. </sql-statement>
  413. -stdin-:<main>: Fatal: Execution
  414. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  415. SELECT '9223372036854775807'::float4::int8;
  416. ^
  417. -stdin-:<main>:1:1: Fatal: ERROR: bigint out of range
  418. SELECT '9223372036854775807'::float4::int8;
  419. ^
  420. <sql-statement>
  421. SELECT '-9223372036854775808.5'::float4::int8;
  422. </sql-statement>
  423. <sql-statement>
  424. SELECT '-9223380000000000000'::float4::int8;
  425. </sql-statement>
  426. -stdin-:<main>: Fatal: Execution
  427. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  428. SELECT '-9223380000000000000'::float4::int8;
  429. ^
  430. -stdin-:<main>:1:1: Fatal: ERROR: bigint out of range
  431. SELECT '-9223380000000000000'::float4::int8;
  432. ^
  433. <sql-statement>
  434. -- Test for correct input rounding in edge cases.
  435. -- These lists are from Paxson 1991, excluding subnormals and
  436. -- inputs of over 9 sig. digits.
  437. SELECT float4send('5e-20'::float4);
  438. </sql-statement>
  439. <sql-statement>
  440. SELECT float4send('67e14'::float4);
  441. </sql-statement>
  442. <sql-statement>
  443. SELECT float4send('985e15'::float4);
  444. </sql-statement>
  445. <sql-statement>
  446. SELECT float4send('55895e-16'::float4);
  447. </sql-statement>
  448. <sql-statement>
  449. SELECT float4send('7038531e-32'::float4);
  450. </sql-statement>
  451. <sql-statement>
  452. SELECT float4send('702990899e-20'::float4);
  453. </sql-statement>
  454. <sql-statement>
  455. SELECT float4send('3e-23'::float4);
  456. </sql-statement>
  457. <sql-statement>
  458. SELECT float4send('57e18'::float4);
  459. </sql-statement>
  460. <sql-statement>
  461. SELECT float4send('789e-35'::float4);
  462. </sql-statement>
  463. <sql-statement>
  464. SELECT float4send('2539e-18'::float4);
  465. </sql-statement>
  466. <sql-statement>
  467. SELECT float4send('76173e28'::float4);
  468. </sql-statement>
  469. <sql-statement>
  470. SELECT float4send('887745e-11'::float4);
  471. </sql-statement>
  472. <sql-statement>
  473. SELECT float4send('5382571e-37'::float4);
  474. </sql-statement>
  475. <sql-statement>
  476. SELECT float4send('82381273e-35'::float4);
  477. </sql-statement>
  478. <sql-statement>
  479. SELECT float4send('750486563e-38'::float4);
  480. </sql-statement>
  481. <sql-statement>
  482. -- Test that the smallest possible normalized input value inputs
  483. -- correctly, either in 9-significant-digit or shortest-decimal
  484. -- format.
  485. --
  486. -- exact val is 1.1754943508...
  487. -- shortest val is 1.1754944000
  488. -- midpoint to next val is 1.1754944208...
  489. SELECT float4send('1.17549435e-38'::float4);
  490. </sql-statement>
  491. <sql-statement>
  492. SELECT float4send('1.1754944e-38'::float4);
  493. </sql-statement>
  494. <sql-statement>
  495. -- test output (and round-trip safety) of various values.
  496. -- To ensure we're testing what we think we're testing, start with
  497. -- float values specified by bit patterns (as a useful side effect,
  498. -- this means we'll fail on non-IEEE platforms).
  499. create type xfloat4;
  500. </sql-statement>
  501. -stdin-:<main>: Error: Parse Sql
  502. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 255
  503. -- test output (and round-trip safety) of various values.
  504. ^
  505. <sql-statement>
  506. create function xfloat4in(cstring) returns xfloat4 immutable strict
  507. language internal as 'int4in';
  508. </sql-statement>
  509. -stdin-:<main>: Error: Parse Sql
  510. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  511. create function xfloat4in(cstring) returns xfloat4 immutable strict
  512. ^
  513. <sql-statement>
  514. create function xfloat4out(xfloat4) returns cstring immutable strict
  515. language internal as 'int4out';
  516. </sql-statement>
  517. -stdin-:<main>: Error: Parse Sql
  518. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  519. create function xfloat4out(xfloat4) returns cstring immutable strict
  520. ^
  521. <sql-statement>
  522. create type xfloat4 (input = xfloat4in, output = xfloat4out, like = float4);
  523. </sql-statement>
  524. -stdin-:<main>: Error: Parse Sql
  525. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 255
  526. create type xfloat4 (input = xfloat4in, output = xfloat4out, like = float4);
  527. ^
  528. <sql-statement>
  529. create cast (xfloat4 as float4) without function;
  530. </sql-statement>
  531. -stdin-:<main>: Error: Parse Sql
  532. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 297
  533. create cast (xfloat4 as float4) without function;
  534. ^
  535. <sql-statement>
  536. create cast (float4 as xfloat4) without function;
  537. </sql-statement>
  538. -stdin-:<main>: Error: Parse Sql
  539. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 297
  540. create cast (float4 as xfloat4) without function;
  541. ^
  542. <sql-statement>
  543. create cast (xfloat4 as integer) without function;
  544. </sql-statement>
  545. -stdin-:<main>: Error: Parse Sql
  546. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 297
  547. create cast (xfloat4 as integer) without function;
  548. ^
  549. <sql-statement>
  550. create cast (integer as xfloat4) without function;
  551. </sql-statement>
  552. -stdin-:<main>: Error: Parse Sql
  553. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 297
  554. create cast (integer as xfloat4) without function;
  555. ^
  556. <sql-statement>
  557. -- float4: seeeeeee emmmmmmm mmmmmmmm mmmmmmmm
  558. -- we don't care to assume the platform's strtod() handles subnormals
  559. -- correctly; those are "use at your own risk". However we do test
  560. -- subnormal outputs, since those are under our control.
  561. with testdata(bits) as (values
  562. -- small subnormals
  563. (x'00000001'),
  564. (x'00000002'), (x'00000003'),
  565. (x'00000010'), (x'00000011'), (x'00000100'), (x'00000101'),
  566. (x'00004000'), (x'00004001'), (x'00080000'), (x'00080001'),
  567. -- stress values
  568. (x'0053c4f4'), -- 7693e-42
  569. (x'006c85c4'), -- 996622e-44
  570. (x'0041ca76'), -- 60419369e-46
  571. (x'004b7678'), -- 6930161142e-48
  572. -- taken from upstream testsuite
  573. (x'00000007'),
  574. (x'00424fe2'),
  575. -- borderline between subnormal and normal
  576. (x'007ffff0'), (x'007ffff1'), (x'007ffffe'), (x'007fffff'))
  577. select float4send(flt) as ibits,
  578. flt
  579. from (select bits::integer::xfloat4::float4 as flt
  580. from testdata
  581. offset 0) s;
  582. </sql-statement>
  583. -stdin-:<main>: Error: Parse Sql
  584. -stdin-:<main>:23:31: Error: Unknown type: xfloat4
  585. from (select bits::integer::xfloat4::float4 as flt
  586. ^
  587. -stdin-:<main>: Error: Type annotation
  588. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect
  589. -- float4: seeeeeee emmmmmmm mmmmmmmm mmmmmmmm
  590. ^
  591. -stdin-:<main>:1:1: Error: Recursive query does not have the form non-recursive-term UNION [ALL] recursive-term
  592. -- float4: seeeeeee emmmmmmm mmmmmmmm mmmmmmmm
  593. ^
  594. <sql-statement>
  595. with testdata(bits) as (values
  596. (x'00000000'),
  597. -- smallest normal values
  598. (x'00800000'), (x'00800001'), (x'00800004'), (x'00800005'),
  599. (x'00800006'),
  600. -- small normal values chosen for short vs. long output
  601. (x'008002f1'), (x'008002f2'), (x'008002f3'),
  602. (x'00800e17'), (x'00800e18'), (x'00800e19'),
  603. -- assorted values (random mantissae)
  604. (x'01000001'), (x'01102843'), (x'01a52c98'),
  605. (x'0219c229'), (x'02e4464d'), (x'037343c1'), (x'03a91b36'),
  606. (x'047ada65'), (x'0496fe87'), (x'0550844f'), (x'05999da3'),
  607. (x'060ea5e2'), (x'06e63c45'), (x'07f1e548'), (x'0fc5282b'),
  608. (x'1f850283'), (x'2874a9d6'),
  609. -- values around 5e-08
  610. (x'3356bf94'), (x'3356bf95'), (x'3356bf96'),
  611. -- around 1e-07
  612. (x'33d6bf94'), (x'33d6bf95'), (x'33d6bf96'),
  613. -- around 3e-07 .. 1e-04
  614. (x'34a10faf'), (x'34a10fb0'), (x'34a10fb1'),
  615. (x'350637bc'), (x'350637bd'), (x'350637be'),
  616. (x'35719786'), (x'35719787'), (x'35719788'),
  617. (x'358637bc'), (x'358637bd'), (x'358637be'),
  618. (x'36a7c5ab'), (x'36a7c5ac'), (x'36a7c5ad'),
  619. (x'3727c5ab'), (x'3727c5ac'), (x'3727c5ad'),
  620. -- format crossover at 1e-04
  621. (x'38d1b714'), (x'38d1b715'), (x'38d1b716'),
  622. (x'38d1b717'), (x'38d1b718'), (x'38d1b719'),
  623. (x'38d1b71a'), (x'38d1b71b'), (x'38d1b71c'),
  624. (x'38d1b71d'),
  625. --
  626. (x'38dffffe'), (x'38dfffff'), (x'38e00000'),
  627. (x'38efffff'), (x'38f00000'), (x'38f00001'),
  628. (x'3a83126e'), (x'3a83126f'), (x'3a831270'),
  629. (x'3c23d709'), (x'3c23d70a'), (x'3c23d70b'),
  630. (x'3dcccccc'), (x'3dcccccd'), (x'3dccccce'),
  631. -- chosen to need 9 digits for 3dcccd70
  632. (x'3dcccd6f'), (x'3dcccd70'), (x'3dcccd71'),
  633. --
  634. (x'3effffff'), (x'3f000000'), (x'3f000001'),
  635. (x'3f333332'), (x'3f333333'), (x'3f333334'),
  636. -- approach 1.0 with increasing numbers of 9s
  637. (x'3f666665'), (x'3f666666'), (x'3f666667'),
  638. (x'3f7d70a3'), (x'3f7d70a4'), (x'3f7d70a5'),
  639. (x'3f7fbe76'), (x'3f7fbe77'), (x'3f7fbe78'),
  640. (x'3f7ff971'), (x'3f7ff972'), (x'3f7ff973'),
  641. (x'3f7fff57'), (x'3f7fff58'), (x'3f7fff59'),
  642. (x'3f7fffee'), (x'3f7fffef'),
  643. -- values very close to 1
  644. (x'3f7ffff0'), (x'3f7ffff1'), (x'3f7ffff2'),
  645. (x'3f7ffff3'), (x'3f7ffff4'), (x'3f7ffff5'),
  646. (x'3f7ffff6'), (x'3f7ffff7'), (x'3f7ffff8'),
  647. (x'3f7ffff9'), (x'3f7ffffa'), (x'3f7ffffb'),
  648. (x'3f7ffffc'), (x'3f7ffffd'), (x'3f7ffffe'),
  649. (x'3f7fffff'),
  650. (x'3f800000'),
  651. (x'3f800001'), (x'3f800002'), (x'3f800003'),
  652. (x'3f800004'), (x'3f800005'), (x'3f800006'),
  653. (x'3f800007'), (x'3f800008'), (x'3f800009'),
  654. -- values 1 to 1.1
  655. (x'3f80000f'), (x'3f800010'), (x'3f800011'),
  656. (x'3f800012'), (x'3f800013'), (x'3f800014'),
  657. (x'3f800017'), (x'3f800018'), (x'3f800019'),
  658. (x'3f80001a'), (x'3f80001b'), (x'3f80001c'),
  659. (x'3f800029'), (x'3f80002a'), (x'3f80002b'),
  660. (x'3f800053'), (x'3f800054'), (x'3f800055'),
  661. (x'3f800346'), (x'3f800347'), (x'3f800348'),
  662. (x'3f8020c4'), (x'3f8020c5'), (x'3f8020c6'),
  663. (x'3f8147ad'), (x'3f8147ae'), (x'3f8147af'),
  664. (x'3f8ccccc'), (x'3f8ccccd'), (x'3f8cccce'),
  665. --
  666. (x'3fc90fdb'), -- pi/2
  667. (x'402df854'), -- e
  668. (x'40490fdb'), -- pi
  669. --
  670. (x'409fffff'), (x'40a00000'), (x'40a00001'),
  671. (x'40afffff'), (x'40b00000'), (x'40b00001'),
  672. (x'411fffff'), (x'41200000'), (x'41200001'),
  673. (x'42c7ffff'), (x'42c80000'), (x'42c80001'),
  674. (x'4479ffff'), (x'447a0000'), (x'447a0001'),
  675. (x'461c3fff'), (x'461c4000'), (x'461c4001'),
  676. (x'47c34fff'), (x'47c35000'), (x'47c35001'),
  677. (x'497423ff'), (x'49742400'), (x'49742401'),
  678. (x'4b18967f'), (x'4b189680'), (x'4b189681'),
  679. (x'4cbebc1f'), (x'4cbebc20'), (x'4cbebc21'),
  680. (x'4e6e6b27'), (x'4e6e6b28'), (x'4e6e6b29'),
  681. (x'501502f8'), (x'501502f9'), (x'501502fa'),
  682. (x'51ba43b6'), (x'51ba43b7'), (x'51ba43b8'),
  683. -- stress values
  684. (x'1f6c1e4a'), -- 5e-20
  685. (x'59be6cea'), -- 67e14
  686. (x'5d5ab6c4'), -- 985e15
  687. (x'2cc4a9bd'), -- 55895e-16
  688. (x'15ae43fd'), -- 7038531e-32
  689. (x'2cf757ca'), -- 702990899e-20
  690. (x'665ba998'), -- 25933168707e13
  691. (x'743c3324'), -- 596428896559e20
  692. -- exercise fixed-point memmoves
  693. (x'47f1205a'),
  694. (x'4640e6ae'),
  695. (x'449a5225'),
  696. (x'42f6e9d5'),
  697. (x'414587dd'),
  698. (x'3f9e064b'),
  699. -- these cases come from the upstream's testsuite
  700. -- BoundaryRoundEven
  701. (x'4c000004'),
  702. (x'50061c46'),
  703. (x'510006a8'),
  704. -- ExactValueRoundEven
  705. (x'48951f84'),
  706. (x'45fd1840'),
  707. -- LotsOfTrailingZeros
  708. (x'39800000'),
  709. (x'3b200000'),
  710. (x'3b900000'),
  711. (x'3bd00000'),
  712. -- Regression
  713. (x'63800000'),
  714. (x'4b000000'),
  715. (x'4b800000'),
  716. (x'4c000001'),
  717. (x'4c800b0d'),
  718. (x'00d24584'),
  719. (x'00d90b88'),
  720. (x'45803f34'),
  721. (x'4f9f24f7'),
  722. (x'3a8722c3'),
  723. (x'5c800041'),
  724. (x'15ae43fd'),
  725. (x'5d4cccfb'),
  726. (x'4c800001'),
  727. (x'57800ed8'),
  728. (x'5f000000'),
  729. (x'700000f0'),
  730. (x'5f23e9ac'),
  731. (x'5e9502f9'),
  732. (x'5e8012b1'),
  733. (x'3c000028'),
  734. (x'60cde861'),
  735. (x'03aa2a50'),
  736. (x'43480000'),
  737. (x'4c000000'),
  738. -- LooksLikePow5
  739. (x'5D1502F9'),
  740. (x'5D9502F9'),
  741. (x'5E1502F9'),
  742. -- OutputLength
  743. (x'3f99999a'),
  744. (x'3f9d70a4'),
  745. (x'3f9df3b6'),
  746. (x'3f9e0419'),
  747. (x'3f9e0610'),
  748. (x'3f9e064b'),
  749. (x'3f9e0651'),
  750. (x'03d20cfe')
  751. )
  752. select float4send(flt) as ibits,
  753. flt,
  754. flt::text::float4 as r_flt,
  755. float4send(flt::text::float4) as obits,
  756. float4send(flt::text::float4) = float4send(flt) as correct
  757. from (select bits::integer::xfloat4::float4 as flt
  758. from testdata
  759. offset 0) s;
  760. </sql-statement>
  761. -stdin-:<main>: Error: Parse Sql
  762. -stdin-:<main>:163:31: Error: Unknown type: xfloat4
  763. from (select bits::integer::xfloat4::float4 as flt
  764. ^
  765. -stdin-:<main>: Error: Type annotation
  766. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect
  767. with testdata(bits) as (values
  768. ^
  769. -stdin-:<main>:1:1: Error: Recursive query does not have the form non-recursive-term UNION [ALL] recursive-term
  770. with testdata(bits) as (values
  771. ^
  772. <sql-statement>
  773. -- clean up, lest opr_sanity complain
  774. drop type xfloat4 cascade;
  775. </sql-statement>
  776. -stdin-:<main>: Error: Parse Sql
  777. -stdin-:<main>:1:1: Error: DropStmt: alternative is not implemented yet : 373
  778. -- clean up, lest opr_sanity complain
  779. ^