timestamp.err 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895
  1. <sql-statement>
  2. --
  3. -- TIMESTAMP
  4. --
  5. CREATE TABLE TIMESTAMP_TBL (d1 timestamp(2) without time zone);
  6. </sql-statement>
  7. <sql-statement>
  8. -- Test shorthand input values
  9. -- We can't just "select" the results since they aren't constants; test for
  10. -- equality instead. We can do that by running the test inside a transaction
  11. -- block, within which the value of 'now' shouldn't change, and so these
  12. -- related values shouldn't either.
  13. BEGIN;
  14. </sql-statement>
  15. <sql-statement>
  16. INSERT INTO TIMESTAMP_TBL VALUES ('today');
  17. </sql-statement>
  18. <sql-statement>
  19. INSERT INTO TIMESTAMP_TBL VALUES ('yesterday');
  20. </sql-statement>
  21. <sql-statement>
  22. INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow');
  23. </sql-statement>
  24. <sql-statement>
  25. -- time zone should be ignored by this data type
  26. INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow EST');
  27. </sql-statement>
  28. -stdin-:<main>: Fatal: Execution
  29. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  30. -- time zone should be ignored by this data type
  31. ^
  32. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "tomorrow EST"
  33. -- time zone should be ignored by this data type
  34. ^
  35. <sql-statement>
  36. INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow zulu');
  37. </sql-statement>
  38. -stdin-:<main>: Fatal: Execution
  39. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  40. INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow zulu');
  41. ^
  42. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "tomorrow zulu"
  43. INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow zulu');
  44. ^
  45. <sql-statement>
  46. SELECT count(*) AS One FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone 'today';
  47. </sql-statement>
  48. <sql-statement>
  49. SELECT count(*) AS Three FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone 'tomorrow';
  50. </sql-statement>
  51. <sql-statement>
  52. SELECT count(*) AS One FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone 'yesterday';
  53. </sql-statement>
  54. <sql-statement>
  55. COMMIT;
  56. </sql-statement>
  57. <sql-statement>
  58. DELETE FROM TIMESTAMP_TBL;
  59. </sql-statement>
  60. -stdin-:<main>: Fatal: Pre type annotation
  61. -stdin-:<main>: Fatal: tools/enum_parser/enum_serialization_runtime/enum_runtime.cpp:70: Key 'pg_delete' 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'.
  62. <sql-statement>
  63. -- Verify that 'now' *does* change over a reasonable interval such as 100 msec,
  64. -- and that it doesn't change over the same interval within a transaction block
  65. INSERT INTO TIMESTAMP_TBL VALUES ('now');
  66. </sql-statement>
  67. <sql-statement>
  68. SELECT pg_sleep(0.1);
  69. </sql-statement>
  70. <sql-statement>
  71. BEGIN;
  72. </sql-statement>
  73. <sql-statement>
  74. INSERT INTO TIMESTAMP_TBL VALUES ('now');
  75. </sql-statement>
  76. <sql-statement>
  77. SELECT pg_sleep(0.1);
  78. </sql-statement>
  79. <sql-statement>
  80. INSERT INTO TIMESTAMP_TBL VALUES ('now');
  81. </sql-statement>
  82. <sql-statement>
  83. SELECT pg_sleep(0.1);
  84. </sql-statement>
  85. <sql-statement>
  86. SELECT count(*) AS two FROM TIMESTAMP_TBL WHERE d1 = timestamp(2) without time zone 'now';
  87. </sql-statement>
  88. <sql-statement>
  89. SELECT count(d1) AS three, count(DISTINCT d1) AS two FROM TIMESTAMP_TBL;
  90. </sql-statement>
  91. <sql-statement>
  92. COMMIT;
  93. </sql-statement>
  94. <sql-statement>
  95. TRUNCATE TIMESTAMP_TBL;
  96. </sql-statement>
  97. -stdin-:<main>: Error: Parse Sql
  98. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 257
  99. TRUNCATE TIMESTAMP_TBL;
  100. ^
  101. <sql-statement>
  102. -- Special values
  103. INSERT INTO TIMESTAMP_TBL VALUES ('-infinity');
  104. </sql-statement>
  105. <sql-statement>
  106. INSERT INTO TIMESTAMP_TBL VALUES ('infinity');
  107. </sql-statement>
  108. <sql-statement>
  109. INSERT INTO TIMESTAMP_TBL VALUES ('epoch');
  110. </sql-statement>
  111. <sql-statement>
  112. -- Postgres v6.0 standard output format
  113. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01 1997 PST');
  114. </sql-statement>
  115. -stdin-:<main>: Fatal: Execution
  116. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  117. -- Postgres v6.0 standard output format
  118. ^
  119. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "Mon Feb 10 17:32:01 1997 PST"
  120. -- Postgres v6.0 standard output format
  121. ^
  122. <sql-statement>
  123. -- Variations on Postgres v6.1 standard output format
  124. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.000001 1997 PST');
  125. </sql-statement>
  126. -stdin-:<main>: Fatal: Execution
  127. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  128. -- Variations on Postgres v6.1 standard output format
  129. ^
  130. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "Mon Feb 10 17:32:01.000001 1997 PST"
  131. -- Variations on Postgres v6.1 standard output format
  132. ^
  133. <sql-statement>
  134. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.999999 1997 PST');
  135. </sql-statement>
  136. -stdin-:<main>: Fatal: Execution
  137. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  138. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.999999 1997 PST');
  139. ^
  140. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "Mon Feb 10 17:32:01.999999 1997 PST"
  141. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.999999 1997 PST');
  142. ^
  143. <sql-statement>
  144. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.4 1997 PST');
  145. </sql-statement>
  146. -stdin-:<main>: Fatal: Execution
  147. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  148. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.4 1997 PST');
  149. ^
  150. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "Mon Feb 10 17:32:01.4 1997 PST"
  151. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.4 1997 PST');
  152. ^
  153. <sql-statement>
  154. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.5 1997 PST');
  155. </sql-statement>
  156. -stdin-:<main>: Fatal: Execution
  157. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  158. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.5 1997 PST');
  159. ^
  160. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "Mon Feb 10 17:32:01.5 1997 PST"
  161. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.5 1997 PST');
  162. ^
  163. <sql-statement>
  164. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.6 1997 PST');
  165. </sql-statement>
  166. -stdin-:<main>: Fatal: Execution
  167. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  168. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.6 1997 PST');
  169. ^
  170. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "Mon Feb 10 17:32:01.6 1997 PST"
  171. INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.6 1997 PST');
  172. ^
  173. <sql-statement>
  174. -- ISO 8601 format
  175. INSERT INTO TIMESTAMP_TBL VALUES ('1997-01-02');
  176. </sql-statement>
  177. <sql-statement>
  178. INSERT INTO TIMESTAMP_TBL VALUES ('1997-01-02 03:04:05');
  179. </sql-statement>
  180. <sql-statement>
  181. INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01-08');
  182. </sql-statement>
  183. <sql-statement>
  184. INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01-0800');
  185. </sql-statement>
  186. <sql-statement>
  187. INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01 -08:00');
  188. </sql-statement>
  189. <sql-statement>
  190. INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 -0800');
  191. </sql-statement>
  192. <sql-statement>
  193. INSERT INTO TIMESTAMP_TBL VALUES ('1997-06-10 17:32:01 -07:00');
  194. </sql-statement>
  195. <sql-statement>
  196. INSERT INTO TIMESTAMP_TBL VALUES ('2001-09-22T18:19:20');
  197. </sql-statement>
  198. <sql-statement>
  199. -- POSIX format (note that the timezone abbrev is just decoration here)
  200. INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 08:14:01 GMT+8');
  201. </sql-statement>
  202. <sql-statement>
  203. INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 13:14:02 GMT-1');
  204. </sql-statement>
  205. <sql-statement>
  206. INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 12:14:03 GMT-2');
  207. </sql-statement>
  208. <sql-statement>
  209. INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 03:14:04 PST+8');
  210. </sql-statement>
  211. <sql-statement>
  212. INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 02:14:05 MST+7:00');
  213. </sql-statement>
  214. <sql-statement>
  215. -- Variations for acceptable input formats
  216. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 17:32:01 1997 -0800');
  217. </sql-statement>
  218. <sql-statement>
  219. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 17:32:01 1997');
  220. </sql-statement>
  221. <sql-statement>
  222. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 5:32PM 1997');
  223. </sql-statement>
  224. <sql-statement>
  225. INSERT INTO TIMESTAMP_TBL VALUES ('1997/02/10 17:32:01-0800');
  226. </sql-statement>
  227. <sql-statement>
  228. INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01 PST');
  229. </sql-statement>
  230. -stdin-:<main>: Fatal: Execution
  231. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  232. INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01 PST');
  233. ^
  234. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "1997-02-10 17:32:01 PST"
  235. INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01 PST');
  236. ^
  237. <sql-statement>
  238. INSERT INTO TIMESTAMP_TBL VALUES ('Feb-10-1997 17:32:01 PST');
  239. </sql-statement>
  240. -stdin-:<main>: Fatal: Execution
  241. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  242. INSERT INTO TIMESTAMP_TBL VALUES ('Feb-10-1997 17:32:01 PST');
  243. ^
  244. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "Feb-10-1997 17:32:01 PST"
  245. INSERT INTO TIMESTAMP_TBL VALUES ('Feb-10-1997 17:32:01 PST');
  246. ^
  247. <sql-statement>
  248. INSERT INTO TIMESTAMP_TBL VALUES ('02-10-1997 17:32:01 PST');
  249. </sql-statement>
  250. -stdin-:<main>: Fatal: Execution
  251. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  252. INSERT INTO TIMESTAMP_TBL VALUES ('02-10-1997 17:32:01 PST');
  253. ^
  254. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "02-10-1997 17:32:01 PST"
  255. INSERT INTO TIMESTAMP_TBL VALUES ('02-10-1997 17:32:01 PST');
  256. ^
  257. <sql-statement>
  258. INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 PST');
  259. </sql-statement>
  260. -stdin-:<main>: Fatal: Execution
  261. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  262. INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 PST');
  263. ^
  264. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "19970210 173201 PST"
  265. INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 PST');
  266. ^
  267. <sql-statement>
  268. set datestyle to ymd;
  269. </sql-statement>
  270. <sql-statement>
  271. INSERT INTO TIMESTAMP_TBL VALUES ('97FEB10 5:32:01PM UTC');
  272. </sql-statement>
  273. -stdin-:<main>: Fatal: Execution
  274. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  275. INSERT INTO TIMESTAMP_TBL VALUES ('97FEB10 5:32:01PM UTC');
  276. ^
  277. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "97FEB10 5:32:01PM UTC"
  278. INSERT INTO TIMESTAMP_TBL VALUES ('97FEB10 5:32:01PM UTC');
  279. ^
  280. <sql-statement>
  281. INSERT INTO TIMESTAMP_TBL VALUES ('97/02/10 17:32:01 UTC');
  282. </sql-statement>
  283. -stdin-:<main>: Fatal: Execution
  284. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  285. INSERT INTO TIMESTAMP_TBL VALUES ('97/02/10 17:32:01 UTC');
  286. ^
  287. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "97/02/10 17:32:01 UTC"
  288. INSERT INTO TIMESTAMP_TBL VALUES ('97/02/10 17:32:01 UTC');
  289. ^
  290. <sql-statement>
  291. reset datestyle;
  292. </sql-statement>
  293. <sql-statement>
  294. INSERT INTO TIMESTAMP_TBL VALUES ('1997.041 17:32:01 UTC');
  295. </sql-statement>
  296. -stdin-:<main>: Fatal: Execution
  297. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  298. INSERT INTO TIMESTAMP_TBL VALUES ('1997.041 17:32:01 UTC');
  299. ^
  300. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "1997.041 17:32:01 UTC"
  301. INSERT INTO TIMESTAMP_TBL VALUES ('1997.041 17:32:01 UTC');
  302. ^
  303. <sql-statement>
  304. INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 America/New_York');
  305. </sql-statement>
  306. -stdin-:<main>: Fatal: Execution
  307. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  308. INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 America/New_York');
  309. ^
  310. -stdin-:<main>:1:1: Fatal: ERROR: time zone "america/new_york" not recognized
  311. INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 America/New_York');
  312. ^
  313. <sql-statement>
  314. -- this fails (even though TZ is a no-op, we still look it up)
  315. INSERT INTO TIMESTAMP_TBL VALUES ('19970710 173201 America/Does_not_exist');
  316. </sql-statement>
  317. -stdin-:<main>: Fatal: Execution
  318. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  319. -- this fails (even though TZ is a no-op, we still look it up)
  320. ^
  321. -stdin-:<main>:1:1: Fatal: ERROR: time zone "america/does_not_exist" not recognized
  322. -- this fails (even though TZ is a no-op, we still look it up)
  323. ^
  324. <sql-statement>
  325. -- Check date conversion and date arithmetic
  326. INSERT INTO TIMESTAMP_TBL VALUES ('1997-06-10 18:32:01 PDT');
  327. </sql-statement>
  328. -stdin-:<main>: Fatal: Execution
  329. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  330. -- Check date conversion and date arithmetic
  331. ^
  332. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type timestamp: "1997-06-10 18:32:01 PDT"
  333. -- Check date conversion and date arithmetic
  334. ^
  335. <sql-statement>
  336. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 17:32:01 1997');
  337. </sql-statement>
  338. <sql-statement>
  339. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 11 17:32:01 1997');
  340. </sql-statement>
  341. <sql-statement>
  342. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 12 17:32:01 1997');
  343. </sql-statement>
  344. <sql-statement>
  345. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 13 17:32:01 1997');
  346. </sql-statement>
  347. <sql-statement>
  348. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 14 17:32:01 1997');
  349. </sql-statement>
  350. <sql-statement>
  351. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 15 17:32:01 1997');
  352. </sql-statement>
  353. <sql-statement>
  354. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1997');
  355. </sql-statement>
  356. <sql-statement>
  357. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 0097 BC');
  358. </sql-statement>
  359. <sql-statement>
  360. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 0097');
  361. </sql-statement>
  362. <sql-statement>
  363. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 0597');
  364. </sql-statement>
  365. <sql-statement>
  366. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1097');
  367. </sql-statement>
  368. <sql-statement>
  369. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1697');
  370. </sql-statement>
  371. <sql-statement>
  372. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1797');
  373. </sql-statement>
  374. <sql-statement>
  375. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1897');
  376. </sql-statement>
  377. <sql-statement>
  378. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1997');
  379. </sql-statement>
  380. <sql-statement>
  381. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 2097');
  382. </sql-statement>
  383. <sql-statement>
  384. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 28 17:32:01 1996');
  385. </sql-statement>
  386. <sql-statement>
  387. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1996');
  388. </sql-statement>
  389. <sql-statement>
  390. INSERT INTO TIMESTAMP_TBL VALUES ('Mar 01 17:32:01 1996');
  391. </sql-statement>
  392. <sql-statement>
  393. INSERT INTO TIMESTAMP_TBL VALUES ('Dec 30 17:32:01 1996');
  394. </sql-statement>
  395. <sql-statement>
  396. INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 1996');
  397. </sql-statement>
  398. <sql-statement>
  399. INSERT INTO TIMESTAMP_TBL VALUES ('Jan 01 17:32:01 1997');
  400. </sql-statement>
  401. <sql-statement>
  402. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 28 17:32:01 1997');
  403. </sql-statement>
  404. <sql-statement>
  405. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1997');
  406. </sql-statement>
  407. -stdin-:<main>: Fatal: Execution
  408. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  409. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1997');
  410. ^
  411. -stdin-:<main>:1:1: Fatal: ERROR: date/time field value out of range: "Feb 29 17:32:01 1997"
  412. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1997');
  413. ^
  414. <sql-statement>
  415. INSERT INTO TIMESTAMP_TBL VALUES ('Mar 01 17:32:01 1997');
  416. </sql-statement>
  417. <sql-statement>
  418. INSERT INTO TIMESTAMP_TBL VALUES ('Dec 30 17:32:01 1997');
  419. </sql-statement>
  420. <sql-statement>
  421. INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 1997');
  422. </sql-statement>
  423. <sql-statement>
  424. INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 1999');
  425. </sql-statement>
  426. <sql-statement>
  427. INSERT INTO TIMESTAMP_TBL VALUES ('Jan 01 17:32:01 2000');
  428. </sql-statement>
  429. <sql-statement>
  430. INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 2000');
  431. </sql-statement>
  432. <sql-statement>
  433. INSERT INTO TIMESTAMP_TBL VALUES ('Jan 01 17:32:01 2001');
  434. </sql-statement>
  435. <sql-statement>
  436. -- Currently unsupported syntax and ranges
  437. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 -0097');
  438. </sql-statement>
  439. -stdin-:<main>: Fatal: Execution
  440. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  441. -- Currently unsupported syntax and ranges
  442. ^
  443. -stdin-:<main>:1:1: Fatal: ERROR: time zone displacement out of range: "Feb 16 17:32:01 -0097"
  444. -- Currently unsupported syntax and ranges
  445. ^
  446. <sql-statement>
  447. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC');
  448. </sql-statement>
  449. -stdin-:<main>: Fatal: Execution
  450. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  451. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC');
  452. ^
  453. -stdin-:<main>:1:1: Fatal: ERROR: timestamp out of range: "Feb 16 17:32:01 5097 BC"
  454. INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC');
  455. ^
  456. <sql-statement>
  457. SELECT d1 FROM TIMESTAMP_TBL;
  458. </sql-statement>
  459. <sql-statement>
  460. -- Check behavior at the boundaries of the timestamp range
  461. SELECT '4714-11-24 00:00:00 BC'::timestamp;
  462. </sql-statement>
  463. <sql-statement>
  464. SELECT '4714-11-23 23:59:59 BC'::timestamp; -- out of range
  465. </sql-statement>
  466. -stdin-:<main>: Fatal: Execution
  467. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  468. SELECT '4714-11-23 23:59:59 BC'::timestamp; -- out of range
  469. ^
  470. -stdin-:<main>:1:1: Fatal: ERROR: timestamp out of range: "4714-11-23 23:59:59 BC"
  471. SELECT '4714-11-23 23:59:59 BC'::timestamp; -- out of range
  472. ^
  473. <sql-statement>
  474. SELECT '294276-12-31 23:59:59'::timestamp;
  475. </sql-statement>
  476. <sql-statement>
  477. SELECT '294277-01-01 00:00:00'::timestamp; -- out of range
  478. </sql-statement>
  479. -stdin-:<main>: Fatal: Execution
  480. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  481. SELECT '294277-01-01 00:00:00'::timestamp; -- out of range
  482. ^
  483. -stdin-:<main>:1:1: Fatal: ERROR: timestamp out of range: "294277-01-01 00:00:00"
  484. SELECT '294277-01-01 00:00:00'::timestamp; -- out of range
  485. ^
  486. <sql-statement>
  487. -- Demonstrate functions and operators
  488. SELECT d1 FROM TIMESTAMP_TBL
  489. WHERE d1 > timestamp without time zone '1997-01-02';
  490. </sql-statement>
  491. <sql-statement>
  492. SELECT d1 FROM TIMESTAMP_TBL
  493. WHERE d1 < timestamp without time zone '1997-01-02';
  494. </sql-statement>
  495. <sql-statement>
  496. SELECT d1 FROM TIMESTAMP_TBL
  497. WHERE d1 = timestamp without time zone '1997-01-02';
  498. </sql-statement>
  499. <sql-statement>
  500. SELECT d1 FROM TIMESTAMP_TBL
  501. WHERE d1 != timestamp without time zone '1997-01-02';
  502. </sql-statement>
  503. <sql-statement>
  504. SELECT d1 FROM TIMESTAMP_TBL
  505. WHERE d1 <= timestamp without time zone '1997-01-02';
  506. </sql-statement>
  507. <sql-statement>
  508. SELECT d1 FROM TIMESTAMP_TBL
  509. WHERE d1 >= timestamp without time zone '1997-01-02';
  510. </sql-statement>
  511. <sql-statement>
  512. SELECT d1 - timestamp without time zone '1997-01-02' AS diff
  513. FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
  514. </sql-statement>
  515. <sql-statement>
  516. SELECT date_trunc( 'week', timestamp '2004-02-29 15:44:17.71393' ) AS week_trunc;
  517. </sql-statement>
  518. <sql-statement>
  519. -- verify date_bin behaves the same as date_trunc for relevant intervals
  520. -- case 1: AD dates, origin < input
  521. SELECT
  522. str,
  523. interval,
  524. date_trunc(str, ts) = date_bin(interval::interval, ts, timestamp '2001-01-01') AS equal
  525. FROM (
  526. VALUES
  527. ('week', '7 d'),
  528. ('day', '1 d'),
  529. ('hour', '1 h'),
  530. ('minute', '1 m'),
  531. ('second', '1 s'),
  532. ('millisecond', '1 ms'),
  533. ('microsecond', '1 us')
  534. ) intervals (str, interval),
  535. (VALUES (timestamp '2020-02-29 15:44:17.71393')) ts (ts);
  536. </sql-statement>
  537. <sql-statement>
  538. -- case 2: BC dates, origin < input
  539. SELECT
  540. str,
  541. interval,
  542. date_trunc(str, ts) = date_bin(interval::interval, ts, timestamp '2000-01-01 BC') AS equal
  543. FROM (
  544. VALUES
  545. ('week', '7 d'),
  546. ('day', '1 d'),
  547. ('hour', '1 h'),
  548. ('minute', '1 m'),
  549. ('second', '1 s'),
  550. ('millisecond', '1 ms'),
  551. ('microsecond', '1 us')
  552. ) intervals (str, interval),
  553. (VALUES (timestamp '0055-6-10 15:44:17.71393 BC')) ts (ts);
  554. </sql-statement>
  555. <sql-statement>
  556. -- case 3: AD dates, origin > input
  557. SELECT
  558. str,
  559. interval,
  560. date_trunc(str, ts) = date_bin(interval::interval, ts, timestamp '2020-03-02') AS equal
  561. FROM (
  562. VALUES
  563. ('week', '7 d'),
  564. ('day', '1 d'),
  565. ('hour', '1 h'),
  566. ('minute', '1 m'),
  567. ('second', '1 s'),
  568. ('millisecond', '1 ms'),
  569. ('microsecond', '1 us')
  570. ) intervals (str, interval),
  571. (VALUES (timestamp '2020-02-29 15:44:17.71393')) ts (ts);
  572. </sql-statement>
  573. <sql-statement>
  574. -- case 4: BC dates, origin > input
  575. SELECT
  576. str,
  577. interval,
  578. date_trunc(str, ts) = date_bin(interval::interval, ts, timestamp '0055-06-17 BC') AS equal
  579. FROM (
  580. VALUES
  581. ('week', '7 d'),
  582. ('day', '1 d'),
  583. ('hour', '1 h'),
  584. ('minute', '1 m'),
  585. ('second', '1 s'),
  586. ('millisecond', '1 ms'),
  587. ('microsecond', '1 us')
  588. ) intervals (str, interval),
  589. (VALUES (timestamp '0055-6-10 15:44:17.71393 BC')) ts (ts);
  590. </sql-statement>
  591. <sql-statement>
  592. -- bin timestamps into arbitrary intervals
  593. SELECT
  594. interval,
  595. ts,
  596. origin,
  597. date_bin(interval::interval, ts, origin)
  598. FROM (
  599. VALUES
  600. ('15 days'),
  601. ('2 hours'),
  602. ('1 hour 30 minutes'),
  603. ('15 minutes'),
  604. ('10 seconds'),
  605. ('100 milliseconds'),
  606. ('250 microseconds')
  607. ) intervals (interval),
  608. (VALUES (timestamp '2020-02-11 15:44:17.71393')) ts (ts),
  609. (VALUES (timestamp '2001-01-01')) origin (origin);
  610. </sql-statement>
  611. <sql-statement>
  612. -- shift bins using the origin parameter:
  613. SELECT date_bin('5 min'::interval, timestamp '2020-02-01 01:01:01', timestamp '2020-02-01 00:02:30');
  614. </sql-statement>
  615. <sql-statement>
  616. -- disallow intervals with months or years
  617. SELECT date_bin('5 months'::interval, timestamp '2020-02-01 01:01:01', timestamp '2001-01-01');
  618. </sql-statement>
  619. -stdin-:<main>: Fatal: Execution
  620. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  621. -- disallow intervals with months or years
  622. ^
  623. -stdin-:<main>:1:1: Fatal: ERROR: timestamps cannot be binned into intervals containing months or years
  624. -- disallow intervals with months or years
  625. ^
  626. <sql-statement>
  627. SELECT date_bin('5 years'::interval, timestamp '2020-02-01 01:01:01', timestamp '2001-01-01');
  628. </sql-statement>
  629. -stdin-:<main>: Fatal: Execution
  630. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  631. SELECT date_bin('5 years'::interval, timestamp '2020-02-01 01:01:01', timestamp '2001-01-01');
  632. ^
  633. -stdin-:<main>:1:1: Fatal: ERROR: timestamps cannot be binned into intervals containing months or years
  634. SELECT date_bin('5 years'::interval, timestamp '2020-02-01 01:01:01', timestamp '2001-01-01');
  635. ^
  636. <sql-statement>
  637. -- disallow zero intervals
  638. SELECT date_bin('0 days'::interval, timestamp '1970-01-01 01:00:00' , timestamp '1970-01-01 00:00:00');
  639. </sql-statement>
  640. -stdin-:<main>: Fatal: Execution
  641. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  642. -- disallow zero intervals
  643. ^
  644. -stdin-:<main>:1:1: Fatal: ERROR: stride must be greater than zero
  645. -- disallow zero intervals
  646. ^
  647. <sql-statement>
  648. -- disallow negative intervals
  649. SELECT date_bin('-2 days'::interval, timestamp '1970-01-01 01:00:00' , timestamp '1970-01-01 00:00:00');
  650. </sql-statement>
  651. -stdin-:<main>: Fatal: Execution
  652. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  653. -- disallow negative intervals
  654. ^
  655. -stdin-:<main>:1:1: Fatal: ERROR: stride must be greater than zero
  656. -- disallow negative intervals
  657. ^
  658. <sql-statement>
  659. -- Test casting within a BETWEEN qualifier
  660. SELECT d1 - timestamp without time zone '1997-01-02' AS diff
  661. FROM TIMESTAMP_TBL
  662. WHERE d1 BETWEEN timestamp without time zone '1902-01-01'
  663. AND timestamp without time zone '2038-01-01';
  664. </sql-statement>
  665. <sql-statement>
  666. -- DATE_PART (timestamp_part)
  667. SELECT d1 as "timestamp",
  668. date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
  669. date_part( 'day', d1) AS day, date_part( 'hour', d1) AS hour,
  670. date_part( 'minute', d1) AS minute, date_part( 'second', d1) AS second
  671. FROM TIMESTAMP_TBL;
  672. </sql-statement>
  673. <sql-statement>
  674. SELECT d1 as "timestamp",
  675. date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
  676. date_part( 'usec', d1) AS usec
  677. FROM TIMESTAMP_TBL;
  678. </sql-statement>
  679. <sql-statement>
  680. SELECT d1 as "timestamp",
  681. date_part( 'isoyear', d1) AS isoyear, date_part( 'week', d1) AS week,
  682. date_part( 'isodow', d1) AS isodow, date_part( 'dow', d1) AS dow,
  683. date_part( 'doy', d1) AS doy
  684. FROM TIMESTAMP_TBL;
  685. </sql-statement>
  686. <sql-statement>
  687. SELECT d1 as "timestamp",
  688. date_part( 'decade', d1) AS decade,
  689. date_part( 'century', d1) AS century,
  690. date_part( 'millennium', d1) AS millennium,
  691. round(date_part( 'julian', d1)) AS julian,
  692. date_part( 'epoch', d1) AS epoch
  693. FROM TIMESTAMP_TBL;
  694. </sql-statement>
  695. <sql-statement>
  696. -- extract implementation is mostly the same as date_part, so only
  697. -- test a few cases for additional coverage.
  698. SELECT d1 as "timestamp",
  699. extract(microseconds from d1) AS microseconds,
  700. extract(milliseconds from d1) AS milliseconds,
  701. extract(seconds from d1) AS seconds,
  702. round(extract(julian from d1)) AS julian,
  703. extract(epoch from d1) AS epoch
  704. FROM TIMESTAMP_TBL;
  705. </sql-statement>
  706. <sql-statement>
  707. -- value near upper bound uses special case in code
  708. SELECT date_part('epoch', '294270-01-01 00:00:00'::timestamp);
  709. </sql-statement>
  710. <sql-statement>
  711. SELECT extract(epoch from '294270-01-01 00:00:00'::timestamp);
  712. </sql-statement>
  713. <sql-statement>
  714. -- another internal overflow test case
  715. SELECT extract(epoch from '5000-01-01 00:00:00'::timestamp);
  716. </sql-statement>
  717. <sql-statement>
  718. -- TO_CHAR()
  719. SELECT to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon')
  720. FROM TIMESTAMP_TBL;
  721. </sql-statement>
  722. <sql-statement>
  723. SELECT to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM')
  724. FROM TIMESTAMP_TBL;
  725. </sql-statement>
  726. <sql-statement>
  727. SELECT to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J')
  728. FROM TIMESTAMP_TBL;
  729. </sql-statement>
  730. <sql-statement>
  731. SELECT to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ')
  732. FROM TIMESTAMP_TBL;
  733. </sql-statement>
  734. <sql-statement>
  735. SELECT to_char(d1, 'HH HH12 HH24 MI SS SSSS')
  736. FROM TIMESTAMP_TBL;
  737. </sql-statement>
  738. <sql-statement>
  739. SELECT to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""')
  740. FROM TIMESTAMP_TBL;
  741. </sql-statement>
  742. <sql-statement>
  743. SELECT to_char(d1, 'HH24--text--MI--text--SS')
  744. FROM TIMESTAMP_TBL;
  745. </sql-statement>
  746. <sql-statement>
  747. SELECT to_char(d1, 'YYYYTH YYYYth Jth')
  748. FROM TIMESTAMP_TBL;
  749. </sql-statement>
  750. <sql-statement>
  751. SELECT to_char(d1, 'YYYY A.D. YYYY a.d. YYYY bc HH:MI:SS P.M. HH:MI:SS p.m. HH:MI:SS pm')
  752. FROM TIMESTAMP_TBL;
  753. </sql-statement>
  754. <sql-statement>
  755. SELECT to_char(d1, 'IYYY IYY IY I IW IDDD ID')
  756. FROM TIMESTAMP_TBL;
  757. </sql-statement>
  758. <sql-statement>
  759. SELECT to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID')
  760. FROM TIMESTAMP_TBL;
  761. </sql-statement>
  762. <sql-statement>
  763. SELECT to_char(d, 'FF1 FF2 FF3 FF4 FF5 FF6 ff1 ff2 ff3 ff4 ff5 ff6 MS US')
  764. FROM (VALUES
  765. ('2018-11-02 12:34:56'::timestamp),
  766. ('2018-11-02 12:34:56.78'),
  767. ('2018-11-02 12:34:56.78901'),
  768. ('2018-11-02 12:34:56.78901234')
  769. ) d(d);
  770. </sql-statement>
  771. <sql-statement>
  772. -- Roman months, with upper and lower case.
  773. SELECT i,
  774. to_char(i * interval '1mon', 'rm'),
  775. to_char(i * interval '1mon', 'RM')
  776. FROM generate_series(-13, 13) i;
  777. </sql-statement>
  778. -stdin-:<main>: Error: Type annotation
  779. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  780. -- Roman months, with upper and lower case.
  781. ^
  782. -stdin-:<main>:1:1: Error: Duplicated member: to_char
  783. -- Roman months, with upper and lower case.
  784. ^
  785. <sql-statement>
  786. -- timestamp numeric fields constructor
  787. SELECT make_timestamp(2014, 12, 28, 6, 30, 45.887);
  788. </sql-statement>
  789. <sql-statement>
  790. SELECT make_timestamp(-44, 3, 15, 12, 30, 15);
  791. </sql-statement>
  792. <sql-statement>
  793. -- should fail
  794. select make_timestamp(0, 7, 15, 12, 30, 15);
  795. </sql-statement>
  796. -stdin-:<main>: Fatal: Execution
  797. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  798. -- should fail
  799. ^
  800. -stdin-:<main>:1:1: Fatal: ERROR: date field value out of range: 0-07-15
  801. -- should fail
  802. ^
  803. <sql-statement>
  804. -- generate_series for timestamp
  805. select * from generate_series('2020-01-01 00:00'::timestamp,
  806. '2020-01-02 03:00'::timestamp,
  807. '1 hour'::interval);
  808. </sql-statement>
  809. <sql-statement>
  810. -- the LIMIT should allow this to terminate in a reasonable amount of time
  811. -- (but that unfortunately doesn't work yet for SELECT * FROM ...)
  812. select generate_series('2022-01-01 00:00'::timestamp,
  813. 'infinity'::timestamp,
  814. '1 month'::interval) limit 10;
  815. </sql-statement>
  816. -stdin-:<main>: Error: Parse Sql
  817. -stdin-:<main>:3:8: Error: Generator functions are not allowed in: SELECT
  818. select generate_series('2022-01-01 00:00'::timestamp,
  819. ^
  820. <sql-statement>
  821. -- errors
  822. select * from generate_series('2020-01-01 00:00'::timestamp,
  823. '2020-01-02 03:00'::timestamp,
  824. '0 hour'::interval);
  825. </sql-statement>
  826. -stdin-:<main>: Fatal: Execution
  827. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  828. -- errors
  829. ^
  830. -stdin-:<main>:1:1: Fatal: ERROR: step size cannot equal zero
  831. -- errors
  832. ^