Skip to content

Instantly share code, notes, and snippets.

@sodre
Last active April 4, 2016 03:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sodre/471742b1ad297f072f0c31d38c80c833 to your computer and use it in GitHub Desktop.
Save sodre/471742b1ad297f072f0c31d38c80c833 to your computer and use it in GitHub Desktop.
make check with "--enable-cassert" using serial_schedule instead of parallel.
[postgres@pgxl-dev ~/cores]$ mdb -e '::stack' core.postgres.80981
AllocSetCheck+0x122(87feb90, 87367cc, 9e, 0, 87feb90, 8046b44)
AllocSetDelete+0x14(87feb90, 0, 9e, 0, 8716960, 885c650)
MemoryContextDelete+0x6c(87feb90, 3, 0, 0, 0, 885c650)
MemoryContextDeleteChildren+0x29(885c650, fef0e000, 8046b38, fee8f0b7, 8767794,
885c08c)
MemoryContextDelete+0x33(885c650, 86f7790, 8046b28, 0, 8046b44, 87ac874)
MemoryContextDeleteChildren+0x29(885c08c, 8767794, 8046b58, fee8f122)
AtAbort_Portals+0x96(0, 0, 0, 815f23d, 35363236, 86e0000)
AbortTransaction+0x12d(837e990, 0, 8046f38, 839e1c9, 0, fefce76d)
AbortCurrentTransaction+0x25(0, fefce76d, feffb0a8, fef0e000, feda2a40, 8046bfc
)
PostgresMain+0x1559(1, 8714e48, 8714c9c, 8714c80, 8046fb0, feffb0a8)
ServerLoop+0x9eb(7, 0, 41d3d, 41d3d, 0, 872c480)
PostmasterMain+0x1135(b, 8714410, 73, 73, 100, feffb0a8)
main+0x4a0(804793c, fef18728, 804797c, 80dd863, b, 8047988)
_start+0x83(b, 8047abc, 8047f98, 8047f98, 8047f98, 8047f98)
test tablespace ... ok
test boolean ... ok
test char ... FAILED
test name ... FAILED
test varchar ... FAILED
test text ... FAILED
test int2 ... FAILED (test process exited with exit code 2)
test int4 ... FAILED (test process exited with exit code 2)
test int8 ... FAILED (test process exited with exit code 2)
test oid ... FAILED (test process exited with exit code 2)
test float4 ... FAILED (test process exited with exit code 2)
test float8 ... FAILED (test process exited with exit code 2)
test bit ... FAILED (test process exited with exit code 2)
test numeric ... FAILED (test process exited with exit code 2)
test txid ... FAILED (test process exited with exit code 2)
test uuid ... FAILED (test process exited with exit code 2)
test enum ... FAILED (test process exited with exit code 2)
test money ... FAILED (test process exited with exit code 2)
test rangetypes ... FAILED (test process exited with exit code 2)
test pg_lsn ... FAILED (test process exited with exit code 2)
test regproc ... FAILED (test process exited with exit code 2)
test strings ... FAILED (test process exited with exit code 2)
test numerology ... FAILED (test process exited with exit code 2)
test point ... FAILED (test process exited with exit code 2)
test lseg ... FAILED (test process exited with exit code 2)
test line ... FAILED (test process exited with exit code 2)
test box ... FAILED (test process exited with exit code 2)
test path ... FAILED (test process exited with exit code 2)
test polygon ... FAILED (test process exited with exit code 2)
test circle ... FAILED (test process exited with exit code 2)
test date ... FAILED (test process exited with exit code 2)
test time ... FAILED (test process exited with exit code 2)
test timetz ... FAILED (test process exited with exit code 2)
test timestamp ... FAILED (test process exited with exit code 2)
test timestamptz ... FAILED (test process exited with exit code 2)
test interval ... FAILED (test process exited with exit code 2)
test abstime ... FAILED (test process exited with exit code 2)
test reltime ... FAILED (test process exited with exit code 2)
test tinterval ... FAILED (test process exited with exit code 2)
test inet ... FAILED (test process exited with exit code 2)
test macaddr ... FAILED (test process exited with exit code 2)
test tstypes ... FAILED (test process exited with exit code 2)
test comments ... FAILED (test process exited with exit code 2)
test geometry ... FAILED (test process exited with exit code 2)
test horology ... FAILED (test process exited with exit code 2)
test regex ... FAILED (test process exited with exit code 2)
test oidjoins ... FAILED (test process exited with exit code 2)
test type_sanity ... FAILED (test process exited with exit code 2)
test opr_sanity ... FAILED (test process exited with exit code 2)
test insert ... FAILED (test process exited with exit code 2)
test insert_conflict ... FAILED (test process exited with exit code 2)
test create_function_1 ... FAILED (test process exited with exit code 2)
test create_type ... FAILED (test process exited with exit code 2)
test create_table ... FAILED (test process exited with exit code 2)
test create_function_2 ... FAILED (test process exited with exit code 2)
test copy ... FAILED (test process exited with exit code 2)
test copyselect ... FAILED (test process exited with exit code 2)
test create_misc ... FAILED
test create_operator ... FAILED
test create_index ... FAILED
test create_view ... FAILED
test create_aggregate ... ok
test create_function_3 ... ok
test create_cast ... ok
test constraints ... FAILED
test triggers ... FAILED
test inherit ... FAILED
test create_table_like ... ok
test typed_table ... ok
test vacuum ... ok
test drop_if_exists ... ok
test updatable_views ... ok
test rolenames ... ok
test roleattributes ... ok
test sanity_check ... FAILED
test errors ... FAILED
test select ... FAILED
test select_into ... FAILED
test select_distinct ... FAILED
test select_distinct_on ... FAILED
test select_implicit ... FAILED
test select_having ... ok
test subselect ... FAILED
test union ... FAILED
test case ... FAILED
test join ... FAILED
test aggregates ... FAILED
test groupingsets ... FAILED
test transactions ... FAILED
test random ... FAILED
test portals ... FAILED
test arrays ... FAILED
test btree_index ... FAILED
test hash_index ... FAILED
test update ... FAILED
test delete ... FAILED
test namespace ... ok
test brin ... FAILED
test gin ... ok
test gist ... FAILED
test spgist ... ok
test privileges ... FAILED
test security_label ... ok
test collate ... FAILED
test matview ... ok
test lock ... FAILED
test replica_identity ... ok
test rowsecurity ... FAILED
test object_address ... ok
test tablesample ... FAILED
test alter_generic ... ok
test misc ... FAILED
test psql ... ok
test async ... ok
test rules ... FAILED
test select_views ... FAILED
test portals_p2 ... FAILED
test foreign_key ... FAILED
test cluster ... FAILED
test dependency ... ok
test guc ... ok
test bitmapops ... ok
test combocid ... FAILED
test tsearch ... FAILED
test tsdicts ... ok
test foreign_data ... ok
test window ... FAILED
test xmlmap ... FAILED
test functional_deps ... ok
test advisory_lock ... ok
test json ... ok
test jsonb ... FAILED
test json_encoding ... ok
test indirect_toast ... FAILED
test equivclass ... ok
test plancache ... FAILED
test limit ... FAILED
test plpgsql ... FAILED
test copy2 ... FAILED
test temp ... FAILED
test domain ... FAILED
test rangefuncs ... FAILED
test prepare ... FAILED
test without_oid ... ok
test conversion ... ok
test truncate ... FAILED
test alter_table ... FAILED
test sequence ... FAILED
test polymorphism ... FAILED
test rowtypes ... FAILED
test returning ... FAILED
test largeobject ... ok
test with ... FAILED
test xml ... FAILED
test event_trigger ... ok
test stats ... FAILED
test xc_create_function ... ok
test xc_groupby ... FAILED
test xc_distkey ... FAILED
test xc_having ... FAILED
test xc_temp ... FAILED
test xc_remote ... FAILED
test xc_node ... ok
test xc_FQS ... FAILED
test xc_FQS_join ... FAILED
test xc_misc ... FAILED
test xc_copy ... ok
test xc_alter_table ... FAILED
test xc_sequence ... FAILED
test xc_prepared_xacts ... ok
test xc_notrans_block ... FAILED
test xl_primary_key ... ok
test xl_foreign_key ... ok
test xl_distribution_column_types ... ok
test xl_alter_table ... ok
test xl_distribution_column_types_modulo ... ok
test xl_plan_pushdown ... ok
test xl_functions ... ok
test xl_limitations ... FAILED
test xl_user_defined_functions ... FAILED
test xl_join ... ok
This file has been truncated, but you can view the full file.
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/char_1.out 2016-04-02 21:48:12.912760119 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/char.out 2016-04-04 03:18:29.833675582 +0000
***************
*** 26,31 ****
--- 26,43 ----
ERROR: value too long for type character(1)
INSERT INTO CHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM CHAR_TBL ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8875da4 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8875da4 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 8875da4
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8875db0 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8875db0 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 8875db0
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8875de4 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8875de4 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 8875de4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 8875df0 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 8875df0
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88753d0
seven | f1
-------+----
|
***************
*** 40,45 ****
--- 52,69 ----
SELECT '' AS six, c.*
FROM CHAR_TBL c
WHERE c.f1 <> 'a' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756a0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756a0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88756a0
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756ac in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756ac in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88756ac
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756e0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756e0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88756e0
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88756ec in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88756ec
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 8874fc8
six | f1
-----+----
|
***************
*** 61,66 ****
--- 85,102 ----
SELECT '' AS five, c.*
FROM CHAR_TBL c
WHERE c.f1 < 'a' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756a0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756a0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88756a0
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756ac in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756ac in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88756ac
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756e0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756e0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88756e0
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88756ec in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88756ec
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 8874fc8
five | f1
------+----
|
***************
*** 72,77 ****
--- 108,125 ----
SELECT '' AS six, c.*
FROM CHAR_TBL c
WHERE c.f1 <= 'a' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acf30 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acf30 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acf30
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acf3c in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acf3c in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acf3c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acf70 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acf70 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acf70
+ WARNING: problem in alloc set TupleSort: bad single-chunk 87acf7c in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acf7c
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 87ac858
six | f1
-----+----
|
***************
*** 84,89 ****
--- 132,149 ----
SELECT '' AS one, c.*
FROM CHAR_TBL c
WHERE c.f1 > 'a' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b680 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b680 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b680
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b68c in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b68c in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b68c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b6c0 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b6c0 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b6c0
+ WARNING: problem in alloc set TupleSort: bad single-chunk 886b6cc in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b6cc
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 886afa8
one | f1
-----+----
| A
***************
*** 93,98 ****
--- 153,170 ----
SELECT '' AS two, c.*
FROM CHAR_TBL c
WHERE c.f1 >= 'a' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b680 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b680 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b680
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b68c in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b68c in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b68c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b6c0 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b6c0 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b6c0
+ WARNING: problem in alloc set TupleSort: bad single-chunk 886b6cc in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b6cc
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 886afa8
two | f1
-----+----
| a
***************
*** 112,117 ****
--- 184,201 ----
ERROR: value too long for type character(4)
INSERT INTO CHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM CHAR_TBL ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acf30 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acf30 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acf30
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acf3c in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acf3c in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acf3c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acf70 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acf70 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acf70
+ WARNING: problem in alloc set TupleSort: bad single-chunk 87acf7c in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acf7c
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 87ac858
four | f1
------+------
| a
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/name.out 2016-04-02 21:48:12.923552388 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/name.out 2016-04-04 03:18:29.918435339 +0000
***************
*** 27,32 ****
--- 27,44 ----
INSERT INTO NAME_TBL(f1) VALUES ('');
INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ');
SELECT '' AS seven, * FROM NAME_TBL ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8871990 in block 88713c8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8871990 in block 88713c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88713c8, chunk 8871990
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 887199c in block 88713c8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 887199c in block 88713c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88713c8, chunk 887199c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88719d0 in block 88713c8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88719d0 in block 88713c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88713c8, chunk 88719d0
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88719dc in block 88713c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88713c8, chunk 88719dc
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88713c8
seven | f1
-------+-----------------------------------------------------------------
|
***************
*** 39,44 ****
--- 51,68 ----
(7 rows)
SELECT '' AS six, c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8875294 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8875294 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 8875294
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88752a0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88752a0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88752a0
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88752d4 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88752d4 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88752d4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88752e0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88752e0
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 8874fc8
six | f1
-----+-----------------------------------------------------------------
|
***************
*** 56,67 ****
--- 80,115 ----
(2 rows)
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8875294 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8875294 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 8875294
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88752a0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88752a0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88752a0
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88752d4 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88752d4 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88752d4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88752e0 in block 8874fc8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8874fc8, chunk 88752e0
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 8874fc8
three | f1
-------+----
|
(1 row)
SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acb24 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acb24 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acb24
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acb30 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acb30 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acb30
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acb64 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acb64 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acb64
+ WARNING: problem in alloc set TupleSort: bad single-chunk 87acb70 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acb70
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 87ac858
four | f1
------+-----------------------------------------------------------------
|
***************
*** 70,75 ****
--- 118,135 ----
(3 rows)
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b274 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b274 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b274
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b280 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b280 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b280
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b2b4 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b2b4 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b2b4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 886b2c0 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b2c0
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 886afa8
three | f1
-------+-----------------------------------------------------------------
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
***************
*** 79,84 ****
--- 139,156 ----
(4 rows)
SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b274 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b274 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b274
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b280 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b280 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b280
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b2b4 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b2b4 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b2b4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 886b2c0 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b2c0
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 886afa8
four | f1
------+-----------------------------------------------------------------
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
***************
*** 90,95 ****
--- 162,179 ----
(6 rows)
SELECT '' AS seven, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acb24 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acb24 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acb24
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acb30 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acb30 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acb30
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 87acb64 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 87acb64 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acb64
+ WARNING: problem in alloc set TupleSort: bad single-chunk 87acb70 in block 87ac858
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 87ac858, chunk 87acb70
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 87ac858
seven | f1
-------+-----------------------------------------------------------------
|
***************
*** 102,112 ****
--- 186,215 ----
(7 rows)
SELECT '' AS zero, c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b274 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b274 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b274
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886b280 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886b280 in block 886afa8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886afa8, chunk 886b280
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 886afa8
zero | f1
------+----
(0 rows)
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 887128c in block 8870fc0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 887128c in block 8870fc0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8870fc0, chunk 887128c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8871298 in block 8870fc0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8871298 in block 8870fc0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8870fc0, chunk 8871298
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88712cc in block 8870fc0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88712cc in block 8870fc0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8870fc0, chunk 88712cc
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88712d8 in block 8870fc0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 8870fc0, chunk 88712d8
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 8870fc0
three | f1
-------+-----------------------------------------------------------------
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
***************
*** 117,122 ****
--- 220,237 ----
(5 rows)
SELECT '' AS two, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8878a94 in block 88787c8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8878a94 in block 88787c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88787c8, chunk 8878a94
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8878aa0 in block 88787c8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8878aa0 in block 88787c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88787c8, chunk 8878aa0
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8878ad4 in block 88787c8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8878ad4 in block 88787c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88787c8, chunk 8878ad4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 8878ae0 in block 88787c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88787c8, chunk 8878ae0
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88787c8
two | f1
-----+------------
| asdfghjkl;
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/varchar_1.out 2016-04-02 21:48:12.942220813 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/varchar.out 2016-04-04 03:18:29.998575378 +0000
***************
*** 15,20 ****
--- 15,32 ----
ERROR: value too long for type character varying(1)
INSERT INTO VARCHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM VARCHAR_TBL ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88705a8 in block 886f7c8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88705a8 in block 886f7c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886f7c8, chunk 88705a8
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88705b4 in block 886f7c8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88705b4 in block 886f7c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886f7c8, chunk 88705b4
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88705e8 in block 886f7c8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88705e8 in block 886f7c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886f7c8, chunk 88705e8
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88705f4 in block 886f7c8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886f7c8, chunk 88705f4
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 886f7c8
seven | f1
-------+----
|
***************
*** 29,34 ****
--- 41,58 ----
SELECT '' AS six, c.*
FROM VARCHAR_TBL c
WHERE c.f1 <> 'a' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8876348 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8876348 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88757d8, chunk 8876348
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8876354 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8876354 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88757d8, chunk 8876354
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8876388 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8876388 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88757d8, chunk 8876388
+ WARNING: problem in alloc set TupleSort: bad single-chunk 8876394 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88757d8, chunk 8876394
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88757d8
six | f1
-----+----
|
***************
*** 50,55 ****
--- 74,91 ----
SELECT '' AS five, c.*
FROM VARCHAR_TBL c
WHERE c.f1 < 'a' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8869f20 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8869f20 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f20
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8869f2c in block 88693b0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8869f2c in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f2c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8869f60 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8869f60 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f60
+ WARNING: problem in alloc set TupleSort: bad single-chunk 8869f6c in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f6c
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88693b0
five | f1
------+----
|
***************
*** 61,66 ****
--- 97,114 ----
SELECT '' AS six, c.*
FROM VARCHAR_TBL c
WHERE c.f1 <= 'a' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8865f10 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8865f10 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 8865f10
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8865f1c in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8865f1c in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 8865f1c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8865f50 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8865f50 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 8865f50
+ WARNING: problem in alloc set TupleSort: bad single-chunk 8865f5c in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 8865f5c
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88653a0
six | f1
-----+----
|
***************
*** 82,87 ****
--- 130,147 ----
SELECT '' AS two, c.*
FROM VARCHAR_TBL c
WHERE c.f1 >= 'a' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8869f20 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8869f20 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f20
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8869f2c in block 88693b0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8869f2c in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f2c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8869f60 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8869f60 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f60
+ WARNING: problem in alloc set TupleSort: bad single-chunk 8869f6c in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f6c
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88693b0
two | f1
-----+----
| a
***************
*** 101,106 ****
--- 161,178 ----
ERROR: value too long for type character varying(4)
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM VARCHAR_TBL ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8869f20 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8869f20 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f20
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8869f2c in block 88693b0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8869f2c in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f2c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8869f60 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8869f60 in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f60
+ WARNING: problem in alloc set TupleSort: bad single-chunk 8869f6c in block 88693b0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88693b0, chunk 8869f6c
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88693b0
four | f1
------+------
| a
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/text.out 2016-04-02 21:48:12.938774465 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/text.out 2016-04-04 03:18:30.065187390 +0000
***************
*** 17,22 ****
--- 17,34 ----
INSERT INTO TEXT_TBL VALUES ('doh!');
INSERT INTO TEXT_TBL VALUES ('hi de ho neighbor');
SELECT '' AS two, * FROM TEXT_TBL ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88721a0 in block 88713c0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88721a0 in block 88713c0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88713c0, chunk 88721a0
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88721ac in block 88713c0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88721ac in block 88713c0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88713c0, chunk 88721ac
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88721e0 in block 88713c0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88721e0 in block 88713c0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88713c0, chunk 88721e0
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88721ec in block 88713c0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88713c0, chunk 88721ec
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88713c0
two | f1
-----+-------------------
| doh!
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/int2.out 2016-04-02 21:48:12.920677304 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/int2.out 2016-04-04 03:18:30.315575995 +0000
***************
*** 42,47 ****
--- 42,59 ----
LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('');
^
SELECT '' AS five, * FROM INT2_TBL ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886bd88 in block 886b7c0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886bd88 in block 886b7c0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886b7c0, chunk 886bd88
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886bd94 in block 886b7c0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886bd94 in block 886b7c0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886b7c0, chunk 886bd94
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886bdc8 in block 886b7c0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886bdc8 in block 886b7c0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886b7c0, chunk 886bdc8
+ WARNING: problem in alloc set TupleSort: bad single-chunk 886bdd4 in block 886b7c0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886b7c0, chunk 886bdd4
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 886b7c0
five | f1
------+--------
| -32767
***************
*** 52,57 ****
--- 64,81 ----
(5 rows)
SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> int2 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 887569c in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 887569c in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 887569c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756a8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756a8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756a8
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756dc in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756dc in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756dc
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88756e8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756e8
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88753d0
four | f1
------+--------
| -32767
***************
*** 61,66 ****
--- 85,102 ----
(4 rows)
SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> int4 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 887569c in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 887569c in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 887569c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756a8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756a8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756a8
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756dc in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756dc in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756dc
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88756e8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756e8
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88753d0
four | f1
------+--------
| -32767
***************
*** 82,87 ****
--- 118,135 ----
(1 row)
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < int2 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 887569c in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 887569c in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 887569c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756a8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756a8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756a8
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756dc in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756dc in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756dc
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88756e8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756e8
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88753d0
two | f1
-----+--------
| -32767
***************
*** 89,94 ****
--- 137,154 ----
(2 rows)
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < int4 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d684 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d684 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d684
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d690 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d690 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d690
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d6c4 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d6c4 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d6c4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 886d6d0 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d6d0
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 886d3b8
two | f1
-----+--------
| -32767
***************
*** 96,101 ****
--- 156,173 ----
(2 rows)
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= int2 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886566c in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886566c in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 886566c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8865678 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8865678 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 8865678
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88656ac in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88656ac in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 88656ac
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88656b8 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 88656b8
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88653a0
three | f1
-------+--------
| -32767
***************
*** 104,109 ****
--- 176,193 ----
(3 rows)
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= int4 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 887569c in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 887569c in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 887569c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756a8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756a8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756a8
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756dc in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756dc in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756dc
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88756e8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756e8
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88753d0
three | f1
-------+--------
| -32767
***************
*** 112,117 ****
--- 196,213 ----
(3 rows)
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > int2 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d684 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d684 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d684
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d690 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d690 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d690
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d6c4 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d6c4 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d6c4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 886d6d0 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d6d0
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 886d3b8
two | f1
-----+-------
| 1234
***************
*** 119,124 ****
--- 215,232 ----
(2 rows)
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > int4 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886566c in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886566c in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 886566c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8865678 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8865678 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 8865678
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88656ac in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88656ac in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 88656ac
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88656b8 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 88656b8
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88653a0
two | f1
-----+-------
| 1234
***************
*** 126,131 ****
--- 234,251 ----
(2 rows)
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= int2 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 887569c in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 887569c in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 887569c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756a8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756a8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756a8
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88756dc in block 88753d0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88756dc in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756dc
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88756e8 in block 88753d0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88753d0, chunk 88756e8
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88753d0
three | f1
-------+-------
| 0
***************
*** 134,139 ****
--- 254,271 ----
(3 rows)
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= int4 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d684 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d684 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d684
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d690 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d690 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d690
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d6c4 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d6c4 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d6c4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 886d6d0 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d6d0
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 886d3b8
three | f1
-------+-------
| 0
***************
*** 143,148 ****
--- 275,292 ----
-- positive odds
SELECT '' AS one, i.* FROM INT2_TBL i WHERE (i.f1 % int2 '2') = int2 '1' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886566c in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886566c in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 886566c
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8865678 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8865678 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 8865678
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 88656ac in block 88653a0
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 88656ac in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 88656ac
+ WARNING: problem in alloc set TupleSort: bad single-chunk 88656b8 in block 88653a0
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88653a0, chunk 88656b8
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88653a0
one | f1
-----+-------
| 32767
***************
*** 150,155 ****
--- 294,311 ----
-- any evens
SELECT '' AS three, i.* FROM INT2_TBL i WHERE (i.f1 % int4 '2') = int2 '0' ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8875aa4 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8875aa4 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88757d8, chunk 8875aa4
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8875ab0 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8875ab0 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88757d8, chunk 8875ab0
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 8875ae4 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 8875ae4 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88757d8, chunk 8875ae4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 8875af0 in block 88757d8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 88757d8, chunk 8875af0
+ WARNING: problem in alloc set TupleSort: found inconsistent memory block 88757d8
three | f1
-------+-------
| -1234
***************
*** 158,288 ****
(3 rows)
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i ORDER BY f1;
ERROR: smallint out of range
! SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i
! WHERE abs(f1) < 16384 ORDER BY f1;
! five | f1 | x
! ------+-------+-------
! | -1234 | -2468
! | 0 | 0
! | 1234 | 2468
! (3 rows)
!
! SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT2_TBL i ORDER BY f1;
! five | f1 | x
! ------+--------+--------
! | -32767 | -65534
! | -1234 | -2468
! | 0 | 0
! | 1234 | 2468
! | 32767 | 65534
! (5 rows)
!
! SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i ORDER BY f1;
! ERROR: smallint out of range
! SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i
! WHERE f1 < 32766 ORDER BY f1;
! five | f1 | x
! ------+--------+--------
! | -32767 | -32765
! | -1234 | -1232
! | 0 | 2
! | 1234 | 1236
! (4 rows)
!
! SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT2_TBL i ORDER BY f1;
! five | f1 | x
! ------+--------+--------
! | -32767 | -32765
! | -1234 | -1232
! | 0 | 2
! | 1234 | 1236
! | 32767 | 32769
! (5 rows)
!
! SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i ORDER BY f1;
! ERROR: smallint out of range
! SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i
! WHERE f1 > -32767 ORDER BY f1;
! five | f1 | x
! ------+-------+-------
! | -1234 | -1236
! | 0 | -2
! | 1234 | 1232
! | 32767 | 32765
! (4 rows)
!
! SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT2_TBL i ORDER BY f1;
! five | f1 | x
! ------+--------+--------
! | -32767 | -32769
! | -1234 | -1236
! | 0 | -2
! | 1234 | 1232
! | 32767 | 32765
! (5 rows)
!
! SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT2_TBL i ORDER BY f1;
! five | f1 | x
! ------+--------+--------
! | -32767 | -16383
! | -1234 | -617
! | 0 | 0
! | 1234 | 617
! | 32767 | 16383
! (5 rows)
!
! SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT2_TBL i ORDER BY f1;
! five | f1 | x
! ------+--------+--------
! | -32767 | -16383
! | -1234 | -617
! | 0 | 0
! | 1234 | 617
! | 32767 | 16383
! (5 rows)
!
! -- corner cases
! SELECT (-1::int2<<15)::text;
! text
! --------
! -32768
! (1 row)
!
! SELECT ((-1::int2<<15)+1::int2)::text;
! text
! --------
! -32767
! (1 row)
!
! -- check sane handling of INT16_MIN overflow cases
! SELECT (-32768)::int2 * (-1)::int2;
! ERROR: smallint out of range
! SELECT (-32768)::int2 / (-1)::int2;
! ERROR: smallint out of range
! SELECT (-32768)::int2 % (-1)::int2;
! ?column?
! ----------
! 0
! (1 row)
!
! -- check rounding when casting from float
! SELECT x, x::int2 AS int2_value
! FROM (VALUES (-2.5::float8),
! (-1.5::float8),
! (-0.5::float8),
! (0.0::float8),
! (0.5::float8),
! (1.5::float8),
! (2.5::float8)) t(x);
! x | int2_value
! ------+------------
! -2.5 | -2
! -1.5 | -2
! -0.5 | 0
! 0 | 0
! 0.5 | 0
! 1.5 | 2
! 2.5 | 2
! (7 rows)
!
--- 314,331 ----
(3 rows)
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i ORDER BY f1;
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d684 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d684 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d684
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d690 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bad size 0 for chunk 886d690 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d690
+ WARNING: problem in alloc set TupleSort: req size > alloc size for chunk 886d6c4 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d6c4
+ WARNING: problem in alloc set TupleSort: bad single-chunk 886d6e6 in block 886d3b8
+ WARNING: problem in alloc set TupleSort: bogus aset link in block 886d3b8, chunk 886d6e6
ERROR: smallint out of range
! server closed the connection unexpectedly
! This probably means the server terminated abnormally
! before or while processing the request.
! connection to server was lost
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/int4_1.out 2016-04-02 21:48:12.920777490 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/int4.out 2016-04-04 03:18:30.383954228 +0000
***************
*** 1,344 ****
! --
! -- INT4
! --
! CREATE TABLE INT4_TBL(f1 int4);
! INSERT INTO INT4_TBL(f1) VALUES (' 0 ');
! INSERT INTO INT4_TBL(f1) VALUES ('123456 ');
! INSERT INTO INT4_TBL(f1) VALUES (' -123456');
! INSERT INTO INT4_TBL(f1) VALUES ('34.5');
! ERROR: invalid input syntax for integer: "34.5"
! LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('34.5');
! ^
! -- largest and smallest values
! INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
! INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
! -- bad input values -- should give errors
! INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
! ERROR: value "1000000000000" is out of range for type integer
! LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
! ^
! INSERT INTO INT4_TBL(f1) VALUES ('asdf');
! ERROR: invalid input syntax for integer: "asdf"
! LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('asdf');
! ^
! INSERT INTO INT4_TBL(f1) VALUES (' ');
! ERROR: invalid input syntax for integer: " "
! LINE 1: INSERT INTO INT4_TBL(f1) VALUES (' ');
! ^
! INSERT INTO INT4_TBL(f1) VALUES (' asdf ');
! ERROR: invalid input syntax for integer: " asdf "
! LINE 1: INSERT INTO INT4_TBL(f1) VALUES (' asdf ');
! ^
! INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
! ERROR: invalid input syntax for integer: "- 1234"
! LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
! ^
! INSERT INTO INT4_TBL(f1) VALUES ('123 5');
! ERROR: invalid input syntax for integer: "123 5"
! LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('123 5');
! ^
! INSERT INTO INT4_TBL(f1) VALUES ('');
! ERROR: invalid input syntax for integer: ""
! LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('');
! ^
! SELECT '' AS five, * FROM INT4_TBL ORDER BY f1;
! five | f1
! ------+-------------
! | -2147483647
! | -123456
! | 0
! | 123456
! | 2147483647
! (5 rows)
!
! SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0' ORDER BY f1;
! four | f1
! ------+-------------
! | -2147483647
! | -123456
! | 123456
! | 2147483647
! (4 rows)
!
! SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0' ORDER BY f1;
! four | f1
! ------+-------------
! | -2147483647
! | -123456
! | 123456
! | 2147483647
! (4 rows)
!
! SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int2 '0';
! one | f1
! -----+----
! | 0
! (1 row)
!
! SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int4 '0';
! one | f1
! -----+----
! | 0
! (1 row)
!
! SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int2 '0' ORDER BY f1;
! two | f1
! -----+-------------
! | -2147483647
! | -123456
! (2 rows)
!
! SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int4 '0' ORDER BY f1;
! two | f1
! -----+-------------
! | -2147483647
! | -123456
! (2 rows)
!
! SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0' ORDER BY f1;
! three | f1
! -------+-------------
! | -2147483647
! | -123456
! | 0
! (3 rows)
!
! SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0' ORDER BY f1;
! three | f1
! -------+-------------
! | -2147483647
! | -123456
! | 0
! (3 rows)
!
! SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int2 '0' ORDER BY f1;
! two | f1
! -----+------------
! | 123456
! | 2147483647
! (2 rows)
!
! SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int4 '0' ORDER BY f1;
! two | f1
! -----+------------
! | 123456
! | 2147483647
! (2 rows)
!
! SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0' ORDER BY f1;
! three | f1
! -------+------------
! | 0
! | 123456
! | 2147483647
! (3 rows)
!
! SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0' ORDER BY f1;
! three | f1
! -------+------------
! | 0
! | 123456
! | 2147483647
! (3 rows)
!
! -- positive odds
! SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1' ORDER BY f1;
! one | f1
! -----+------------
! | 2147483647
! (1 row)
!
! -- any evens
! SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0' ORDER BY f1;
! three | f1
! -------+---------
! | -123456
! | 0
! | 123456
! (3 rows)
!
! SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i ORDER BY f1;
! ERROR: integer out of range
! SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i
! WHERE abs(f1) < 1073741824 ORDER BY f1;
! five | f1 | x
! ------+---------+---------
! | -123456 | -246912
! | 0 | 0
! | 123456 | 246912
! (3 rows)
!
! SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i ORDER BY f1;
! ERROR: integer out of range
! SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i
! WHERE abs(f1) < 1073741824 ORDER BY f1;
! five | f1 | x
! ------+---------+---------
! | -123456 | -246912
! | 0 | 0
! | 123456 | 246912
! (3 rows)
!
! SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i ORDER BY f1;
! ERROR: integer out of range
! SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i
! WHERE f1 < 2147483646 ORDER BY f1;
! five | f1 | x
! ------+-------------+-------------
! | -2147483647 | -2147483645
! | -123456 | -123454
! | 0 | 2
! | 123456 | 123458
! (4 rows)
!
! SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i ORDER BY f1;
! ERROR: integer out of range
! SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i
! WHERE f1 < 2147483646 ORDER BY f1;
! five | f1 | x
! ------+-------------+-------------
! | -2147483647 | -2147483645
! | -123456 | -123454
! | 0 | 2
! | 123456 | 123458
! (4 rows)
!
! SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i ORDER BY f1;
! ERROR: integer out of range
! SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i
! WHERE f1 > -2147483647 ORDER BY f1;
! five | f1 | x
! ------+------------+------------
! | -123456 | -123458
! | 0 | -2
! | 123456 | 123454
! | 2147483647 | 2147483645
! (4 rows)
!
! SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i ORDER BY f1;
! ERROR: integer out of range
! SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i
! WHERE f1 > -2147483647 ORDER BY f1;
! five | f1 | x
! ------+------------+------------
! | -123456 | -123458
! | 0 | -2
! | 123456 | 123454
! | 2147483647 | 2147483645
! (4 rows)
!
! SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i ORDER BY f1;
! five | f1 | x
! ------+-------------+-------------
! | -2147483647 | -1073741823
! | -123456 | -61728
! | 0 | 0
! | 123456 | 61728
! | 2147483647 | 1073741823
! (5 rows)
!
! SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i ORDER BY f1;
! five | f1 | x
! ------+-------------+-------------
! | -2147483647 | -1073741823
! | -123456 | -61728
! | 0 | 0
! | 123456 | 61728
! | 2147483647 | 1073741823
! (5 rows)
!
! --
! -- more complex expressions
! --
! -- variations on unary minus parsing
! SELECT -2+3 AS one;
! one
! -----
! 1
! (1 row)
!
! SELECT 4-2 AS two;
! two
! -----
! 2
! (1 row)
!
! SELECT 2- -1 AS three;
! three
! -------
! 3
! (1 row)
!
! SELECT 2 - -2 AS four;
! four
! ------
! 4
! (1 row)
!
! SELECT int2 '2' * int2 '2' = int2 '16' / int2 '4' AS true;
! true
! ------
! t
! (1 row)
!
! SELECT int4 '2' * int2 '2' = int2 '16' / int4 '4' AS true;
! true
! ------
! t
! (1 row)
!
! SELECT int2 '2' * int4 '2' = int4 '16' / int2 '4' AS true;
! true
! ------
! t
! (1 row)
!
! SELECT int4 '1000' < int4 '999' AS false;
! false
! -------
! f
! (1 row)
!
! SELECT 4! AS twenty_four;
! twenty_four
! -------------
! 24
! (1 row)
!
! SELECT !!3 AS six;
! six
! -----
! 6
! (1 row)
!
! SELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS ten;
! ten
! -----
! 10
! (1 row)
!
! SELECT 2 + 2 / 2 AS three;
! three
! -------
! 3
! (1 row)
!
! SELECT (2 + 2) / 2 AS two;
! two
! -----
! 2
! (1 row)
!
! -- corner case
! SELECT (-1::int4<<31)::text;
! text
! -------------
! -2147483648
! (1 row)
!
! SELECT ((-1::int4<<31)+1)::text;
! text
! -------------
! -2147483647
! (1 row)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/int8.out 2016-04-02 21:48:12.921038379 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/int8.out 2016-04-04 03:18:30.413192439 +0000
***************
*** 1,870 ****
! --
! -- INT8
! -- Test int8 64-bit integers.
! --
! --XL: because of how it is used later, make replicated to avoid failures
! -- to avoid partition column update
! CREATE TABLE INT8_TBL(q1 int8, q2 int8) DISTRIBUTE BY REPLICATION;
! INSERT INTO INT8_TBL VALUES(' 123 ',' 456');
! INSERT INTO INT8_TBL VALUES('123 ','4567890123456789');
! INSERT INTO INT8_TBL VALUES('4567890123456789','123');
! INSERT INTO INT8_TBL VALUES(+4567890123456789,'4567890123456789');
! INSERT INTO INT8_TBL VALUES('+4567890123456789','-4567890123456789');
! -- bad inputs
! INSERT INTO INT8_TBL(q1) VALUES (' ');
! ERROR: invalid input syntax for integer: " "
! LINE 1: INSERT INTO INT8_TBL(q1) VALUES (' ');
! ^
! INSERT INTO INT8_TBL(q1) VALUES ('xxx');
! ERROR: invalid input syntax for integer: "xxx"
! LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('xxx');
! ^
! INSERT INTO INT8_TBL(q1) VALUES ('3908203590239580293850293850329485');
! ERROR: value "3908203590239580293850293850329485" is out of range for type bigint
! LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('39082035902395802938502938...
! ^
! INSERT INTO INT8_TBL(q1) VALUES ('-1204982019841029840928340329840934');
! ERROR: value "-1204982019841029840928340329840934" is out of range for type bigint
! LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('-1204982019841029840928340...
! ^
! INSERT INTO INT8_TBL(q1) VALUES ('- 123');
! ERROR: invalid input syntax for integer: "- 123"
! LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('- 123');
! ^
! INSERT INTO INT8_TBL(q1) VALUES (' 345 5');
! ERROR: invalid input syntax for integer: " 345 5"
! LINE 1: INSERT INTO INT8_TBL(q1) VALUES (' 345 5');
! ^
! INSERT INTO INT8_TBL(q1) VALUES ('');
! ERROR: invalid input syntax for integer: ""
! LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('');
! ^
! SELECT * FROM INT8_TBL ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 123 | 456
! 123 | 4567890123456789
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! 4567890123456789 | 4567890123456789
! (5 rows)
!
! -- int8/int8 cmp
! SELECT * FROM INT8_TBL WHERE q2 = 4567890123456789 ORDER BY q1,q2;
! q1 | q2
! ------------------+------------------
! 123 | 4567890123456789
! 4567890123456789 | 4567890123456789
! (2 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 <> 4567890123456789 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 123 | 456
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! (3 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 < 4567890123456789 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 123 | 456
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! (3 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 > 4567890123456789 ORDER BY q1,q2;
! q1 | q2
! ----+----
! (0 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 <= 4567890123456789 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 123 | 456
! 123 | 4567890123456789
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! 4567890123456789 | 4567890123456789
! (5 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 >= 4567890123456789 ORDER BY q1,q2;
! q1 | q2
! ------------------+------------------
! 123 | 4567890123456789
! 4567890123456789 | 4567890123456789
! (2 rows)
!
! -- int8/int4 cmp
! SELECT * FROM INT8_TBL WHERE q2 = 456 ORDER BY q1,q2;
! q1 | q2
! -----+-----
! 123 | 456
! (1 row)
!
! SELECT * FROM INT8_TBL WHERE q2 <> 456 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 123 | 4567890123456789
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! 4567890123456789 | 4567890123456789
! (4 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 < 456 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! (2 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 > 456 ORDER BY q1,q2;
! q1 | q2
! ------------------+------------------
! 123 | 4567890123456789
! 4567890123456789 | 4567890123456789
! (2 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 <= 456 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 123 | 456
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! (3 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 >= 456 ORDER BY q1,q2;
! q1 | q2
! ------------------+------------------
! 123 | 456
! 123 | 4567890123456789
! 4567890123456789 | 4567890123456789
! (3 rows)
!
! -- int4/int8 cmp
! SELECT * FROM INT8_TBL WHERE 123 = q1 ORDER BY q1,q2;
! q1 | q2
! -----+------------------
! 123 | 456
! 123 | 4567890123456789
! (2 rows)
!
! SELECT * FROM INT8_TBL WHERE 123 <> q1 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! 4567890123456789 | 4567890123456789
! (3 rows)
!
! SELECT * FROM INT8_TBL WHERE 123 < q1 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! 4567890123456789 | 4567890123456789
! (3 rows)
!
! SELECT * FROM INT8_TBL WHERE 123 > q1 ORDER BY q1,q2;
! q1 | q2
! ----+----
! (0 rows)
!
! SELECT * FROM INT8_TBL WHERE 123 <= q1 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 123 | 456
! 123 | 4567890123456789
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! 4567890123456789 | 4567890123456789
! (5 rows)
!
! SELECT * FROM INT8_TBL WHERE 123 >= q1 ORDER BY q1,q2;
! q1 | q2
! -----+------------------
! 123 | 456
! 123 | 4567890123456789
! (2 rows)
!
! -- int8/int2 cmp
! SELECT * FROM INT8_TBL WHERE q2 = '456'::int2 ORDER BY q1,q2;
! q1 | q2
! -----+-----
! 123 | 456
! (1 row)
!
! SELECT * FROM INT8_TBL WHERE q2 <> '456'::int2 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 123 | 4567890123456789
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! 4567890123456789 | 4567890123456789
! (4 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 < '456'::int2 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! (2 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 > '456'::int2 ORDER BY q1,q2;
! q1 | q2
! ------------------+------------------
! 123 | 4567890123456789
! 4567890123456789 | 4567890123456789
! (2 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 <= '456'::int2 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 123 | 456
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! (3 rows)
!
! SELECT * FROM INT8_TBL WHERE q2 >= '456'::int2 ORDER BY q1,q2;
! q1 | q2
! ------------------+------------------
! 123 | 456
! 123 | 4567890123456789
! 4567890123456789 | 4567890123456789
! (3 rows)
!
! -- int2/int8 cmp
! SELECT * FROM INT8_TBL WHERE '123'::int2 = q1 ORDER BY q1,q2;
! q1 | q2
! -----+------------------
! 123 | 456
! 123 | 4567890123456789
! (2 rows)
!
! SELECT * FROM INT8_TBL WHERE '123'::int2 <> q1 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! 4567890123456789 | 4567890123456789
! (3 rows)
!
! SELECT * FROM INT8_TBL WHERE '123'::int2 < q1 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! 4567890123456789 | 4567890123456789
! (3 rows)
!
! SELECT * FROM INT8_TBL WHERE '123'::int2 > q1 ORDER BY q1,q2;
! q1 | q2
! ----+----
! (0 rows)
!
! SELECT * FROM INT8_TBL WHERE '123'::int2 <= q1 ORDER BY q1,q2;
! q1 | q2
! ------------------+-------------------
! 123 | 456
! 123 | 4567890123456789
! 4567890123456789 | -4567890123456789
! 4567890123456789 | 123
! 4567890123456789 | 4567890123456789
! (5 rows)
!
! SELECT * FROM INT8_TBL WHERE '123'::int2 >= q1 ORDER BY q1,q2;
! q1 | q2
! -----+------------------
! 123 | 456
! 123 | 4567890123456789
! (2 rows)
!
! SELECT '' AS five, q1 AS plus, -q1 AS minus FROM INT8_TBL ORDER BY q1;
! five | plus | minus
! ------+------------------+-------------------
! | 123 | -123
! | 123 | -123
! | 4567890123456789 | -4567890123456789
! | 4567890123456789 | -4567890123456789
! | 4567890123456789 | -4567890123456789
! (5 rows)
!
! SELECT '' AS five, q1, q2, q1 + q2 AS plus FROM INT8_TBL ORDER BY q1,q2;
! five | q1 | q2 | plus
! ------+------------------+-------------------+------------------
! | 123 | 456 | 579
! | 123 | 4567890123456789 | 4567890123456912
! | 4567890123456789 | -4567890123456789 | 0
! | 4567890123456789 | 123 | 4567890123456912
! | 4567890123456789 | 4567890123456789 | 9135780246913578
! (5 rows)
!
! SELECT '' AS five, q1, q2, q1 - q2 AS minus FROM INT8_TBL ORDER BY q1,q2;
! five | q1 | q2 | minus
! ------+------------------+-------------------+-------------------
! | 123 | 456 | -333
! | 123 | 4567890123456789 | -4567890123456666
! | 4567890123456789 | -4567890123456789 | 9135780246913578
! | 4567890123456789 | 123 | 4567890123456666
! | 4567890123456789 | 4567890123456789 | 0
! (5 rows)
!
! SELECT '' AS three, q1, q2, q1 * q2 AS multiply FROM INT8_TBL ORDER BY q1,q2;
! ERROR: bigint out of range
! SELECT '' AS three, q1, q2, q1 * q2 AS multiply FROM INT8_TBL
! WHERE q1 < 1000 or (q2 > 0 and q2 < 1000) ORDER BY q1,q2;
! three | q1 | q2 | multiply
! -------+------------------+------------------+--------------------
! | 123 | 456 | 56088
! | 123 | 4567890123456789 | 561850485185185047
! | 4567890123456789 | 123 | 561850485185185047
! (3 rows)
!
! SELECT '' AS five, q1, q2, q1 / q2 AS divide, q1 % q2 AS mod FROM INT8_TBL ORDER BY q1,q2;
! five | q1 | q2 | divide | mod
! ------+------------------+-------------------+----------------+-----
! | 123 | 456 | 0 | 123
! | 123 | 4567890123456789 | 0 | 123
! | 4567890123456789 | -4567890123456789 | -1 | 0
! | 4567890123456789 | 123 | 37137318076884 | 57
! | 4567890123456789 | 4567890123456789 | 1 | 0
! (5 rows)
!
! SELECT '' AS five, q1, float8(q1) FROM INT8_TBL ORDER BY q1;
! five | q1 | float8
! ------+------------------+----------------------
! | 123 | 123
! | 123 | 123
! | 4567890123456789 | 4.56789012345679e+15
! | 4567890123456789 | 4.56789012345679e+15
! | 4567890123456789 | 4.56789012345679e+15
! (5 rows)
!
! SELECT '' AS five, q2, float8(q2) FROM INT8_TBL ORDER BY q2;
! five | q2 | float8
! ------+-------------------+-----------------------
! | -4567890123456789 | -4.56789012345679e+15
! | 123 | 123
! | 456 | 456
! | 4567890123456789 | 4.56789012345679e+15
! | 4567890123456789 | 4.56789012345679e+15
! (5 rows)
!
! SELECT 37 + q1 AS plus4 FROM INT8_TBL ORDER BY q1;
! plus4
! ------------------
! 160
! 160
! 4567890123456826
! 4567890123456826
! 4567890123456826
! (5 rows)
!
! SELECT 37 - q1 AS minus4 FROM INT8_TBL ORDER BY q1;
! minus4
! -------------------
! -86
! -86
! -4567890123456752
! -4567890123456752
! -4567890123456752
! (5 rows)
!
! SELECT '' AS five, 2 * q1 AS "twice int4" FROM INT8_TBL ORDER BY q1;
! five | twice int4
! ------+------------------
! | 246
! | 246
! | 9135780246913578
! | 9135780246913578
! | 9135780246913578
! (5 rows)
!
! SELECT '' AS five, q1 * 2 AS "twice int4" FROM INT8_TBL ORDER BY q1;
! five | twice int4
! ------+------------------
! | 246
! | 246
! | 9135780246913578
! | 9135780246913578
! | 9135780246913578
! (5 rows)
!
! -- int8 op int4
! SELECT q1 + 42::int4 AS "8plus4", q1 - 42::int4 AS "8minus4", q1 * 42::int4 AS "8mul4", q1 / 42::int4 AS "8div4" FROM INT8_TBL ORDER BY q1;
! 8plus4 | 8minus4 | 8mul4 | 8div4
! ------------------+------------------+--------------------+-----------------
! 165 | 81 | 5166 | 2
! 165 | 81 | 5166 | 2
! 4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
! 4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
! 4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
! (5 rows)
!
! -- int4 op int8
! SELECT 246::int4 + q1 AS "4plus8", 246::int4 - q1 AS "4minus8", 246::int4 * q1 AS "4mul8", 246::int4 / q1 AS "4div8" FROM INT8_TBL ORDER BY q1;
! 4plus8 | 4minus8 | 4mul8 | 4div8
! ------------------+-------------------+---------------------+-------
! 369 | 123 | 30258 | 2
! 369 | 123 | 30258 | 2
! 4567890123457035 | -4567890123456543 | 1123700970370370094 | 0
! 4567890123457035 | -4567890123456543 | 1123700970370370094 | 0
! 4567890123457035 | -4567890123456543 | 1123700970370370094 | 0
! (5 rows)
!
! -- int8 op int2
! SELECT q1 + 42::int2 AS "8plus2", q1 - 42::int2 AS "8minus2", q1 * 42::int2 AS "8mul2", q1 / 42::int2 AS "8div2" FROM INT8_TBL ORDER BY q1;
! 8plus2 | 8minus2 | 8mul2 | 8div2
! ------------------+------------------+--------------------+-----------------
! 165 | 81 | 5166 | 2
! 165 | 81 | 5166 | 2
! 4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
! 4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
! 4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
! (5 rows)
!
! -- int2 op int8
! SELECT 246::int2 + q1 AS "2plus8", 246::int2 - q1 AS "2minus8", 246::int2 * q1 AS "2mul8", 246::int2 / q1 AS "2div8" FROM INT8_TBL ORDER BY q1;
! 2plus8 | 2minus8 | 2mul8 | 2div8
! ------------------+-------------------+---------------------+-------
! 369 | 123 | 30258 | 2
! 369 | 123 | 30258 | 2
! 4567890123457035 | -4567890123456543 | 1123700970370370094 | 0
! 4567890123457035 | -4567890123456543 | 1123700970370370094 | 0
! 4567890123457035 | -4567890123456543 | 1123700970370370094 | 0
! (5 rows)
!
! SELECT q2, abs(q2) FROM INT8_TBL ORDER BY q2;
! q2 | abs
! -------------------+------------------
! -4567890123456789 | 4567890123456789
! 123 | 123
! 456 | 456
! 4567890123456789 | 4567890123456789
! 4567890123456789 | 4567890123456789
! (5 rows)
!
! SELECT min(q1), min(q2) FROM INT8_TBL;
! min | min
! -----+-------------------
! 123 | -4567890123456789
! (1 row)
!
! SELECT max(q1), max(q2) FROM INT8_TBL;
! max | max
! ------------------+------------------
! 4567890123456789 | 4567890123456789
! (1 row)
!
! -- TO_CHAR()
! --
! SELECT '' AS to_char_1, to_char(q1, '9G999G999G999G999G999'), to_char(q2, '9,999,999,999,999,999')
! FROM INT8_TBL ORDER BY q1,q2;
! to_char_1 | to_char | to_char
! -----------+------------------------+------------------------
! | 123 | 456
! | 123 | 4,567,890,123,456,789
! | 4,567,890,123,456,789 | -4,567,890,123,456,789
! | 4,567,890,123,456,789 | 123
! | 4,567,890,123,456,789 | 4,567,890,123,456,789
! (5 rows)
!
! SELECT '' AS to_char_2, to_char(q1, '9G999G999G999G999G999D999G999'), to_char(q2, '9,999,999,999,999,999.999,999')
! FROM INT8_TBL ORDER BY q1,q2;
! to_char_2 | to_char | to_char
! -----------+--------------------------------+--------------------------------
! | 123.000,000 | 456.000,000
! | 123.000,000 | 4,567,890,123,456,789.000,000
! | 4,567,890,123,456,789.000,000 | -4,567,890,123,456,789.000,000
! | 4,567,890,123,456,789.000,000 | 123.000,000
! | 4,567,890,123,456,789.000,000 | 4,567,890,123,456,789.000,000
! (5 rows)
!
! SELECT '' AS to_char_3, to_char( (q1 * -1), '9999999999999999PR'), to_char( (q2 * -1), '9999999999999999.999PR')
! FROM INT8_TBL ORDER BY q1,q2;
! to_char_3 | to_char | to_char
! -----------+--------------------+------------------------
! | <123> | <456.000>
! | <123> | <4567890123456789.000>
! | <4567890123456789> | 4567890123456789.000
! | <4567890123456789> | <123.000>
! | <4567890123456789> | <4567890123456789.000>
! (5 rows)
!
! SELECT '' AS to_char_4, to_char( (q1 * -1), '9999999999999999S'), to_char( (q2 * -1), 'S9999999999999999')
! FROM INT8_TBL ORDER BY q1,q2;
! to_char_4 | to_char | to_char
! -----------+-------------------+-------------------
! | 123- | -456
! | 123- | -4567890123456789
! | 4567890123456789- | +4567890123456789
! | 4567890123456789- | -123
! | 4567890123456789- | -4567890123456789
! (5 rows)
!
! SELECT '' AS to_char_5, to_char(q2, 'MI9999999999999999') FROM INT8_TBL ORDER BY q2;
! to_char_5 | to_char
! -----------+-------------------
! | -4567890123456789
! | 123
! | 456
! | 4567890123456789
! | 4567890123456789
! (5 rows)
!
! SELECT '' AS to_char_6, to_char(q2, 'FMS9999999999999999') FROM INT8_TBL ORDER BY q2;
! to_char_6 | to_char
! -----------+-------------------
! | -4567890123456789
! | +123
! | +456
! | +4567890123456789
! | +4567890123456789
! (5 rows)
!
! SELECT '' AS to_char_7, to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL ORDER BY q2;
! to_char_7 | to_char
! -----------+--------------------
! | <4567890123456789>
! | 123RD
! | 456TH
! | 4567890123456789TH
! | 4567890123456789TH
! (5 rows)
!
! SELECT '' AS to_char_8, to_char(q2, 'SG9999999999999999th') FROM INT8_TBL ORDER BY q2;
! to_char_8 | to_char
! -----------+---------------------
! | -4567890123456789
! | + 123rd
! | + 456th
! | +4567890123456789th
! | +4567890123456789th
! (5 rows)
!
! SELECT '' AS to_char_9, to_char(q2, '0999999999999999') FROM INT8_TBL ORDER BY q2;
! to_char_9 | to_char
! -----------+-------------------
! | -4567890123456789
! | 0000000000000123
! | 0000000000000456
! | 4567890123456789
! | 4567890123456789
! (5 rows)
!
! SELECT '' AS to_char_10, to_char(q2, 'S0999999999999999') FROM INT8_TBL ORDER BY q2;
! to_char_10 | to_char
! ------------+-------------------
! | -4567890123456789
! | +0000000000000123
! | +0000000000000456
! | +4567890123456789
! | +4567890123456789
! (5 rows)
!
! SELECT '' AS to_char_11, to_char(q2, 'FM0999999999999999') FROM INT8_TBL ORDER BY q2;
! to_char_11 | to_char
! ------------+-------------------
! | -4567890123456789
! | 0000000000000123
! | 0000000000000456
! | 4567890123456789
! | 4567890123456789
! (5 rows)
!
! SELECT '' AS to_char_12, to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL ORDER BY q2;
! to_char_12 | to_char
! ------------+-----------------------
! | -4567890123456789.000
! | 123.000
! | 456.000
! | 4567890123456789.000
! | 4567890123456789.000
! (5 rows)
!
! SELECT '' AS to_char_13, to_char(q2, 'L9999999999999999.000') FROM INT8_TBL ORDER BY q2;
! to_char_13 | to_char
! ------------+------------------------
! | -4567890123456789.000
! | 123.000
! | 456.000
! | 4567890123456789.000
! | 4567890123456789.000
! (5 rows)
!
! SELECT '' AS to_char_14, to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL ORDER BY q2;
! to_char_14 | to_char
! ------------+--------------------
! | -4567890123456789.
! | 123.
! | 456.
! | 4567890123456789.
! | 4567890123456789.
! (5 rows)
!
! SELECT '' AS to_char_15, to_char(q2, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9') FROM INT8_TBL ORDER BY q2;
! to_char_15 | to_char
! ------------+-------------------------------------------
! | -4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0
! | +1 2 3 . 0 0 0
! | +4 5 6 . 0 0 0
! | +4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0
! | +4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0
! (5 rows)
!
! SELECT '' AS to_char_16, to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL ORDER BY q2;
! to_char_16 | to_char
! ------------+-----------------------------------------------------------
! | -45678 text 9012 9999 345 "text between quote marks" 6789
! | text 9999 "text between quote marks" 123
! | text 9999 "text between quote marks" 456
! | 45678 text 9012 9999 345 "text between quote marks" 6789
! | 45678 text 9012 9999 345 "text between quote marks" 6789
! (5 rows)
!
! SELECT '' AS to_char_17, to_char(q2, '999999SG9999999999') FROM INT8_TBL ORDER BY q2;
! to_char_17 | to_char
! ------------+-------------------
! | 456789-0123456789
! | + 123
! | + 456
! | 456789+0123456789
! | 456789+0123456789
! (5 rows)
!
! -- check min/max values and overflow behavior
! select '-9223372036854775808'::int8;
! int8
! ----------------------
! -9223372036854775808
! (1 row)
!
! select '-9223372036854775809'::int8;
! ERROR: value "-9223372036854775809" is out of range for type bigint
! LINE 1: select '-9223372036854775809'::int8;
! ^
! select '9223372036854775807'::int8;
! int8
! ---------------------
! 9223372036854775807
! (1 row)
!
! select '9223372036854775808'::int8;
! ERROR: value "9223372036854775808" is out of range for type bigint
! LINE 1: select '9223372036854775808'::int8;
! ^
! select -('-9223372036854775807'::int8);
! ?column?
! ---------------------
! 9223372036854775807
! (1 row)
!
! select -('-9223372036854775808'::int8);
! ERROR: bigint out of range
! select '9223372036854775800'::int8 + '9223372036854775800'::int8;
! ERROR: bigint out of range
! select '-9223372036854775800'::int8 + '-9223372036854775800'::int8;
! ERROR: bigint out of range
! select '9223372036854775800'::int8 - '-9223372036854775800'::int8;
! ERROR: bigint out of range
! select '-9223372036854775800'::int8 - '9223372036854775800'::int8;
! ERROR: bigint out of range
! select '9223372036854775800'::int8 * '9223372036854775800'::int8;
! ERROR: bigint out of range
! select '9223372036854775800'::int8 / '0'::int8;
! ERROR: division by zero
! select '9223372036854775800'::int8 % '0'::int8;
! ERROR: division by zero
! select abs('-9223372036854775808'::int8);
! ERROR: bigint out of range
! select '9223372036854775800'::int8 + '100'::int4;
! ERROR: bigint out of range
! select '-9223372036854775800'::int8 - '100'::int4;
! ERROR: bigint out of range
! select '9223372036854775800'::int8 * '100'::int4;
! ERROR: bigint out of range
! select '100'::int4 + '9223372036854775800'::int8;
! ERROR: bigint out of range
! select '-100'::int4 - '9223372036854775800'::int8;
! ERROR: bigint out of range
! select '100'::int4 * '9223372036854775800'::int8;
! ERROR: bigint out of range
! select '9223372036854775800'::int8 + '100'::int2;
! ERROR: bigint out of range
! select '-9223372036854775800'::int8 - '100'::int2;
! ERROR: bigint out of range
! select '9223372036854775800'::int8 * '100'::int2;
! ERROR: bigint out of range
! select '-9223372036854775808'::int8 / '0'::int2;
! ERROR: division by zero
! select '100'::int2 + '9223372036854775800'::int8;
! ERROR: bigint out of range
! select '-100'::int2 - '9223372036854775800'::int8;
! ERROR: bigint out of range
! select '100'::int2 * '9223372036854775800'::int8;
! ERROR: bigint out of range
! select '100'::int2 / '0'::int8;
! ERROR: division by zero
! SELECT CAST(q1 AS int4) FROM int8_tbl WHERE q2 = 456 ORDER BY q1;
! q1
! -----
! 123
! (1 row)
!
! SELECT CAST(q1 AS int4) FROM int8_tbl WHERE q2 <> 456 ORDER BY q1;
! ERROR: integer out of range
! SELECT CAST(q1 AS int2) FROM int8_tbl WHERE q2 = 456 ORDER BY q1;
! q1
! -----
! 123
! (1 row)
!
! SELECT CAST(q1 AS int2) FROM int8_tbl WHERE q2 <> 456 ORDER BY q1;
! ERROR: smallint out of range
! SELECT CAST('42'::int2 AS int8), CAST('-37'::int2 AS int8);
! int8 | int8
! ------+------
! 42 | -37
! (1 row)
!
! SELECT CAST(q1 AS float4), CAST(q2 AS float8) FROM INT8_TBL ORDER BY q1,q2;
! q1 | q2
! -------------+-----------------------
! 123 | 456
! 123 | 4.56789012345679e+15
! 4.56789e+15 | -4.56789012345679e+15
! 4.56789e+15 | 123
! 4.56789e+15 | 4.56789012345679e+15
! (5 rows)
!
! SELECT CAST('36854775807.0'::float4 AS int8);
! int8
! -------------
! 36854775808
! (1 row)
!
! SELECT CAST('922337203685477580700.0'::float8 AS int8);
! ERROR: bigint out of range
! SELECT CAST(q1 AS oid) FROM INT8_TBL ORDER BY q1;
! ERROR: OID out of range
! SELECT oid::int8 FROM pg_class WHERE relname = 'pg_class' ORDER BY oid;
! oid
! ------
! 1259
! (1 row)
!
! -- bit operations
! SELECT q1, q2, q1 & q2 AS "and", q1 | q2 AS "or", q1 # q2 AS "xor", ~q1 AS "not" FROM INT8_TBL ORDER BY q1,q2;
! q1 | q2 | and | or | xor | not
! ------------------+-------------------+------------------+------------------+------------------+-------------------
! 123 | 456 | 72 | 507 | 435 | -124
! 123 | 4567890123456789 | 17 | 4567890123456895 | 4567890123456878 | -124
! 4567890123456789 | -4567890123456789 | 1 | -1 | -2 | -4567890123456790
! 4567890123456789 | 123 | 17 | 4567890123456895 | 4567890123456878 | -4567890123456790
! 4567890123456789 | 4567890123456789 | 4567890123456789 | 4567890123456789 | 0 | -4567890123456790
! (5 rows)
!
! SELECT q1, q1 << 2 AS "shl", q1 >> 3 AS "shr" FROM INT8_TBL ORDER BY q1;
! q1 | shl | shr
! ------------------+-------------------+-----------------
! 123 | 492 | 15
! 123 | 492 | 15
! 4567890123456789 | 18271560493827156 | 570986265432098
! 4567890123456789 | 18271560493827156 | 570986265432098
! 4567890123456789 | 18271560493827156 | 570986265432098
! (5 rows)
!
! -- generate_series
! SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8);
! generate_series
! ------------------
! 4567890123456789
! 4567890123456790
! 4567890123456791
! 4567890123456792
! 4567890123456793
! 4567890123456794
! 4567890123456795
! 4567890123456796
! 4567890123456797
! 4567890123456798
! 4567890123456799
! (11 rows)
!
! SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8, 0);
! ERROR: step size cannot equal zero
! SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8, 2);
! generate_series
! ------------------
! 4567890123456789
! 4567890123456791
! 4567890123456793
! 4567890123456795
! 4567890123456797
! 4567890123456799
! (6 rows)
!
! -- corner case
! SELECT (-1::int8<<63)::text;
! text
! ----------------------
! -9223372036854775808
! (1 row)
!
! SELECT ((-1::int8<<63)+1)::text;
! text
! ----------------------
! -9223372036854775807
! (1 row)
!
! -- check sane handling of INT64_MIN overflow cases
! SELECT (-9223372036854775808)::int8 * (-1)::int8;
! ERROR: bigint out of range
! SELECT (-9223372036854775808)::int8 / (-1)::int8;
! ERROR: bigint out of range
! SELECT (-9223372036854775808)::int8 % (-1)::int8;
! ?column?
! ----------
! 0
! (1 row)
!
! SELECT (-9223372036854775808)::int8 * (-1)::int4;
! ERROR: bigint out of range
! SELECT (-9223372036854775808)::int8 / (-1)::int4;
! ERROR: bigint out of range
! SELECT (-9223372036854775808)::int8 % (-1)::int4;
! ?column?
! ----------
! 0
! (1 row)
!
! SELECT (-9223372036854775808)::int8 * (-1)::int2;
! ERROR: bigint out of range
! SELECT (-9223372036854775808)::int8 / (-1)::int2;
! ERROR: bigint out of range
! SELECT (-9223372036854775808)::int8 % (-1)::int2;
! ?column?
! ----------
! 0
! (1 row)
!
! -- check rounding when casting from float
! SELECT x, x::int8 AS int8_value
! FROM (VALUES (-2.5::float8),
! (-1.5::float8),
! (-0.5::float8),
! (0.0::float8),
! (0.5::float8),
! (1.5::float8),
! (2.5::float8)) t(x);
! x | int8_value
! ------+------------
! -2.5 | -2
! -1.5 | -2
! -0.5 | 0
! 0 | 0
! 0.5 | 0
! 1.5 | 2
! 2.5 | 2
! (7 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/oid.out 2016-04-02 21:48:12.925739411 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/oid.out 2016-04-04 03:18:30.442518584 +0000
***************
*** 1,122 ****
! --
! -- OID
! --
! CREATE TABLE OID_TBL(f1 oid);
! INSERT INTO OID_TBL(f1) VALUES ('1234');
! INSERT INTO OID_TBL(f1) VALUES ('1235');
! INSERT INTO OID_TBL(f1) VALUES ('987');
! INSERT INTO OID_TBL(f1) VALUES ('-1040');
! INSERT INTO OID_TBL(f1) VALUES ('99999999');
! INSERT INTO OID_TBL(f1) VALUES ('5 ');
! INSERT INTO OID_TBL(f1) VALUES (' 10 ');
! -- leading/trailing hard tab is also allowed
! INSERT INTO OID_TBL(f1) VALUES (' 15 ');
! -- bad inputs
! INSERT INTO OID_TBL(f1) VALUES ('');
! ERROR: invalid input syntax for type oid: ""
! LINE 1: INSERT INTO OID_TBL(f1) VALUES ('');
! ^
! INSERT INTO OID_TBL(f1) VALUES (' ');
! ERROR: invalid input syntax for type oid: " "
! LINE 1: INSERT INTO OID_TBL(f1) VALUES (' ');
! ^
! INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
! ERROR: invalid input syntax for type oid: "asdfasd"
! LINE 1: INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
! ^
! INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
! ERROR: invalid input syntax for type oid: "99asdfasd"
! LINE 1: INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
! ^
! INSERT INTO OID_TBL(f1) VALUES ('5 d');
! ERROR: invalid input syntax for type oid: "5 d"
! LINE 1: INSERT INTO OID_TBL(f1) VALUES ('5 d');
! ^
! INSERT INTO OID_TBL(f1) VALUES (' 5d');
! ERROR: invalid input syntax for type oid: " 5d"
! LINE 1: INSERT INTO OID_TBL(f1) VALUES (' 5d');
! ^
! INSERT INTO OID_TBL(f1) VALUES ('5 5');
! ERROR: invalid input syntax for type oid: "5 5"
! LINE 1: INSERT INTO OID_TBL(f1) VALUES ('5 5');
! ^
! INSERT INTO OID_TBL(f1) VALUES (' - 500');
! ERROR: invalid input syntax for type oid: " - 500"
! LINE 1: INSERT INTO OID_TBL(f1) VALUES (' - 500');
! ^
! INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
! ERROR: value "32958209582039852935" is out of range for type oid
! LINE 1: INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
! ^
! INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
! ERROR: value "-23582358720398502385" is out of range for type oid
! LINE 1: INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
! ^
! SELECT '' AS six, * FROM OID_TBL ORDER BY f1;
! six | f1
! -----+------------
! | 5
! | 10
! | 15
! | 987
! | 1234
! | 1235
! | 99999999
! | 4294966256
! (8 rows)
!
! SELECT '' AS one, o.* FROM OID_TBL o WHERE o.f1 = 1234 ORDER BY f1;
! one | f1
! -----+------
! | 1234
! (1 row)
!
! SELECT '' AS five, o.* FROM OID_TBL o WHERE o.f1 <> '1234' ORDER BY f1;
! five | f1
! ------+------------
! | 5
! | 10
! | 15
! | 987
! | 1235
! | 99999999
! | 4294966256
! (7 rows)
!
! SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 <= '1234' ORDER BY f1;
! three | f1
! -------+------
! | 5
! | 10
! | 15
! | 987
! | 1234
! (5 rows)
!
! SELECT '' AS two, o.* FROM OID_TBL o WHERE o.f1 < '1234' ORDER BY f1;
! two | f1
! -----+-----
! | 5
! | 10
! | 15
! | 987
! (4 rows)
!
! SELECT '' AS four, o.* FROM OID_TBL o WHERE o.f1 >= '1234' ORDER BY f1;
! four | f1
! ------+------------
! | 1234
! | 1235
! | 99999999
! | 4294966256
! (4 rows)
!
! SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 > '1234' ORDER BY f1;
! three | f1
! -------+------------
! | 1235
! | 99999999
! | 4294966256
! (3 rows)
!
! DROP TABLE OID_TBL;
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/float4.out 2016-04-02 21:48:12.916398547 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/float4.out 2016-04-04 03:18:30.462450597 +0000
***************
*** 1,259 ****
! --
! -- FLOAT4
! --
! CREATE TABLE FLOAT4_TBL (f1 float4);
! INSERT INTO FLOAT4_TBL(f1) VALUES (' 0.0');
! INSERT INTO FLOAT4_TBL(f1) VALUES ('1004.30 ');
! INSERT INTO FLOAT4_TBL(f1) VALUES (' -34.84 ');
! INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e+20');
! INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e-20');
! -- test for over and under flow
! INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70');
! ERROR: value out of range: overflow
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70');
! ^
! INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70');
! ERROR: value out of range: overflow
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70');
! ^
! INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70');
! ERROR: value out of range: underflow
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70');
! ^
! INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70');
! ERROR: value out of range: underflow
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70');
! ^
! -- bad input
! INSERT INTO FLOAT4_TBL(f1) VALUES ('');
! ERROR: invalid input syntax for type real: ""
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('');
! ^
! INSERT INTO FLOAT4_TBL(f1) VALUES (' ');
! ERROR: invalid input syntax for type real: " "
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES (' ');
! ^
! INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
! ERROR: invalid input syntax for type real: "xyz"
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
! ^
! INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0');
! ERROR: invalid input syntax for type real: "5.0.0"
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0');
! ^
! INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0');
! ERROR: invalid input syntax for type real: "5 . 0"
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0');
! ^
! INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0');
! ERROR: invalid input syntax for type real: "5. 0"
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0');
! ^
! INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0');
! ERROR: invalid input syntax for type real: " - 3.0"
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0');
! ^
! INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5');
! ERROR: invalid input syntax for type real: "123 5"
! LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5');
! ^
! -- special inputs
! SELECT 'NaN'::float4;
! float4
! --------
! NaN
! (1 row)
!
! SELECT 'nan'::float4;
! float4
! --------
! NaN
! (1 row)
!
! SELECT ' NAN '::float4;
! float4
! --------
! NaN
! (1 row)
!
! SELECT 'infinity'::float4;
! float4
! ----------
! Infinity
! (1 row)
!
! SELECT ' -INFINiTY '::float4;
! float4
! -----------
! -Infinity
! (1 row)
!
! -- bad special inputs
! SELECT 'N A N'::float4;
! ERROR: invalid input syntax for type real: "N A N"
! LINE 1: SELECT 'N A N'::float4;
! ^
! SELECT 'NaN x'::float4;
! ERROR: invalid input syntax for type real: "NaN x"
! LINE 1: SELECT 'NaN x'::float4;
! ^
! SELECT ' INFINITY x'::float4;
! ERROR: invalid input syntax for type real: " INFINITY x"
! LINE 1: SELECT ' INFINITY x'::float4;
! ^
! SELECT 'Infinity'::float4 + 100.0;
! ?column?
! ----------
! Infinity
! (1 row)
!
! SELECT 'Infinity'::float4 / 'Infinity'::float4;
! ?column?
! ----------
! NaN
! (1 row)
!
! SELECT 'nan'::float4 / 'nan'::float4;
! ?column?
! ----------
! NaN
! (1 row)
!
! SELECT 'nan'::numeric::float4;
! float4
! --------
! NaN
! (1 row)
!
! SELECT '' AS five, * FROM FLOAT4_TBL ORDER BY f1;
! five | f1
! ------+-------------
! | -34.84
! | 0
! | 1.23457e-20
! | 1004.3
! | 1.23457e+20
! (5 rows)
!
! SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3' ORDER BY f1;
! four | f1
! ------+-------------
! | -34.84
! | 0
! | 1.23457e-20
! | 1.23457e+20
! (4 rows)
!
! SELECT '' AS one, f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
! one | f1
! -----+--------
! | 1004.3
! (1 row)
!
! SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1 ORDER BY f1;
! three | f1
! -------+-------------
! | -34.84
! | 0
! | 1.23457e-20
! (3 rows)
!
! SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3' ORDER BY f1;
! three | f1
! -------+-------------
! | -34.84
! | 0
! | 1.23457e-20
! (3 rows)
!
! SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1 ORDER BY f1;
! four | f1
! ------+-------------
! | -34.84
! | 0
! | 1.23457e-20
! | 1004.3
! (4 rows)
!
! SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3' ORDER BY f1;
! four | f1
! ------+-------------
! | -34.84
! | 0
! | 1.23457e-20
! | 1004.3
! (4 rows)
!
! SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f
! WHERE f.f1 > '0.0' ORDER BY f1;
! three | f1 | x
! -------+-------------+--------------
! | 1.23457e-20 | -1.23457e-19
! | 1004.3 | -10043
! | 1.23457e+20 | -1.23457e+21
! (3 rows)
!
! SELECT '' AS three, f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f
! WHERE f.f1 > '0.0' ORDER BY f1;
! three | f1 | x
! -------+-------------+-------------
! | 1.23457e-20 | -10
! | 1004.3 | 994.3
! | 1.23457e+20 | 1.23457e+20
! (3 rows)
!
! SELECT '' AS three, f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f
! WHERE f.f1 > '0.0' ORDER BY f1;
! three | f1 | x
! -------+-------------+--------------
! | 1.23457e-20 | -1.23457e-21
! | 1004.3 | -100.43
! | 1.23457e+20 | -1.23457e+19
! (3 rows)
!
! SELECT '' AS three, f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f
! WHERE f.f1 > '0.0' ORDER BY f1;
! three | f1 | x
! -------+-------------+-------------
! | 1.23457e-20 | 10
! | 1004.3 | 1014.3
! | 1.23457e+20 | 1.23457e+20
! (3 rows)
!
! -- test divide by zero
! SELECT '' AS bad, f.f1 / '0.0' from FLOAT4_TBL f;
! ERROR: division by zero
! SELECT '' AS five, * FROM FLOAT4_TBL ORDER BY f1;
! five | f1
! ------+-------------
! | -34.84
! | 0
! | 1.23457e-20
! | 1004.3
! | 1.23457e+20
! (5 rows)
!
! -- test the unary float4abs operator
! SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f ORDER BY f1;
! five | f1 | abs_f1
! ------+-------------+-------------
! | -34.84 | 34.84
! | 0 | 0
! | 1.23457e-20 | 1.23457e-20
! | 1004.3 | 1004.3
! | 1.23457e+20 | 1.23457e+20
! (5 rows)
!
! UPDATE FLOAT4_TBL
! SET f1 = FLOAT4_TBL.f1 * '-1'
! WHERE FLOAT4_TBL.f1 > '0.0';
! SELECT '' AS five, * FROM FLOAT4_TBL ORDER BY f1;
! five | f1
! ------+--------------
! | -1.23457e+20
! | -1004.3
! | -34.84
! | -1.23457e-20
! | 0
! (5 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/float8.out 2016-04-02 21:48:12.916828004 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/float8.out 2016-04-04 03:18:30.489032073 +0000
***************
*** 1,447 ****
! --
! -- FLOAT8
! --
! CREATE TABLE FLOAT8_TBL(f1 float8);
! INSERT INTO FLOAT8_TBL(f1) VALUES (' 0.0 ');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30 ');
! INSERT INTO FLOAT8_TBL(f1) VALUES (' -34.84');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
! -- test for underflow and overflow handling
! SELECT '10e400'::float8;
! ERROR: "10e400" is out of range for type double precision
! LINE 1: SELECT '10e400'::float8;
! ^
! SELECT '-10e400'::float8;
! ERROR: "-10e400" is out of range for type double precision
! LINE 1: SELECT '-10e400'::float8;
! ^
! SELECT '10e-400'::float8;
! ERROR: "10e-400" is out of range for type double precision
! LINE 1: SELECT '10e-400'::float8;
! ^
! SELECT '-10e-400'::float8;
! ERROR: "-10e-400" is out of range for type double precision
! LINE 1: SELECT '-10e-400'::float8;
! ^
! -- bad input
! INSERT INTO FLOAT8_TBL(f1) VALUES ('');
! ERROR: invalid input syntax for type double precision: ""
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('');
! ^
! INSERT INTO FLOAT8_TBL(f1) VALUES (' ');
! ERROR: invalid input syntax for type double precision: " "
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES (' ');
! ^
! INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
! ERROR: invalid input syntax for type double precision: "xyz"
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
! ^
! INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
! ERROR: invalid input syntax for type double precision: "5.0.0"
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
! ^
! INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
! ERROR: invalid input syntax for type double precision: "5 . 0"
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
! ^
! INSERT INTO FLOAT8_TBL(f1) VALUES ('5. 0');
! ERROR: invalid input syntax for type double precision: "5. 0"
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5. 0');
! ^
! INSERT INTO FLOAT8_TBL(f1) VALUES (' - 3');
! ERROR: invalid input syntax for type double precision: " - 3"
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES (' - 3');
! ^
! INSERT INTO FLOAT8_TBL(f1) VALUES ('123 5');
! ERROR: invalid input syntax for type double precision: "123 5"
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('123 5');
! ^
! -- special inputs
! SELECT 'NaN'::float8;
! float8
! --------
! NaN
! (1 row)
!
! SELECT 'nan'::float8;
! float8
! --------
! NaN
! (1 row)
!
! SELECT ' NAN '::float8;
! float8
! --------
! NaN
! (1 row)
!
! SELECT 'infinity'::float8;
! float8
! ----------
! Infinity
! (1 row)
!
! SELECT ' -INFINiTY '::float8;
! float8
! -----------
! -Infinity
! (1 row)
!
! -- bad special inputs
! SELECT 'N A N'::float8;
! ERROR: invalid input syntax for type double precision: "N A N"
! LINE 1: SELECT 'N A N'::float8;
! ^
! SELECT 'NaN x'::float8;
! ERROR: invalid input syntax for type double precision: "NaN x"
! LINE 1: SELECT 'NaN x'::float8;
! ^
! SELECT ' INFINITY x'::float8;
! ERROR: invalid input syntax for type double precision: " INFINITY x"
! LINE 1: SELECT ' INFINITY x'::float8;
! ^
! SELECT 'Infinity'::float8 + 100.0;
! ?column?
! ----------
! Infinity
! (1 row)
!
! SELECT 'Infinity'::float8 / 'Infinity'::float8;
! ?column?
! ----------
! NaN
! (1 row)
!
! SELECT 'nan'::float8 / 'nan'::float8;
! ?column?
! ----------
! NaN
! (1 row)
!
! SELECT 'nan'::numeric::float8;
! float8
! --------
! NaN
! (1 row)
!
! SELECT '' AS five, * FROM FLOAT8_TBL ORDER BY f1;
! five | f1
! ------+----------------------
! | -34.84
! | 0
! | 1.2345678901234e-200
! | 1004.3
! | 1.2345678901234e+200
! (5 rows)
!
! SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3' ORDER BY f1;
! four | f1
! ------+----------------------
! | -34.84
! | 0
! | 1.2345678901234e-200
! | 1.2345678901234e+200
! (4 rows)
!
! SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
! one | f1
! -----+--------
! | 1004.3
! (1 row)
!
! SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1 ORDER BY f1;
! three | f1
! -------+----------------------
! | -34.84
! | 0
! | 1.2345678901234e-200
! (3 rows)
!
! SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3' ORDER BY f1;
! three | f1
! -------+----------------------
! | -34.84
! | 0
! | 1.2345678901234e-200
! (3 rows)
!
! SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1 ORDER BY f1;
! four | f1
! ------+----------------------
! | -34.84
! | 0
! | 1.2345678901234e-200
! | 1004.3
! (4 rows)
!
! SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3' ORDER BY f1;
! four | f1
! ------+----------------------
! | -34.84
! | 0
! | 1.2345678901234e-200
! | 1004.3
! (4 rows)
!
! SELECT '' AS three, f.f1, f.f1 * '-10' AS x
! FROM FLOAT8_TBL f
! WHERE f.f1 > '0.0' ORDER BY f1;
! three | f1 | x
! -------+----------------------+-----------------------
! | 1.2345678901234e-200 | -1.2345678901234e-199
! | 1004.3 | -10043
! | 1.2345678901234e+200 | -1.2345678901234e+201
! (3 rows)
!
! SELECT '' AS three, f.f1, f.f1 + '-10' AS x
! FROM FLOAT8_TBL f
! WHERE f.f1 > '0.0' ORDER BY f1;
! three | f1 | x
! -------+----------------------+----------------------
! | 1.2345678901234e-200 | -10
! | 1004.3 | 994.3
! | 1.2345678901234e+200 | 1.2345678901234e+200
! (3 rows)
!
! SELECT '' AS three, f.f1, f.f1 / '-10' AS x
! FROM FLOAT8_TBL f
! WHERE f.f1 > '0.0' ORDER BY f1;
! three | f1 | x
! -------+----------------------+-----------------------
! | 1.2345678901234e-200 | -1.2345678901234e-201
! | 1004.3 | -100.43
! | 1.2345678901234e+200 | -1.2345678901234e+199
! (3 rows)
!
! SELECT '' AS three, f.f1, f.f1 - '-10' AS x
! FROM FLOAT8_TBL f
! WHERE f.f1 > '0.0' ORDER BY f1;
! three | f1 | x
! -------+----------------------+----------------------
! | 1.2345678901234e-200 | 10
! | 1004.3 | 1014.3
! | 1.2345678901234e+200 | 1.2345678901234e+200
! (3 rows)
!
! SELECT '' AS one, f.f1 ^ '2.0' AS square_f1
! FROM FLOAT8_TBL f where f.f1 = '1004.3';
! one | square_f1
! -----+------------
! | 1008618.49
! (1 row)
!
! -- absolute value
! SELECT '' AS five, f.f1, @f.f1 AS abs_f1
! FROM FLOAT8_TBL f ORDER BY f1;
! five | f1 | abs_f1
! ------+----------------------+----------------------
! | -34.84 | 34.84
! | 0 | 0
! | 1.2345678901234e-200 | 1.2345678901234e-200
! | 1004.3 | 1004.3
! | 1.2345678901234e+200 | 1.2345678901234e+200
! (5 rows)
!
! -- truncate
! SELECT '' AS five, f.f1, trunc(f.f1) AS trunc_f1
! FROM FLOAT8_TBL f ORDER BY f1;
! five | f1 | trunc_f1
! ------+----------------------+----------------------
! | -34.84 | -34
! | 0 | 0
! | 1.2345678901234e-200 | 0
! | 1004.3 | 1004
! | 1.2345678901234e+200 | 1.2345678901234e+200
! (5 rows)
!
! -- round
! SELECT '' AS five, f.f1, round(f.f1) AS round_f1
! FROM FLOAT8_TBL f ORDER BY f1;
! five | f1 | round_f1
! ------+----------------------+----------------------
! | -34.84 | -35
! | 0 | 0
! | 1.2345678901234e-200 | 0
! | 1004.3 | 1004
! | 1.2345678901234e+200 | 1.2345678901234e+200
! (5 rows)
!
! -- ceil / ceiling
! select ceil(f1) as ceil_f1 from float8_tbl f ORDER BY f1;
! ceil_f1
! ----------------------
! -34
! 0
! 1
! 1005
! 1.2345678901234e+200
! (5 rows)
!
! select ceiling(f1) as ceiling_f1 from float8_tbl f ORDER BY f1;
! ceiling_f1
! ----------------------
! -34
! 0
! 1
! 1005
! 1.2345678901234e+200
! (5 rows)
!
! -- floor
! select floor(f1) as floor_f1 from float8_tbl f ORDER BY f1;
! floor_f1
! ----------------------
! -35
! 0
! 0
! 1004
! 1.2345678901234e+200
! (5 rows)
!
! -- sign
! select sign(f1) as sign_f1 from float8_tbl f ORDER BY f1;
! sign_f1
! ---------
! -1
! 0
! 1
! 1
! 1
! (5 rows)
!
! -- square root
! SELECT sqrt(float8 '64') AS eight;
! eight
! -------
! 8
! (1 row)
!
! SELECT |/ float8 '64' AS eight;
! eight
! -------
! 8
! (1 row)
!
! SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1
! FROM FLOAT8_TBL f
! WHERE f.f1 > '0.0' ORDER BY f1;
! three | f1 | sqrt_f1
! -------+----------------------+-----------------------
! | 1.2345678901234e-200 | 1.11111110611109e-100
! | 1004.3 | 31.6906926399535
! | 1.2345678901234e+200 | 1.11111110611109e+100
! (3 rows)
!
! -- power
! SELECT power(float8 '144', float8 '0.5');
! power
! -------
! 12
! (1 row)
!
! -- take exp of ln(f.f1)
! SELECT '' AS three, f.f1, exp(ln(f.f1)) AS exp_ln_f1
! FROM FLOAT8_TBL f
! WHERE f.f1 > '0.0' ORDER BY f1;
! three | f1 | exp_ln_f1
! -------+----------------------+-----------------------
! | 1.2345678901234e-200 | 1.23456789012339e-200
! | 1004.3 | 1004.3
! | 1.2345678901234e+200 | 1.23456789012338e+200
! (3 rows)
!
! -- cube root
! SELECT ||/ float8 '27' AS three;
! three
! -------
! 3
! (1 row)
!
! SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f ORDER BY f1;
! five | f1 | cbrt_f1
! ------+----------------------+----------------------
! | -34.84 | -3.26607421344208
! | 0 | 0
! | 1.2345678901234e-200 | 2.3112042409018e-67
! | 1004.3 | 10.014312837827
! | 1.2345678901234e+200 | 4.97933859234765e+66
! (5 rows)
!
! SELECT '' AS five, * FROM FLOAT8_TBL ORDER BY f1;
! five | f1
! ------+----------------------
! | -34.84
! | 0
! | 1.2345678901234e-200
! | 1004.3
! | 1.2345678901234e+200
! (5 rows)
!
! UPDATE FLOAT8_TBL
! SET f1 = FLOAT8_TBL.f1 * '-1'
! WHERE FLOAT8_TBL.f1 > '0.0';
!
! SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f ORDER BY f1;
! ERROR: value out of range: overflow
! SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f ORDER BY f1;
! ERROR: value out of range: overflow
! SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5;
! ?column?
! ----------
! 2
! (1 row)
!
! SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ;
! ERROR: cannot take logarithm of zero
! SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0';
! ERROR: cannot take logarithm of a negative number
! SELECT '' AS bad, exp(f.f1) from FLOAT8_TBL f ORDER BY f1;
! ERROR: value out of range: underflow
! SELECT '' AS bad, f.f1 / '0.0' from FLOAT8_TBL f;
! ERROR: division by zero
! SELECT '' AS five, * FROM FLOAT8_TBL ORDER BY f1;
! five | f1
! ------+-----------------------
! | -1.2345678901234e+200
! | -1004.3
! | -34.84
! | -1.2345678901234e-200
! | 0
! (5 rows)
!
! -- test for over- and underflow
! INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
! ERROR: "10e400" is out of range for type double precision
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
! ^
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
! ERROR: "-10e400" is out of range for type double precision
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
! ^
! INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
! ERROR: "10e-400" is out of range for type double precision
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
! ^
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
! ERROR: "-10e-400" is out of range for type double precision
! LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
! ^
! -- maintain external table consistency across platforms
! -- delete all values and reinsert well-behaved ones
! DELETE FROM FLOAT8_TBL;
! INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-1004.30');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e+200');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200');
! SELECT '' AS five, * FROM FLOAT8_TBL ORDER BY f1;
! five | f1
! ------+-----------------------
! | -1.2345678901234e+200
! | -1004.3
! | -34.84
! | -1.2345678901234e-200
! | 0
! (5 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/bit.out 2016-04-02 21:48:12.912097977 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/bit.out 2016-04-04 03:18:30.524917456 +0000
***************
*** 1,551 ****
! --
! -- BIT types
! --
! --
! -- Build tables for testing
! --
! CREATE TABLE BIT_TABLE(b BIT(11));
! INSERT INTO BIT_TABLE VALUES (B'10'); -- too short
! ERROR: bit string length 2 does not match type bit(11)
! INSERT INTO BIT_TABLE VALUES (B'00000000000');
! INSERT INTO BIT_TABLE VALUES (B'11011000000');
! INSERT INTO BIT_TABLE VALUES (B'01010101010');
! INSERT INTO BIT_TABLE VALUES (B'101011111010'); -- too long
! ERROR: bit string length 12 does not match type bit(11)
! --INSERT INTO BIT_TABLE VALUES ('X554');
! --INSERT INTO BIT_TABLE VALUES ('X555');
! SELECT * FROM BIT_TABLE ORDER BY b;
! b
! -------------
! 00000000000
! 01010101010
! 11011000000
! (3 rows)
!
! CREATE TABLE VARBIT_TABLE(v BIT VARYING(11));
! INSERT INTO VARBIT_TABLE VALUES (B'');
! INSERT INTO VARBIT_TABLE VALUES (B'0');
! INSERT INTO VARBIT_TABLE VALUES (B'010101');
! INSERT INTO VARBIT_TABLE VALUES (B'01010101010');
! INSERT INTO VARBIT_TABLE VALUES (B'101011111010'); -- too long
! ERROR: bit string too long for type bit varying(11)
! --INSERT INTO VARBIT_TABLE VALUES ('X554');
! --INSERT INTO VARBIT_TABLE VALUES ('X555');
! SELECT * FROM VARBIT_TABLE ORDER BY v;
! v
! -------------
!
! 0
! 010101
! 01010101010
! (4 rows)
!
! -- Concatenation
! SELECT v, b, (v || b) AS concat
! FROM BIT_TABLE, VARBIT_TABLE
! ORDER BY 3;
! v | b | concat
! -------------+-------------+------------------------
! | 00000000000 | 00000000000
! 0 | 00000000000 | 000000000000
! 0 | 01010101010 | 001010101010
! 010101 | 00000000000 | 01010100000000000
! | 01010101010 | 01010101010
! 01010101010 | 00000000000 | 0101010101000000000000
! 01010101010 | 01010101010 | 0101010101001010101010
! 010101 | 01010101010 | 01010101010101010
! 01010101010 | 11011000000 | 0101010101011011000000
! 010101 | 11011000000 | 01010111011000000
! 0 | 11011000000 | 011011000000
! | 11011000000 | 11011000000
! (12 rows)
!
! -- Length
! SELECT b, length(b) AS lb
! FROM BIT_TABLE ORDER BY b;
! b | lb
! -------------+----
! 00000000000 | 11
! 01010101010 | 11
! 11011000000 | 11
! (3 rows)
!
! SELECT v, length(v) AS lv
! FROM VARBIT_TABLE ORDER BY v;
! v | lv
! -------------+----
! | 0
! 0 | 1
! 010101 | 6
! 01010101010 | 11
! (4 rows)
!
! -- Substring
! SELECT b,
! SUBSTRING(b FROM 2 FOR 4) AS sub_2_4,
! SUBSTRING(b FROM 7 FOR 13) AS sub_7_13,
! SUBSTRING(b FROM 6) AS sub_6
! FROM BIT_TABLE ORDER BY b;
! b | sub_2_4 | sub_7_13 | sub_6
! -------------+---------+----------+--------
! 00000000000 | 0000 | 00000 | 000000
! 01010101010 | 1010 | 01010 | 101010
! 11011000000 | 1011 | 00000 | 000000
! (3 rows)
!
! SELECT v,
! SUBSTRING(v FROM 2 FOR 4) AS sub_2_4,
! SUBSTRING(v FROM 7 FOR 13) AS sub_7_13,
! SUBSTRING(v FROM 6) AS sub_6
! FROM VARBIT_TABLE ORDER BY v;
! v | sub_2_4 | sub_7_13 | sub_6
! -------------+---------+----------+--------
! | | |
! 0 | | |
! 010101 | 1010 | | 1
! 01010101010 | 1010 | 01010 | 101010
! (4 rows)
!
! --- Bit operations
! DROP TABLE varbit_table;
! CREATE TABLE varbit_table (a BIT VARYING(16), b BIT VARYING(16));
! COPY varbit_table FROM stdin;
! SELECT a, b, ~a AS "~ a", a & b AS "a & b",
! a | b AS "a | b", a # b AS "a # b" FROM varbit_table ORDER BY a,b;
! a | b | ~ a | a & b | a | b | a # b
! ------------------+------------------+------------------+------------------+------------------+------------------
! 0000000000001111 | 0000000000010000 | 1111111111110000 | 0000000000000000 | 0000000000011111 | 0000000000011111
! 0000000100100011 | 1111111111111111 | 1111111011011100 | 0000000100100011 | 1111111111111111 | 1111111011011100
! 00001111 | 00010000 | 11110000 | 00000000 | 00011111 | 00011111
! 0001001000110100 | 1111111111110101 | 1110110111001011 | 0001001000110100 | 1111111111110101 | 1110110111000001
! 00011111 | 00010001 | 11100000 | 00010001 | 00011111 | 00001110
! 0010010001101000 | 0010010001101000 | 1101101110010111 | 0010010001101000 | 0010010001101000 | 0000000000000000
! 00101111 | 00010010 | 11010000 | 00000010 | 00111111 | 00111101
! 00111111 | 00010011 | 11000000 | 00010011 | 00111111 | 00101100
! 10001111 | 00000100 | 01110000 | 00000100 | 10001111 | 10001011
! 1111101001010000 | 0000010110101111 | 0000010110101111 | 0000000000000000 | 1111111111111111 | 1111111111111111
! (10 rows)
!
! SELECT a,b,a<b AS "a<b",a<=b AS "a<=b",a=b AS "a=b",
! a>=b AS "a>=b",a>b AS "a>b",a<>b AS "a<>b" FROM varbit_table ORDER BY a,b;
! a | b | a<b | a<=b | a=b | a>=b | a>b | a<>b
! ------------------+------------------+-----+------+-----+------+-----+------
! 0000000000001111 | 0000000000010000 | t | t | f | f | f | t
! 0000000100100011 | 1111111111111111 | t | t | f | f | f | t
! 00001111 | 00010000 | t | t | f | f | f | t
! 0001001000110100 | 1111111111110101 | t | t | f | f | f | t
! 00011111 | 00010001 | f | f | f | t | t | t
! 0010010001101000 | 0010010001101000 | f | t | t | t | f | f
! 00101111 | 00010010 | f | f | f | t | t | t
! 00111111 | 00010011 | f | f | f | t | t | t
! 10001111 | 00000100 | f | f | f | t | t | t
! 1111101001010000 | 0000010110101111 | f | f | f | t | t | t
! (10 rows)
!
! SELECT a,a<<4 AS "a<<4",b,b>>2 AS "b>>2" FROM varbit_table ORDER BY a,b;
! a | a<<4 | b | b>>2
! ------------------+------------------+------------------+------------------
! 0000000000001111 | 0000000011110000 | 0000000000010000 | 0000000000000100
! 0000000100100011 | 0001001000110000 | 1111111111111111 | 0011111111111111
! 00001111 | 11110000 | 00010000 | 00000100
! 0001001000110100 | 0010001101000000 | 1111111111110101 | 0011111111111101
! 00011111 | 11110000 | 00010001 | 00000100
! 0010010001101000 | 0100011010000000 | 0010010001101000 | 0000100100011010
! 00101111 | 11110000 | 00010010 | 00000100
! 00111111 | 11110000 | 00010011 | 00000100
! 10001111 | 11110000 | 00000100 | 00000001
! 1111101001010000 | 1010010100000000 | 0000010110101111 | 0000000101101011
! (10 rows)
!
! DROP TABLE varbit_table;
! --- Bit operations
! DROP TABLE bit_table;
! CREATE TABLE bit_table (a BIT(16), b BIT(16));
! COPY bit_table FROM stdin;
! SELECT a,b,~a AS "~ a",a & b AS "a & b",
! a|b AS "a | b", a # b AS "a # b" FROM bit_table ORDER BY a,b;
! a | b | ~ a | a & b | a | b | a # b
! ------------------+------------------+------------------+------------------+------------------+------------------
! 0000000000001111 | 0000000000010000 | 1111111111110000 | 0000000000000000 | 0000000000011111 | 0000000000011111
! 0000000100100011 | 1111111111111111 | 1111111011011100 | 0000000100100011 | 1111111111111111 | 1111111011011100
! 0000111100000000 | 0001000000000000 | 1111000011111111 | 0000000000000000 | 0001111100000000 | 0001111100000000
! 0001001000110100 | 1111111111110101 | 1110110111001011 | 0001001000110100 | 1111111111110101 | 1110110111000001
! 0001111100000000 | 0001000100000000 | 1110000011111111 | 0001000100000000 | 0001111100000000 | 0000111000000000
! 0010010001101000 | 0010010001101000 | 1101101110010111 | 0010010001101000 | 0010010001101000 | 0000000000000000
! 0010111100000000 | 0001001000000000 | 1101000011111111 | 0000001000000000 | 0011111100000000 | 0011110100000000
! 0011111100000000 | 0001001100000000 | 1100000011111111 | 0001001100000000 | 0011111100000000 | 0010110000000000
! 1000111100000000 | 0000010000000000 | 0111000011111111 | 0000010000000000 | 1000111100000000 | 1000101100000000
! 1111101001010000 | 0000010110101111 | 0000010110101111 | 0000000000000000 | 1111111111111111 | 1111111111111111
! (10 rows)
!
! SELECT a,b,a<b AS "a<b",a<=b AS "a<=b",a=b AS "a=b",
! a>=b AS "a>=b",a>b AS "a>b",a<>b AS "a<>b" FROM bit_table ORDER BY a,b;
! a | b | a<b | a<=b | a=b | a>=b | a>b | a<>b
! ------------------+------------------+-----+------+-----+------+-----+------
! 0000000000001111 | 0000000000010000 | t | t | f | f | f | t
! 0000000100100011 | 1111111111111111 | t | t | f | f | f | t
! 0000111100000000 | 0001000000000000 | t | t | f | f | f | t
! 0001001000110100 | 1111111111110101 | t | t | f | f | f | t
! 0001111100000000 | 0001000100000000 | f | f | f | t | t | t
! 0010010001101000 | 0010010001101000 | f | t | t | t | f | f
! 0010111100000000 | 0001001000000000 | f | f | f | t | t | t
! 0011111100000000 | 0001001100000000 | f | f | f | t | t | t
! 1000111100000000 | 0000010000000000 | f | f | f | t | t | t
! 1111101001010000 | 0000010110101111 | f | f | f | t | t | t
! (10 rows)
!
! SELECT a,a<<4 AS "a<<4",b,b>>2 AS "b>>2" FROM bit_table ORDER BY a,b;
! a | a<<4 | b | b>>2
! ------------------+------------------+------------------+------------------
! 0000000000001111 | 0000000011110000 | 0000000000010000 | 0000000000000100
! 0000000100100011 | 0001001000110000 | 1111111111111111 | 0011111111111111
! 0000111100000000 | 1111000000000000 | 0001000000000000 | 0000010000000000
! 0001001000110100 | 0010001101000000 | 1111111111110101 | 0011111111111101
! 0001111100000000 | 1111000000000000 | 0001000100000000 | 0000010001000000
! 0010010001101000 | 0100011010000000 | 0010010001101000 | 0000100100011010
! 0010111100000000 | 1111000000000000 | 0001001000000000 | 0000010010000000
! 0011111100000000 | 1111000000000000 | 0001001100000000 | 0000010011000000
! 1000111100000000 | 1111000000000000 | 0000010000000000 | 0000000100000000
! 1111101001010000 | 1010010100000000 | 0000010110101111 | 0000000101101011
! (10 rows)
!
! DROP TABLE bit_table;
! -- The following should fail
! select B'001' & B'10';
! ERROR: cannot AND bit strings of different sizes
! select B'0111' | B'011';
! ERROR: cannot OR bit strings of different sizes
! select B'0010' # B'011101';
! ERROR: cannot XOR bit strings of different sizes
! -- More position tests, checking all the boundary cases
! SELECT POSITION(B'1010' IN B'0000101'); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'1010' IN B'00001010'); -- 5
! position
! ----------
! 5
! (1 row)
!
! SELECT POSITION(B'1010' IN B'00000101'); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'1010' IN B'000001010'); -- 6
! position
! ----------
! 6
! (1 row)
!
! SELECT POSITION(B'' IN B'00001010'); -- 1
! position
! ----------
! 1
! (1 row)
!
! SELECT POSITION(B'0' IN B''); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'' IN B''); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'101101' IN B'001011011011011000'); -- 3
! position
! ----------
! 3
! (1 row)
!
! SELECT POSITION(B'10110110' IN B'001011011011010'); -- 3
! position
! ----------
! 3
! (1 row)
!
! SELECT POSITION(B'1011011011011' IN B'001011011011011'); -- 3
! position
! ----------
! 3
! (1 row)
!
! SELECT POSITION(B'1011011011011' IN B'00001011011011011'); -- 5
! position
! ----------
! 5
! (1 row)
!
! SELECT POSITION(B'11101011' IN B'11101011'); -- 1
! position
! ----------
! 1
! (1 row)
!
! SELECT POSITION(B'11101011' IN B'011101011'); -- 2
! position
! ----------
! 2
! (1 row)
!
! SELECT POSITION(B'11101011' IN B'00011101011'); -- 4
! position
! ----------
! 4
! (1 row)
!
! SELECT POSITION(B'11101011' IN B'0000011101011'); -- 6
! position
! ----------
! 6
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'111010110'); -- 1
! position
! ----------
! 1
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'0111010110'); -- 2
! position
! ----------
! 2
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'000111010110'); -- 4
! position
! ----------
! 4
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'00000111010110'); -- 6
! position
! ----------
! 6
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'11101011'); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'011101011'); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'00011101011'); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'0000011101011'); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'111010110'); -- 1
! position
! ----------
! 1
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'0111010110'); -- 2
! position
! ----------
! 2
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'000111010110'); -- 4
! position
! ----------
! 4
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'00000111010110'); -- 6
! position
! ----------
! 6
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'000001110101111101011'); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'0000001110101111101011'); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'000000001110101111101011'); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'00000000001110101111101011'); -- 0
! position
! ----------
! 0
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'0000011101011111010110'); -- 14
! position
! ----------
! 14
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'00000011101011111010110'); -- 15
! position
! ----------
! 15
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'0000000011101011111010110'); -- 17
! position
! ----------
! 17
! (1 row)
!
! SELECT POSITION(B'111010110' IN B'000000000011101011111010110'); -- 19
! position
! ----------
! 19
! (1 row)
!
! SELECT POSITION(B'000000000011101011111010110' IN B'000000000011101011111010110'); -- 1
! position
! ----------
! 1
! (1 row)
!
! SELECT POSITION(B'00000000011101011111010110' IN B'000000000011101011111010110'); -- 2
! position
! ----------
! 2
! (1 row)
!
! SELECT POSITION(B'0000000000011101011111010110' IN B'000000000011101011111010110'); -- 0
! position
! ----------
! 0
! (1 row)
!
! -- Shifting
! CREATE TABLE BIT_SHIFT_TABLE(b BIT(16));
! INSERT INTO BIT_SHIFT_TABLE VALUES (B'1101100000000000');
! INSERT INTO BIT_SHIFT_TABLE SELECT b>>1 FROM BIT_SHIFT_TABLE;
! INSERT INTO BIT_SHIFT_TABLE SELECT b>>2 FROM BIT_SHIFT_TABLE;
! INSERT INTO BIT_SHIFT_TABLE SELECT b>>4 FROM BIT_SHIFT_TABLE;
! INSERT INTO BIT_SHIFT_TABLE SELECT b>>8 FROM BIT_SHIFT_TABLE;
! SELECT POSITION(B'1101' IN b),
! POSITION(B'11011' IN b),
! b
! FROM BIT_SHIFT_TABLE ORDER BY b;
! position | position | b
! ----------+----------+------------------
! 0 | 0 | 0000000000000001
! 0 | 0 | 0000000000000011
! 0 | 0 | 0000000000000110
! 13 | 0 | 0000000000001101
! 12 | 12 | 0000000000011011
! 11 | 11 | 0000000000110110
! 10 | 10 | 0000000001101100
! 9 | 9 | 0000000011011000
! 8 | 8 | 0000000110110000
! 7 | 7 | 0000001101100000
! 6 | 6 | 0000011011000000
! 5 | 5 | 0000110110000000
! 4 | 4 | 0001101100000000
! 3 | 3 | 0011011000000000
! 2 | 2 | 0110110000000000
! 1 | 1 | 1101100000000000
! (16 rows)
!
! CREATE TABLE VARBIT_SHIFT_TABLE(v BIT VARYING(20));
! INSERT INTO VARBIT_SHIFT_TABLE VALUES (B'11011');
! INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'0' AS BIT VARYING(6)) >>1 FROM VARBIT_SHIFT_TABLE;
! INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'00' AS BIT VARYING(8)) >>2 FROM VARBIT_SHIFT_TABLE;
! INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'0000' AS BIT VARYING(12)) >>4 FROM VARBIT_SHIFT_TABLE;
! INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'00000000' AS BIT VARYING(20)) >>8 FROM VARBIT_SHIFT_TABLE;
! SELECT POSITION(B'1101' IN v),
! POSITION(B'11011' IN v),
! v
! FROM VARBIT_SHIFT_TABLE ORDER BY v;
! position | position | v
! ----------+----------+----------------------
! 16 | 16 | 00000000000000011011
! 15 | 15 | 0000000000000011011
! 14 | 14 | 000000000000011011
! 13 | 13 | 00000000000011011
! 12 | 12 | 0000000000011011
! 11 | 11 | 000000000011011
! 10 | 10 | 00000000011011
! 9 | 9 | 0000000011011
! 8 | 8 | 000000011011
! 7 | 7 | 00000011011
! 6 | 6 | 0000011011
! 5 | 5 | 000011011
! 4 | 4 | 00011011
! 3 | 3 | 0011011
! 2 | 2 | 011011
! 1 | 1 | 11011
! (16 rows)
!
! DROP TABLE BIT_SHIFT_TABLE;
! DROP TABLE VARBIT_SHIFT_TABLE;
! -- Get/Set bit
! SELECT get_bit(B'0101011000100', 10);
! get_bit
! ---------
! 1
! (1 row)
!
! SELECT set_bit(B'0101011000100100', 15, 1);
! set_bit
! ------------------
! 0101011000100101
! (1 row)
!
! SELECT set_bit(B'0101011000100100', 16, 1); -- fail
! ERROR: bit index 16 out of valid range (0..15)
! -- Overlay
! SELECT overlay(B'0101011100' placing '001' from 2 for 3);
! overlay
! ------------
! 0001011100
! (1 row)
!
! SELECT overlay(B'0101011100' placing '101' from 6);
! overlay
! ------------
! 0101010100
! (1 row)
!
! SELECT overlay(B'0101011100' placing '001' from 11);
! overlay
! ---------------
! 0101011100001
! (1 row)
!
! SELECT overlay(B'0101011100' placing '001' from 20);
! overlay
! ---------------
! 0101011100001
! (1 row)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/numeric.out 2016-04-02 21:48:58.128420386 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/numeric.out 2016-04-04 03:18:30.545878115 +0000
***************
*** 1,1528 ****
! --
! -- NUMERIC
! --
! CREATE TABLE num_data (id int4, val numeric(210,10));
! CREATE TABLE num_exp_add (id1 int4, id2 int4, expected numeric(210,10));
! CREATE TABLE num_exp_sub (id1 int4, id2 int4, expected numeric(210,10));
! CREATE TABLE num_exp_div (id1 int4, id2 int4, expected numeric(210,10));
! CREATE TABLE num_exp_mul (id1 int4, id2 int4, expected numeric(210,10));
! CREATE TABLE num_exp_sqrt (id int4, expected numeric(210,10));
! CREATE TABLE num_exp_ln (id int4, expected numeric(210,10));
! CREATE TABLE num_exp_log10 (id int4, expected numeric(210,10));
! CREATE TABLE num_exp_power_10_ln (id int4, expected numeric(210,10));
! CREATE TABLE num_result (id1 int4, id2 int4, result numeric(210,10));
! -- ******************************
! -- * The following EXPECTED results are computed by bc(1)
! -- * with a scale of 200
! -- ******************************
! BEGIN TRANSACTION;
! INSERT INTO num_exp_add VALUES (0,0,'0');
! INSERT INTO num_exp_sub VALUES (0,0,'0');
! INSERT INTO num_exp_mul VALUES (0,0,'0');
! INSERT INTO num_exp_div VALUES (0,0,'NaN');
! INSERT INTO num_exp_add VALUES (0,1,'0');
! INSERT INTO num_exp_sub VALUES (0,1,'0');
! INSERT INTO num_exp_mul VALUES (0,1,'0');
! INSERT INTO num_exp_div VALUES (0,1,'NaN');
! INSERT INTO num_exp_add VALUES (0,2,'-34338492.215397047');
! INSERT INTO num_exp_sub VALUES (0,2,'34338492.215397047');
! INSERT INTO num_exp_mul VALUES (0,2,'0');
! INSERT INTO num_exp_div VALUES (0,2,'0');
! INSERT INTO num_exp_add VALUES (0,3,'4.31');
! INSERT INTO num_exp_sub VALUES (0,3,'-4.31');
! INSERT INTO num_exp_mul VALUES (0,3,'0');
! INSERT INTO num_exp_div VALUES (0,3,'0');
! INSERT INTO num_exp_add VALUES (0,4,'7799461.4119');
! INSERT INTO num_exp_sub VALUES (0,4,'-7799461.4119');
! INSERT INTO num_exp_mul VALUES (0,4,'0');
! INSERT INTO num_exp_div VALUES (0,4,'0');
! INSERT INTO num_exp_add VALUES (0,5,'16397.038491');
! INSERT INTO num_exp_sub VALUES (0,5,'-16397.038491');
! INSERT INTO num_exp_mul VALUES (0,5,'0');
! INSERT INTO num_exp_div VALUES (0,5,'0');
! INSERT INTO num_exp_add VALUES (0,6,'93901.57763026');
! INSERT INTO num_exp_sub VALUES (0,6,'-93901.57763026');
! INSERT INTO num_exp_mul VALUES (0,6,'0');
! INSERT INTO num_exp_div VALUES (0,6,'0');
! INSERT INTO num_exp_add VALUES (0,7,'-83028485');
! INSERT INTO num_exp_sub VALUES (0,7,'83028485');
! INSERT INTO num_exp_mul VALUES (0,7,'0');
! INSERT INTO num_exp_div VALUES (0,7,'0');
! INSERT INTO num_exp_add VALUES (0,8,'74881');
! INSERT INTO num_exp_sub VALUES (0,8,'-74881');
! INSERT INTO num_exp_mul VALUES (0,8,'0');
! INSERT INTO num_exp_div VALUES (0,8,'0');
! INSERT INTO num_exp_add VALUES (0,9,'-24926804.045047420');
! INSERT INTO num_exp_sub VALUES (0,9,'24926804.045047420');
! INSERT INTO num_exp_mul VALUES (0,9,'0');
! INSERT INTO num_exp_div VALUES (0,9,'0');
! INSERT INTO num_exp_add VALUES (1,0,'0');
! INSERT INTO num_exp_sub VALUES (1,0,'0');
! INSERT INTO num_exp_mul VALUES (1,0,'0');
! INSERT INTO num_exp_div VALUES (1,0,'NaN');
! INSERT INTO num_exp_add VALUES (1,1,'0');
! INSERT INTO num_exp_sub VALUES (1,1,'0');
! INSERT INTO num_exp_mul VALUES (1,1,'0');
! INSERT INTO num_exp_div VALUES (1,1,'NaN');
! INSERT INTO num_exp_add VALUES (1,2,'-34338492.215397047');
! INSERT INTO num_exp_sub VALUES (1,2,'34338492.215397047');
! INSERT INTO num_exp_mul VALUES (1,2,'0');
! INSERT INTO num_exp_div VALUES (1,2,'0');
! INSERT INTO num_exp_add VALUES (1,3,'4.31');
! INSERT INTO num_exp_sub VALUES (1,3,'-4.31');
! INSERT INTO num_exp_mul VALUES (1,3,'0');
! INSERT INTO num_exp_div VALUES (1,3,'0');
! INSERT INTO num_exp_add VALUES (1,4,'7799461.4119');
! INSERT INTO num_exp_sub VALUES (1,4,'-7799461.4119');
! INSERT INTO num_exp_mul VALUES (1,4,'0');
! INSERT INTO num_exp_div VALUES (1,4,'0');
! INSERT INTO num_exp_add VALUES (1,5,'16397.038491');
! INSERT INTO num_exp_sub VALUES (1,5,'-16397.038491');
! INSERT INTO num_exp_mul VALUES (1,5,'0');
! INSERT INTO num_exp_div VALUES (1,5,'0');
! INSERT INTO num_exp_add VALUES (1,6,'93901.57763026');
! INSERT INTO num_exp_sub VALUES (1,6,'-93901.57763026');
! INSERT INTO num_exp_mul VALUES (1,6,'0');
! INSERT INTO num_exp_div VALUES (1,6,'0');
! INSERT INTO num_exp_add VALUES (1,7,'-83028485');
! INSERT INTO num_exp_sub VALUES (1,7,'83028485');
! INSERT INTO num_exp_mul VALUES (1,7,'0');
! INSERT INTO num_exp_div VALUES (1,7,'0');
! INSERT INTO num_exp_add VALUES (1,8,'74881');
! INSERT INTO num_exp_sub VALUES (1,8,'-74881');
! INSERT INTO num_exp_mul VALUES (1,8,'0');
! INSERT INTO num_exp_div VALUES (1,8,'0');
! INSERT INTO num_exp_add VALUES (1,9,'-24926804.045047420');
! INSERT INTO num_exp_sub VALUES (1,9,'24926804.045047420');
! INSERT INTO num_exp_mul VALUES (1,9,'0');
! INSERT INTO num_exp_div VALUES (1,9,'0');
! INSERT INTO num_exp_add VALUES (2,0,'-34338492.215397047');
! INSERT INTO num_exp_sub VALUES (2,0,'-34338492.215397047');
! INSERT INTO num_exp_mul VALUES (2,0,'0');
! INSERT INTO num_exp_div VALUES (2,0,'NaN');
! INSERT INTO num_exp_add VALUES (2,1,'-34338492.215397047');
! INSERT INTO num_exp_sub VALUES (2,1,'-34338492.215397047');
! INSERT INTO num_exp_mul VALUES (2,1,'0');
! INSERT INTO num_exp_div VALUES (2,1,'NaN');
! INSERT INTO num_exp_add VALUES (2,2,'-68676984.430794094');
! INSERT INTO num_exp_sub VALUES (2,2,'0');
! INSERT INTO num_exp_mul VALUES (2,2,'1179132047626883.596862135856320209');
! INSERT INTO num_exp_div VALUES (2,2,'1.00000000000000000000');
! INSERT INTO num_exp_add VALUES (2,3,'-34338487.905397047');
! INSERT INTO num_exp_sub VALUES (2,3,'-34338496.525397047');
! INSERT INTO num_exp_mul VALUES (2,3,'-147998901.44836127257');
! INSERT INTO num_exp_div VALUES (2,3,'-7967167.56737750510440835266');
! INSERT INTO num_exp_add VALUES (2,4,'-26539030.803497047');
! INSERT INTO num_exp_sub VALUES (2,4,'-42137953.627297047');
! INSERT INTO num_exp_mul VALUES (2,4,'-267821744976817.8111137106593');
! INSERT INTO num_exp_div VALUES (2,4,'-4.40267480046830116685');
! INSERT INTO num_exp_add VALUES (2,5,'-34322095.176906047');
! INSERT INTO num_exp_sub VALUES (2,5,'-34354889.253888047');
! INSERT INTO num_exp_mul VALUES (2,5,'-563049578578.769242506736077');
! INSERT INTO num_exp_div VALUES (2,5,'-2094.18866914563535496429');
! INSERT INTO num_exp_add VALUES (2,6,'-34244590.637766787');
! INSERT INTO num_exp_sub VALUES (2,6,'-34432393.793027307');
! INSERT INTO num_exp_mul VALUES (2,6,'-3224438592470.18449811926184222');
! INSERT INTO num_exp_div VALUES (2,6,'-365.68599891479766440940');
! INSERT INTO num_exp_add VALUES (2,7,'-117366977.215397047');
! INSERT INTO num_exp_sub VALUES (2,7,'48689992.784602953');
! INSERT INTO num_exp_mul VALUES (2,7,'2851072985828710.485883795');
! INSERT INTO num_exp_div VALUES (2,7,'.41357483778485235518');
! INSERT INTO num_exp_add VALUES (2,8,'-34263611.215397047');
! INSERT INTO num_exp_sub VALUES (2,8,'-34413373.215397047');
! INSERT INTO num_exp_mul VALUES (2,8,'-2571300635581.146276407');
! INSERT INTO num_exp_div VALUES (2,8,'-458.57416721727870888476');
! INSERT INTO num_exp_add VALUES (2,9,'-59265296.260444467');
! INSERT INTO num_exp_sub VALUES (2,9,'-9411688.170349627');
! INSERT INTO num_exp_mul VALUES (2,9,'855948866655588.453741509242968740');
! INSERT INTO num_exp_div VALUES (2,9,'1.37757299946438931811');
! INSERT INTO num_exp_add VALUES (3,0,'4.31');
! INSERT INTO num_exp_sub VALUES (3,0,'4.31');
! INSERT INTO num_exp_mul VALUES (3,0,'0');
! INSERT INTO num_exp_div VALUES (3,0,'NaN');
! INSERT INTO num_exp_add VALUES (3,1,'4.31');
! INSERT INTO num_exp_sub VALUES (3,1,'4.31');
! INSERT INTO num_exp_mul VALUES (3,1,'0');
! INSERT INTO num_exp_div VALUES (3,1,'NaN');
! INSERT INTO num_exp_add VALUES (3,2,'-34338487.905397047');
! INSERT INTO num_exp_sub VALUES (3,2,'34338496.525397047');
! INSERT INTO num_exp_mul VALUES (3,2,'-147998901.44836127257');
! INSERT INTO num_exp_div VALUES (3,2,'-.00000012551512084352');
! INSERT INTO num_exp_add VALUES (3,3,'8.62');
! INSERT INTO num_exp_sub VALUES (3,3,'0');
! INSERT INTO num_exp_mul VALUES (3,3,'18.5761');
! INSERT INTO num_exp_div VALUES (3,3,'1.00000000000000000000');
! INSERT INTO num_exp_add VALUES (3,4,'7799465.7219');
! INSERT INTO num_exp_sub VALUES (3,4,'-7799457.1019');
! INSERT INTO num_exp_mul VALUES (3,4,'33615678.685289');
! INSERT INTO num_exp_div VALUES (3,4,'.00000055260225961552');
! INSERT INTO num_exp_add VALUES (3,5,'16401.348491');
! INSERT INTO num_exp_sub VALUES (3,5,'-16392.728491');
! INSERT INTO num_exp_mul VALUES (3,5,'70671.23589621');
! INSERT INTO num_exp_div VALUES (3,5,'.00026285234387695504');
! INSERT INTO num_exp_add VALUES (3,6,'93905.88763026');
! INSERT INTO num_exp_sub VALUES (3,6,'-93897.26763026');
! INSERT INTO num_exp_mul VALUES (3,6,'404715.7995864206');
! INSERT INTO num_exp_div VALUES (3,6,'.00004589912234457595');
! INSERT INTO num_exp_add VALUES (3,7,'-83028480.69');
! INSERT INTO num_exp_sub VALUES (3,7,'83028489.31');
! INSERT INTO num_exp_mul VALUES (3,7,'-357852770.35');
! INSERT INTO num_exp_div VALUES (3,7,'-.00000005190989574240');
! INSERT INTO num_exp_add VALUES (3,8,'74885.31');
! INSERT INTO num_exp_sub VALUES (3,8,'-74876.69');
! INSERT INTO num_exp_mul VALUES (3,8,'322737.11');
! INSERT INTO num_exp_div VALUES (3,8,'.00005755799201399553');
! INSERT INTO num_exp_add VALUES (3,9,'-24926799.735047420');
! INSERT INTO num_exp_sub VALUES (3,9,'24926808.355047420');
! INSERT INTO num_exp_mul VALUES (3,9,'-107434525.43415438020');
! INSERT INTO num_exp_div VALUES (3,9,'-.00000017290624149854');
! INSERT INTO num_exp_add VALUES (4,0,'7799461.4119');
! INSERT INTO num_exp_sub VALUES (4,0,'7799461.4119');
! INSERT INTO num_exp_mul VALUES (4,0,'0');
! INSERT INTO num_exp_div VALUES (4,0,'NaN');
! INSERT INTO num_exp_add VALUES (4,1,'7799461.4119');
! INSERT INTO num_exp_sub VALUES (4,1,'7799461.4119');
! INSERT INTO num_exp_mul VALUES (4,1,'0');
! INSERT INTO num_exp_div VALUES (4,1,'NaN');
! INSERT INTO num_exp_add VALUES (4,2,'-26539030.803497047');
! INSERT INTO num_exp_sub VALUES (4,2,'42137953.627297047');
! INSERT INTO num_exp_mul VALUES (4,2,'-267821744976817.8111137106593');
! INSERT INTO num_exp_div VALUES (4,2,'-.22713465002993920385');
! INSERT INTO num_exp_add VALUES (4,3,'7799465.7219');
! INSERT INTO num_exp_sub VALUES (4,3,'7799457.1019');
! INSERT INTO num_exp_mul VALUES (4,3,'33615678.685289');
! INSERT INTO num_exp_div VALUES (4,3,'1809619.81714617169373549883');
! INSERT INTO num_exp_add VALUES (4,4,'15598922.8238');
! INSERT INTO num_exp_sub VALUES (4,4,'0');
! INSERT INTO num_exp_mul VALUES (4,4,'60831598315717.14146161');
! INSERT INTO num_exp_div VALUES (4,4,'1.00000000000000000000');
! INSERT INTO num_exp_add VALUES (4,5,'7815858.450391');
! INSERT INTO num_exp_sub VALUES (4,5,'7783064.373409');
! INSERT INTO num_exp_mul VALUES (4,5,'127888068979.9935054429');
! INSERT INTO num_exp_div VALUES (4,5,'475.66281046305802686061');
! INSERT INTO num_exp_add VALUES (4,6,'7893362.98953026');
! INSERT INTO num_exp_sub VALUES (4,6,'7705559.83426974');
! INSERT INTO num_exp_mul VALUES (4,6,'732381731243.745115764094');
! INSERT INTO num_exp_div VALUES (4,6,'83.05996138436129499606');
! INSERT INTO num_exp_add VALUES (4,7,'-75229023.5881');
! INSERT INTO num_exp_sub VALUES (4,7,'90827946.4119');
! INSERT INTO num_exp_mul VALUES (4,7,'-647577464846017.9715');
! INSERT INTO num_exp_div VALUES (4,7,'-.09393717604145131637');
! INSERT INTO num_exp_add VALUES (4,8,'7874342.4119');
! INSERT INTO num_exp_sub VALUES (4,8,'7724580.4119');
! INSERT INTO num_exp_mul VALUES (4,8,'584031469984.4839');
! INSERT INTO num_exp_div VALUES (4,8,'104.15808298366741897143');
! INSERT INTO num_exp_add VALUES (4,9,'-17127342.633147420');
! INSERT INTO num_exp_sub VALUES (4,9,'32726265.456947420');
! INSERT INTO num_exp_mul VALUES (4,9,'-194415646271340.1815956522980');
! INSERT INTO num_exp_div VALUES (4,9,'-.31289456112403769409');
! INSERT INTO num_exp_add VALUES (5,0,'16397.038491');
! INSERT INTO num_exp_sub VALUES (5,0,'16397.038491');
! INSERT INTO num_exp_mul VALUES (5,0,'0');
! INSERT INTO num_exp_div VALUES (5,0,'NaN');
! INSERT INTO num_exp_add VALUES (5,1,'16397.038491');
! INSERT INTO num_exp_sub VALUES (5,1,'16397.038491');
! INSERT INTO num_exp_mul VALUES (5,1,'0');
! INSERT INTO num_exp_div VALUES (5,1,'NaN');
! INSERT INTO num_exp_add VALUES (5,2,'-34322095.176906047');
! INSERT INTO num_exp_sub VALUES (5,2,'34354889.253888047');
! INSERT INTO num_exp_mul VALUES (5,2,'-563049578578.769242506736077');
! INSERT INTO num_exp_div VALUES (5,2,'-.00047751189505192446');
! INSERT INTO num_exp_add VALUES (5,3,'16401.348491');
! INSERT INTO num_exp_sub VALUES (5,3,'16392.728491');
! INSERT INTO num_exp_mul VALUES (5,3,'70671.23589621');
! INSERT INTO num_exp_div VALUES (5,3,'3804.41728329466357308584');
! INSERT INTO num_exp_add VALUES (5,4,'7815858.450391');
! INSERT INTO num_exp_sub VALUES (5,4,'-7783064.373409');
! INSERT INTO num_exp_mul VALUES (5,4,'127888068979.9935054429');
! INSERT INTO num_exp_div VALUES (5,4,'.00210232958726897192');
! INSERT INTO num_exp_add VALUES (5,5,'32794.076982');
! INSERT INTO num_exp_sub VALUES (5,5,'0');
! INSERT INTO num_exp_mul VALUES (5,5,'268862871.275335557081');
! INSERT INTO num_exp_div VALUES (5,5,'1.00000000000000000000');
! INSERT INTO num_exp_add VALUES (5,6,'110298.61612126');
! INSERT INTO num_exp_sub VALUES (5,6,'-77504.53913926');
! INSERT INTO num_exp_mul VALUES (5,6,'1539707782.76899778633766');
! INSERT INTO num_exp_div VALUES (5,6,'.17461941433576102689');
! INSERT INTO num_exp_add VALUES (5,7,'-83012087.961509');
! INSERT INTO num_exp_sub VALUES (5,7,'83044882.038491');
! INSERT INTO num_exp_mul VALUES (5,7,'-1361421264394.416135');
! INSERT INTO num_exp_div VALUES (5,7,'-.00019748690453643710');
! INSERT INTO num_exp_add VALUES (5,8,'91278.038491');
! INSERT INTO num_exp_sub VALUES (5,8,'-58483.961509');
! INSERT INTO num_exp_mul VALUES (5,8,'1227826639.244571');
! INSERT INTO num_exp_div VALUES (5,8,'.21897461960978085228');
! INSERT INTO num_exp_add VALUES (5,9,'-24910407.006556420');
! INSERT INTO num_exp_sub VALUES (5,9,'24943201.083538420');
! INSERT INTO num_exp_mul VALUES (5,9,'-408725765384.257043660243220');
! INSERT INTO num_exp_div VALUES (5,9,'-.00065780749354660427');
! INSERT INTO num_exp_add VALUES (6,0,'93901.57763026');
! INSERT INTO num_exp_sub VALUES (6,0,'93901.57763026');
! INSERT INTO num_exp_mul VALUES (6,0,'0');
! INSERT INTO num_exp_div VALUES (6,0,'NaN');
! INSERT INTO num_exp_add VALUES (6,1,'93901.57763026');
! INSERT INTO num_exp_sub VALUES (6,1,'93901.57763026');
! INSERT INTO num_exp_mul VALUES (6,1,'0');
! INSERT INTO num_exp_div VALUES (6,1,'NaN');
! INSERT INTO num_exp_add VALUES (6,2,'-34244590.637766787');
! INSERT INTO num_exp_sub VALUES (6,2,'34432393.793027307');
! INSERT INTO num_exp_mul VALUES (6,2,'-3224438592470.18449811926184222');
! INSERT INTO num_exp_div VALUES (6,2,'-.00273458651128995823');
! INSERT INTO num_exp_add VALUES (6,3,'93905.88763026');
! INSERT INTO num_exp_sub VALUES (6,3,'93897.26763026');
! INSERT INTO num_exp_mul VALUES (6,3,'404715.7995864206');
! INSERT INTO num_exp_div VALUES (6,3,'21786.90896293735498839907');
! INSERT INTO num_exp_add VALUES (6,4,'7893362.98953026');
! INSERT INTO num_exp_sub VALUES (6,4,'-7705559.83426974');
! INSERT INTO num_exp_mul VALUES (6,4,'732381731243.745115764094');
! INSERT INTO num_exp_div VALUES (6,4,'.01203949512295682469');
! INSERT INTO num_exp_add VALUES (6,5,'110298.61612126');
! INSERT INTO num_exp_sub VALUES (6,5,'77504.53913926');
! INSERT INTO num_exp_mul VALUES (6,5,'1539707782.76899778633766');
! INSERT INTO num_exp_div VALUES (6,5,'5.72674008674192359679');
! INSERT INTO num_exp_add VALUES (6,6,'187803.15526052');
! INSERT INTO num_exp_sub VALUES (6,6,'0');
! INSERT INTO num_exp_mul VALUES (6,6,'8817506281.4517452372676676');
! INSERT INTO num_exp_div VALUES (6,6,'1.00000000000000000000');
! INSERT INTO num_exp_add VALUES (6,7,'-82934583.42236974');
! INSERT INTO num_exp_sub VALUES (6,7,'83122386.57763026');
! INSERT INTO num_exp_mul VALUES (6,7,'-7796505729750.37795610');
! INSERT INTO num_exp_div VALUES (6,7,'-.00113095617281538980');
! INSERT INTO num_exp_add VALUES (6,8,'168782.57763026');
! INSERT INTO num_exp_sub VALUES (6,8,'19020.57763026');
! INSERT INTO num_exp_mul VALUES (6,8,'7031444034.53149906');
! INSERT INTO num_exp_div VALUES (6,8,'1.25401073209839612184');
! INSERT INTO num_exp_add VALUES (6,9,'-24832902.467417160');
! INSERT INTO num_exp_sub VALUES (6,9,'25020705.622677680');
! INSERT INTO num_exp_mul VALUES (6,9,'-2340666225110.29929521292692920');
! INSERT INTO num_exp_div VALUES (6,9,'-.00376709254265256789');
! INSERT INTO num_exp_add VALUES (7,0,'-83028485');
! INSERT INTO num_exp_sub VALUES (7,0,'-83028485');
! INSERT INTO num_exp_mul VALUES (7,0,'0');
! INSERT INTO num_exp_div VALUES (7,0,'NaN');
! INSERT INTO num_exp_add VALUES (7,1,'-83028485');
! INSERT INTO num_exp_sub VALUES (7,1,'-83028485');
! INSERT INTO num_exp_mul VALUES (7,1,'0');
! INSERT INTO num_exp_div VALUES (7,1,'NaN');
! INSERT INTO num_exp_add VALUES (7,2,'-117366977.215397047');
! INSERT INTO num_exp_sub VALUES (7,2,'-48689992.784602953');
! INSERT INTO num_exp_mul VALUES (7,2,'2851072985828710.485883795');
! INSERT INTO num_exp_div VALUES (7,2,'2.41794207151503385700');
! INSERT INTO num_exp_add VALUES (7,3,'-83028480.69');
! INSERT INTO num_exp_sub VALUES (7,3,'-83028489.31');
! INSERT INTO num_exp_mul VALUES (7,3,'-357852770.35');
! INSERT INTO num_exp_div VALUES (7,3,'-19264149.65197215777262180974');
! INSERT INTO num_exp_add VALUES (7,4,'-75229023.5881');
! INSERT INTO num_exp_sub VALUES (7,4,'-90827946.4119');
! INSERT INTO num_exp_mul VALUES (7,4,'-647577464846017.9715');
! INSERT INTO num_exp_div VALUES (7,4,'-10.64541262725136247686');
! INSERT INTO num_exp_add VALUES (7,5,'-83012087.961509');
! INSERT INTO num_exp_sub VALUES (7,5,'-83044882.038491');
! INSERT INTO num_exp_mul VALUES (7,5,'-1361421264394.416135');
! INSERT INTO num_exp_div VALUES (7,5,'-5063.62688881730941836574');
! INSERT INTO num_exp_add VALUES (7,6,'-82934583.42236974');
! INSERT INTO num_exp_sub VALUES (7,6,'-83122386.57763026');
! INSERT INTO num_exp_mul VALUES (7,6,'-7796505729750.37795610');
! INSERT INTO num_exp_div VALUES (7,6,'-884.20756174009028770294');
! INSERT INTO num_exp_add VALUES (7,7,'-166056970');
! INSERT INTO num_exp_sub VALUES (7,7,'0');
! INSERT INTO num_exp_mul VALUES (7,7,'6893729321395225');
! INSERT INTO num_exp_div VALUES (7,7,'1.00000000000000000000');
! INSERT INTO num_exp_add VALUES (7,8,'-82953604');
! INSERT INTO num_exp_sub VALUES (7,8,'-83103366');
! INSERT INTO num_exp_mul VALUES (7,8,'-6217255985285');
! INSERT INTO num_exp_div VALUES (7,8,'-1108.80577182462841041118');
! INSERT INTO num_exp_add VALUES (7,9,'-107955289.045047420');
! INSERT INTO num_exp_sub VALUES (7,9,'-58101680.954952580');
! INSERT INTO num_exp_mul VALUES (7,9,'2069634775752159.035758700');
! INSERT INTO num_exp_div VALUES (7,9,'3.33089171198810413382');
! INSERT INTO num_exp_add VALUES (8,0,'74881');
! INSERT INTO num_exp_sub VALUES (8,0,'74881');
! INSERT INTO num_exp_mul VALUES (8,0,'0');
! INSERT INTO num_exp_div VALUES (8,0,'NaN');
! INSERT INTO num_exp_add VALUES (8,1,'74881');
! INSERT INTO num_exp_sub VALUES (8,1,'74881');
! INSERT INTO num_exp_mul VALUES (8,1,'0');
! INSERT INTO num_exp_div VALUES (8,1,'NaN');
! INSERT INTO num_exp_add VALUES (8,2,'-34263611.215397047');
! INSERT INTO num_exp_sub VALUES (8,2,'34413373.215397047');
! INSERT INTO num_exp_mul VALUES (8,2,'-2571300635581.146276407');
! INSERT INTO num_exp_div VALUES (8,2,'-.00218067233500788615');
! INSERT INTO num_exp_add VALUES (8,3,'74885.31');
! INSERT INTO num_exp_sub VALUES (8,3,'74876.69');
! INSERT INTO num_exp_mul VALUES (8,3,'322737.11');
! INSERT INTO num_exp_div VALUES (8,3,'17373.78190255220417633410');
! INSERT INTO num_exp_add VALUES (8,4,'7874342.4119');
! INSERT INTO num_exp_sub VALUES (8,4,'-7724580.4119');
! INSERT INTO num_exp_mul VALUES (8,4,'584031469984.4839');
! INSERT INTO num_exp_div VALUES (8,4,'.00960079113741758956');
! INSERT INTO num_exp_add VALUES (8,5,'91278.038491');
! INSERT INTO num_exp_sub VALUES (8,5,'58483.961509');
! INSERT INTO num_exp_mul VALUES (8,5,'1227826639.244571');
! INSERT INTO num_exp_div VALUES (8,5,'4.56673929509287019456');
! INSERT INTO num_exp_add VALUES (8,6,'168782.57763026');
! INSERT INTO num_exp_sub VALUES (8,6,'-19020.57763026');
! INSERT INTO num_exp_mul VALUES (8,6,'7031444034.53149906');
! INSERT INTO num_exp_div VALUES (8,6,'.79744134113322314424');
! INSERT INTO num_exp_add VALUES (8,7,'-82953604');
! INSERT INTO num_exp_sub VALUES (8,7,'83103366');
! INSERT INTO num_exp_mul VALUES (8,7,'-6217255985285');
! INSERT INTO num_exp_div VALUES (8,7,'-.00090187120721280172');
! INSERT INTO num_exp_add VALUES (8,8,'149762');
! INSERT INTO num_exp_sub VALUES (8,8,'0');
! INSERT INTO num_exp_mul VALUES (8,8,'5607164161');
! INSERT INTO num_exp_div VALUES (8,8,'1.00000000000000000000');
! INSERT INTO num_exp_add VALUES (8,9,'-24851923.045047420');
! INSERT INTO num_exp_sub VALUES (8,9,'25001685.045047420');
! INSERT INTO num_exp_mul VALUES (8,9,'-1866544013697.195857020');
! INSERT INTO num_exp_div VALUES (8,9,'-.00300403532938582735');
! INSERT INTO num_exp_add VALUES (9,0,'-24926804.045047420');
! INSERT INTO num_exp_sub VALUES (9,0,'-24926804.045047420');
! INSERT INTO num_exp_mul VALUES (9,0,'0');
! INSERT INTO num_exp_div VALUES (9,0,'NaN');
! INSERT INTO num_exp_add VALUES (9,1,'-24926804.045047420');
! INSERT INTO num_exp_sub VALUES (9,1,'-24926804.045047420');
! INSERT INTO num_exp_mul VALUES (9,1,'0');
! INSERT INTO num_exp_div VALUES (9,1,'NaN');
! INSERT INTO num_exp_add VALUES (9,2,'-59265296.260444467');
! INSERT INTO num_exp_sub VALUES (9,2,'9411688.170349627');
! INSERT INTO num_exp_mul VALUES (9,2,'855948866655588.453741509242968740');
! INSERT INTO num_exp_div VALUES (9,2,'.72591434384152961526');
! INSERT INTO num_exp_add VALUES (9,3,'-24926799.735047420');
! INSERT INTO num_exp_sub VALUES (9,3,'-24926808.355047420');
! INSERT INTO num_exp_mul VALUES (9,3,'-107434525.43415438020');
! INSERT INTO num_exp_div VALUES (9,3,'-5783481.21694835730858468677');
! INSERT INTO num_exp_add VALUES (9,4,'-17127342.633147420');
! INSERT INTO num_exp_sub VALUES (9,4,'-32726265.456947420');
! INSERT INTO num_exp_mul VALUES (9,4,'-194415646271340.1815956522980');
! INSERT INTO num_exp_div VALUES (9,4,'-3.19596478892958416484');
! INSERT INTO num_exp_add VALUES (9,5,'-24910407.006556420');
! INSERT INTO num_exp_sub VALUES (9,5,'-24943201.083538420');
! INSERT INTO num_exp_mul VALUES (9,5,'-408725765384.257043660243220');
! INSERT INTO num_exp_div VALUES (9,5,'-1520.20159364322004505807');
! INSERT INTO num_exp_add VALUES (9,6,'-24832902.467417160');
! INSERT INTO num_exp_sub VALUES (9,6,'-25020705.622677680');
! INSERT INTO num_exp_mul VALUES (9,6,'-2340666225110.29929521292692920');
! INSERT INTO num_exp_div VALUES (9,6,'-265.45671195426965751280');
! INSERT INTO num_exp_add VALUES (9,7,'-107955289.045047420');
! INSERT INTO num_exp_sub VALUES (9,7,'58101680.954952580');
! INSERT INTO num_exp_mul VALUES (9,7,'2069634775752159.035758700');
! INSERT INTO num_exp_div VALUES (9,7,'.30021990699995814689');
! INSERT INTO num_exp_add VALUES (9,8,'-24851923.045047420');
! INSERT INTO num_exp_sub VALUES (9,8,'-25001685.045047420');
! INSERT INTO num_exp_mul VALUES (9,8,'-1866544013697.195857020');
! INSERT INTO num_exp_div VALUES (9,8,'-332.88556569820675471748');
! INSERT INTO num_exp_add VALUES (9,9,'-49853608.090094840');
! INSERT INTO num_exp_sub VALUES (9,9,'0');
! INSERT INTO num_exp_mul VALUES (9,9,'621345559900192.420120630048656400');
! INSERT INTO num_exp_div VALUES (9,9,'1.00000000000000000000');
! COMMIT TRANSACTION;
! BEGIN TRANSACTION;
! INSERT INTO num_exp_sqrt VALUES (0,'0');
! INSERT INTO num_exp_sqrt VALUES (1,'0');
! INSERT INTO num_exp_sqrt VALUES (2,'5859.90547836712524903505');
! INSERT INTO num_exp_sqrt VALUES (3,'2.07605394920266944396');
! INSERT INTO num_exp_sqrt VALUES (4,'2792.75158435189147418923');
! INSERT INTO num_exp_sqrt VALUES (5,'128.05092147657509145473');
! INSERT INTO num_exp_sqrt VALUES (6,'306.43364311096782703406');
! INSERT INTO num_exp_sqrt VALUES (7,'9111.99676251039939975230');
! INSERT INTO num_exp_sqrt VALUES (8,'273.64392922189960397542');
! INSERT INTO num_exp_sqrt VALUES (9,'4992.67503899937593364766');
! COMMIT TRANSACTION;
! BEGIN TRANSACTION;
! INSERT INTO num_exp_ln VALUES (0,'NaN');
! INSERT INTO num_exp_ln VALUES (1,'NaN');
! INSERT INTO num_exp_ln VALUES (2,'17.35177750493897715514');
! INSERT INTO num_exp_ln VALUES (3,'1.46093790411565641971');
! INSERT INTO num_exp_ln VALUES (4,'15.86956523951936572464');
! INSERT INTO num_exp_ln VALUES (5,'9.70485601768871834038');
! INSERT INTO num_exp_ln VALUES (6,'11.45000246622944403127');
! INSERT INTO num_exp_ln VALUES (7,'18.23469429965478772991');
! INSERT INTO num_exp_ln VALUES (8,'11.22365546576315513668');
! INSERT INTO num_exp_ln VALUES (9,'17.03145425013166006962');
! COMMIT TRANSACTION;
! BEGIN TRANSACTION;
! INSERT INTO num_exp_log10 VALUES (0,'NaN');
! INSERT INTO num_exp_log10 VALUES (1,'NaN');
! INSERT INTO num_exp_log10 VALUES (2,'7.53578122160797276459');
! INSERT INTO num_exp_log10 VALUES (3,'.63447727016073160075');
! INSERT INTO num_exp_log10 VALUES (4,'6.89206461372691743345');
! INSERT INTO num_exp_log10 VALUES (5,'4.21476541614777768626');
! INSERT INTO num_exp_log10 VALUES (6,'4.97267288886207207671');
! INSERT INTO num_exp_log10 VALUES (7,'7.91922711353275546914');
! INSERT INTO num_exp_log10 VALUES (8,'4.87437163556421004138');
! INSERT INTO num_exp_log10 VALUES (9,'7.39666659961986567059');
! COMMIT TRANSACTION;
! BEGIN TRANSACTION;
! INSERT INTO num_exp_power_10_ln VALUES (0,'NaN');
! INSERT INTO num_exp_power_10_ln VALUES (1,'NaN');
! INSERT INTO num_exp_power_10_ln VALUES (2,'224790267919917955.13261618583642653184');
! INSERT INTO num_exp_power_10_ln VALUES (3,'28.90266599445155957393');
! INSERT INTO num_exp_power_10_ln VALUES (4,'7405685069594999.07733999469386277636');
! INSERT INTO num_exp_power_10_ln VALUES (5,'5068226527.32127265408584640098');
! INSERT INTO num_exp_power_10_ln VALUES (6,'281839893606.99372343357047819067');
! INSERT INTO num_exp_power_10_ln VALUES (7,'1716699575118597095.42330819910640247627');
! INSERT INTO num_exp_power_10_ln VALUES (8,'167361463828.07491320069016125952');
! INSERT INTO num_exp_power_10_ln VALUES (9,'107511333880052007.04141124673540337457');
! COMMIT TRANSACTION;
! BEGIN TRANSACTION;
! INSERT INTO num_data VALUES (0, '0');
! INSERT INTO num_data VALUES (1, '0');
! INSERT INTO num_data VALUES (2, '-34338492.215397047');
! INSERT INTO num_data VALUES (3, '4.31');
! INSERT INTO num_data VALUES (4, '7799461.4119');
! INSERT INTO num_data VALUES (5, '16397.038491');
! INSERT INTO num_data VALUES (6, '93901.57763026');
! INSERT INTO num_data VALUES (7, '-83028485');
! INSERT INTO num_data VALUES (8, '74881');
! INSERT INTO num_data VALUES (9, '-24926804.045047420');
! COMMIT TRANSACTION;
! -- ******************************
! -- * Create indices for faster checks
! -- ******************************
! CREATE UNIQUE INDEX num_exp_add_idx ON num_exp_add (id1, id2);
! CREATE UNIQUE INDEX num_exp_sub_idx ON num_exp_sub (id1, id2);
! CREATE UNIQUE INDEX num_exp_div_idx ON num_exp_div (id1, id2);
! CREATE UNIQUE INDEX num_exp_mul_idx ON num_exp_mul (id1, id2);
! CREATE UNIQUE INDEX num_exp_sqrt_idx ON num_exp_sqrt (id);
! CREATE UNIQUE INDEX num_exp_ln_idx ON num_exp_ln (id);
! CREATE UNIQUE INDEX num_exp_log10_idx ON num_exp_log10 (id);
! CREATE UNIQUE INDEX num_exp_power_10_ln_idx ON num_exp_power_10_ln (id);
! VACUUM ANALYZE num_exp_add;
! VACUUM ANALYZE num_exp_sub;
! VACUUM ANALYZE num_exp_div;
! VACUUM ANALYZE num_exp_mul;
! VACUUM ANALYZE num_exp_sqrt;
! VACUUM ANALYZE num_exp_ln;
! VACUUM ANALYZE num_exp_log10;
! VACUUM ANALYZE num_exp_power_10_ln;
! -- ******************************
! -- * Now check the behaviour of the NUMERIC type
! -- ******************************
! -- ******************************
! -- * Addition check
! -- ******************************
! DELETE FROM num_result;
! INSERT INTO num_result SELECT t1.id, t2.id, t1.val + t2.val
! FROM num_data t1, num_data t2;
! SELECT t1.id1, t1.id2, t1.result, t2.expected
! FROM num_result t1, num_exp_add t2
! WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
! AND t1.result != t2.expected ORDER BY t1.id1, t1.id2, t2.expected;
! id1 | id2 | result | expected
! -----+-----+--------+----------
! (0 rows)
!
! DELETE FROM num_result;
! INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val + t2.val, 10)
! FROM num_data t1, num_data t2;
! SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 10) as expected
! FROM num_result t1, num_exp_add t2
! WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
! AND t1.result != round(t2.expected, 10) ORDER BY t1.id1, t1.id2;
! id1 | id2 | result | expected
! -----+-----+--------+----------
! (0 rows)
!
! -- ******************************
! -- * Subtraction check
! -- ******************************
! DELETE FROM num_result;
! INSERT INTO num_result SELECT t1.id, t2.id, t1.val - t2.val
! FROM num_data t1, num_data t2;
! SELECT t1.id1, t1.id2, t1.result, t2.expected
! FROM num_result t1, num_exp_sub t2
! WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
! AND t1.result != t2.expected ORDER BY t1.id1, t1.id2, t2.expected;
! id1 | id2 | result | expected
! -----+-----+--------+----------
! (0 rows)
!
! DELETE FROM num_result;
! INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val - t2.val, 40)
! FROM num_data t1, num_data t2;
! SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 40)
! FROM num_result t1, num_exp_sub t2
! WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
! AND t1.result != round(t2.expected, 40);
! id1 | id2 | result | round
! -----+-----+--------+-------
! (0 rows)
!
! -- ******************************
! -- * Multiply check
! -- ******************************
! DELETE FROM num_result;
! INSERT INTO num_result SELECT t1.id, t2.id, t1.val * t2.val
! FROM num_data t1, num_data t2;
! SELECT t1.id1, t1.id2, t1.result, t2.expected
! FROM num_result t1, num_exp_mul t2
! WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
! AND t1.result != t2.expected;
! id1 | id2 | result | expected
! -----+-----+--------+----------
! (0 rows)
!
! DELETE FROM num_result;
! INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val * t2.val, 30)
! FROM num_data t1, num_data t2;
! SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 30) as expected
! FROM num_result t1, num_exp_mul t2
! WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
! AND t1.result != round(t2.expected, 30);
! id1 | id2 | result | expected
! -----+-----+--------+----------
! (0 rows)
!
! -- ******************************
! -- * Division check
! -- ******************************
! DELETE FROM num_result;
! INSERT INTO num_result SELECT t1.id, t2.id, t1.val / t2.val
! FROM num_data t1, num_data t2
! WHERE t2.val != '0.0';
! SELECT t1.id1, t1.id2, t1.result, t2.expected
! FROM num_result t1, num_exp_div t2
! WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
! AND t1.result != t2.expected;
! id1 | id2 | result | expected
! -----+-----+--------+----------
! (0 rows)
!
! DELETE FROM num_result;
! INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val / t2.val, 80)
! FROM num_data t1, num_data t2
! WHERE t2.val != '0.0';
! SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 80) as expected
! FROM num_result t1, num_exp_div t2
! WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
! AND t1.result != round(t2.expected, 80);
! id1 | id2 | result | expected
! -----+-----+--------+----------
! (0 rows)
!
! -- ******************************
! -- * Square root check
! -- ******************************
! DELETE FROM num_result;
! INSERT INTO num_result SELECT id, 0, SQRT(ABS(val))
! FROM num_data;
! SELECT t1.id1, t1.result, t2.expected
! FROM num_result t1, num_exp_sqrt t2
! WHERE t1.id1 = t2.id
! AND t1.result != t2.expected;
! id1 | result | expected
! -----+--------+----------
! (0 rows)
!
! -- ******************************
! -- * Natural logarithm check
! -- ******************************
! DELETE FROM num_result;
! INSERT INTO num_result SELECT id, 0, LN(ABS(val))
! FROM num_data
! WHERE val != '0.0';
! SELECT t1.id1, t1.result, t2.expected
! FROM num_result t1, num_exp_ln t2
! WHERE t1.id1 = t2.id
! AND t1.result != t2.expected;
! id1 | result | expected
! -----+--------+----------
! (0 rows)
!
! -- ******************************
! -- * Logarithm base 10 check
! -- ******************************
! DELETE FROM num_result;
! INSERT INTO num_result SELECT id, 0, LOG(numeric '10', ABS(val))
! FROM num_data
! WHERE val != '0.0';
! SELECT t1.id1, t1.result, t2.expected
! FROM num_result t1, num_exp_log10 t2
! WHERE t1.id1 = t2.id
! AND t1.result != t2.expected;
! id1 | result | expected
! -----+--------+----------
! (0 rows)
!
! -- ******************************
! -- * POWER(10, LN(value)) check
! -- ******************************
! DELETE FROM num_result;
! INSERT INTO num_result SELECT id, 0, POWER(numeric '10', LN(ABS(round(val,200))))
! FROM num_data
! WHERE val != '0.0';
! SELECT t1.id1, t1.result, t2.expected
! FROM num_result t1, num_exp_power_10_ln t2
! WHERE t1.id1 = t2.id
! AND t1.result != t2.expected;
! id1 | result | expected
! -----+--------+----------
! (0 rows)
!
! -- ******************************
! -- * miscellaneous checks for things that have been broken in the past...
! -- ******************************
! -- numeric AVG used to fail on some platforms
! SELECT AVG(val) FROM num_data;
! avg
! ------------------------
! -13430913.592242320700
! (1 row)
!
! SELECT STDDEV(val) FROM num_data;
! stddev
! -------------------------------
! 27791203.28758835329805617386
! (1 row)
!
! SELECT VARIANCE(val) FROM num_data;
! variance
! --------------------------------------
! 772350980172061.69659105821915863601
! (1 row)
!
! -- Check for appropriate rounding and overflow
! CREATE TABLE fract_only (id int, val numeric(4,4));
! INSERT INTO fract_only VALUES (1, '0.0');
! INSERT INTO fract_only VALUES (2, '0.1');
! INSERT INTO fract_only VALUES (3, '1.0'); -- should fail
! ERROR: numeric field overflow
! DETAIL: A field with precision 4, scale 4 must round to an absolute value less than 1.
! INSERT INTO fract_only VALUES (4, '-0.9999');
! INSERT INTO fract_only VALUES (5, '0.99994');
! INSERT INTO fract_only VALUES (6, '0.99995'); -- should fail
! ERROR: numeric field overflow
! DETAIL: A field with precision 4, scale 4 must round to an absolute value less than 1.
! INSERT INTO fract_only VALUES (7, '0.00001');
! INSERT INTO fract_only VALUES (8, '0.00017');
! SELECT * FROM fract_only ORDER BY id;
! id | val
! ----+---------
! 1 | 0.0000
! 2 | 0.1000
! 4 | -0.9999
! 5 | 0.9999
! 7 | 0.0000
! 8 | 0.0002
! (6 rows)
!
! DROP TABLE fract_only;
! -- Simple check that ceil(), floor(), and round() work correctly
! CREATE TABLE ceil_floor_round (a numeric);
! INSERT INTO ceil_floor_round VALUES ('-5.5');
! INSERT INTO ceil_floor_round VALUES ('-5.499999');
! INSERT INTO ceil_floor_round VALUES ('9.5');
! INSERT INTO ceil_floor_round VALUES ('9.4999999');
! INSERT INTO ceil_floor_round VALUES ('0.0');
! INSERT INTO ceil_floor_round VALUES ('0.0000001');
! INSERT INTO ceil_floor_round VALUES ('-0.000001');
! SELECT a, ceil(a), ceiling(a), floor(a), round(a) FROM ceil_floor_round ORDER BY a;
! a | ceil | ceiling | floor | round
! -----------+------+---------+-------+-------
! -5.5 | -5 | -5 | -6 | -6
! -5.499999 | -5 | -5 | -6 | -5
! -0.000001 | 0 | 0 | -1 | 0
! 0.0 | 0 | 0 | 0 | 0
! 0.0000001 | 1 | 1 | 0 | 0
! 9.4999999 | 10 | 10 | 9 | 9
! 9.5 | 10 | 10 | 9 | 10
! (7 rows)
!
! DROP TABLE ceil_floor_round;
! -- Testing for width_bucket(). For convenience, we test both the
! -- numeric and float8 versions of the function in this file.
! -- errors
! SELECT width_bucket(5.0, 3.0, 4.0, 0);
! ERROR: count must be greater than zero
! SELECT width_bucket(5.0, 3.0, 4.0, -5);
! ERROR: count must be greater than zero
! SELECT width_bucket(3.5, 3.0, 3.0, 888);
! ERROR: lower bound cannot equal upper bound
! SELECT width_bucket(5.0::float8, 3.0::float8, 4.0::float8, 0);
! ERROR: count must be greater than zero
! SELECT width_bucket(5.0::float8, 3.0::float8, 4.0::float8, -5);
! ERROR: count must be greater than zero
! SELECT width_bucket(3.5::float8, 3.0::float8, 3.0::float8, 888);
! ERROR: lower bound cannot equal upper bound
! SELECT width_bucket('NaN', 3.0, 4.0, 888);
! ERROR: operand, lower bound, and upper bound cannot be NaN
! SELECT width_bucket(0::float8, 'NaN', 4.0::float8, 888);
! ERROR: operand, lower bound, and upper bound cannot be NaN
! -- normal operation
! CREATE TABLE width_bucket_test (operand_num numeric, operand_f8 float8);
! COPY width_bucket_test (operand_num) FROM stdin;
! UPDATE width_bucket_test SET operand_f8 = operand_num::float8;
! SELECT
! operand_num,
! width_bucket(operand_num, 0, 10, 5) AS wb_1,
! width_bucket(operand_f8, 0, 10, 5) AS wb_1f,
! width_bucket(operand_num, 10, 0, 5) AS wb_2,
! width_bucket(operand_f8, 10, 0, 5) AS wb_2f,
! width_bucket(operand_num, 2, 8, 4) AS wb_3,
! width_bucket(operand_f8, 2, 8, 4) AS wb_3f,
! width_bucket(operand_num, 5.0, 5.5, 20) AS wb_4,
! width_bucket(operand_f8, 5.0, 5.5, 20) AS wb_4f,
! width_bucket(operand_num, -25, 25, 10) AS wb_5,
! width_bucket(operand_f8, -25, 25, 10) AS wb_5f
! FROM width_bucket_test ORDER BY operand_num;
! operand_num | wb_1 | wb_1f | wb_2 | wb_2f | wb_3 | wb_3f | wb_4 | wb_4f | wb_5 | wb_5f
! ------------------+------+-------+------+-------+------+-------+------+-------+------+-------
! -5.2 | 0 | 0 | 6 | 6 | 0 | 0 | 0 | 0 | 4 | 4
! -0.0000000001 | 0 | 0 | 6 | 6 | 0 | 0 | 0 | 0 | 5 | 5
! 0.000000000001 | 1 | 1 | 5 | 5 | 0 | 0 | 0 | 0 | 6 | 6
! 1 | 1 | 1 | 5 | 5 | 0 | 0 | 0 | 0 | 6 | 6
! 1.99999999999999 | 1 | 1 | 5 | 5 | 0 | 0 | 0 | 0 | 6 | 6
! 2 | 2 | 2 | 5 | 5 | 1 | 1 | 0 | 0 | 6 | 6
! 2.00000000000001 | 2 | 2 | 4 | 4 | 1 | 1 | 0 | 0 | 6 | 6
! 3 | 2 | 2 | 4 | 4 | 1 | 1 | 0 | 0 | 6 | 6
! 4 | 3 | 3 | 4 | 4 | 2 | 2 | 0 | 0 | 6 | 6
! 4.5 | 3 | 3 | 3 | 3 | 2 | 2 | 0 | 0 | 6 | 6
! 5 | 3 | 3 | 3 | 3 | 3 | 3 | 1 | 1 | 7 | 7
! 5.5 | 3 | 3 | 3 | 3 | 3 | 3 | 21 | 21 | 7 | 7
! 6 | 4 | 4 | 3 | 3 | 3 | 3 | 21 | 21 | 7 | 7
! 7 | 4 | 4 | 2 | 2 | 4 | 4 | 21 | 21 | 7 | 7
! 8 | 5 | 5 | 2 | 2 | 5 | 5 | 21 | 21 | 7 | 7
! 9 | 5 | 5 | 1 | 1 | 5 | 5 | 21 | 21 | 7 | 7
! 9.99999999999999 | 5 | 5 | 1 | 1 | 5 | 5 | 21 | 21 | 7 | 7
! 10 | 6 | 6 | 1 | 1 | 5 | 5 | 21 | 21 | 8 | 8
! 10.0000000000001 | 6 | 6 | 0 | 0 | 5 | 5 | 21 | 21 | 8 | 8
! (19 rows)
!
! -- for float8 only, check positive and negative infinity: we require
! -- finite bucket bounds, but allow an infinite operand
! SELECT width_bucket(0.0::float8, 'Infinity'::float8, 5, 10); -- error
! ERROR: lower and upper bounds must be finite
! SELECT width_bucket(0.0::float8, 5, '-Infinity'::float8, 20); -- error
! ERROR: lower and upper bounds must be finite
! SELECT width_bucket('Infinity'::float8, 1, 10, 10),
! width_bucket('-Infinity'::float8, 1, 10, 10);
! width_bucket | width_bucket
! --------------+--------------
! 11 | 0
! (1 row)
!
! DROP TABLE width_bucket_test;
! -- TO_CHAR()
! --
! SELECT '' AS to_char_1, to_char(val, '9G999G999G999G999G999')
! FROM num_data ORDER BY val;
! to_char_1 | to_char
! -----------+------------------------
! | -83,028,485
! | -34,338,492
! | -24,926,804
! | 0
! | 0
! | 4
! | 16,397
! | 74,881
! | 93,902
! | 7,799,461
! (10 rows)
!
! SELECT '' AS to_char_2, to_char(val, '9G999G999G999G999G999D999G999G999G999G999')
! FROM num_data ORDER BY val;
! to_char_2 | to_char
! -----------+--------------------------------------------
! | -83,028,485.000,000,000,000,000
! | -34,338,492.215,397,047,000,000
! | -24,926,804.045,047,420,000,000
! | .000,000,000,000,000
! | .000,000,000,000,000
! | 4.310,000,000,000,000
! | 16,397.038,491,000,000,000
! | 74,881.000,000,000,000,000
! | 93,901.577,630,260,000,000
! | 7,799,461.411,900,000,000,000
! (10 rows)
!
! SELECT '' AS to_char_3, to_char(val, '9999999999999999.999999999999999PR')
! FROM num_data ORDER BY val;
! to_char_3 | to_char
! -----------+------------------------------------
! | <83028485.000000000000000>
! | <34338492.215397047000000>
! | <24926804.045047420000000>
! | .000000000000000
! | .000000000000000
! | 4.310000000000000
! | 16397.038491000000000
! | 74881.000000000000000
! | 93901.577630260000000
! | 7799461.411900000000000
! (10 rows)
!
! SELECT '' AS to_char_4, to_char(val, '9999999999999999.999999999999999S')
! FROM num_data ORDER BY val;
! to_char_4 | to_char
! -----------+-----------------------------------
! | 83028485.000000000000000-
! | 34338492.215397047000000-
! | 24926804.045047420000000-
! | .000000000000000+
! | .000000000000000+
! | 4.310000000000000+
! | 16397.038491000000000+
! | 74881.000000000000000+
! | 93901.577630260000000+
! | 7799461.411900000000000+
! (10 rows)
!
! SELECT '' AS to_char_5, to_char(val, 'MI9999999999999999.999999999999999') FROM num_data ORDER BY val;
! to_char_5 | to_char
! -----------+-----------------------------------
! | - 83028485.000000000000000
! | - 34338492.215397047000000
! | - 24926804.045047420000000
! | .000000000000000
! | .000000000000000
! | 4.310000000000000
! | 16397.038491000000000
! | 74881.000000000000000
! | 93901.577630260000000
! | 7799461.411900000000000
! (10 rows)
!
! SELECT '' AS to_char_6, to_char(val, 'FMS9999999999999999.999999999999999') FROM num_data ORDER BY val;
! to_char_6 | to_char
! -----------+---------------------
! | -83028485.
! | -34338492.215397047
! | -24926804.04504742
! | +0.
! | +0.
! | +4.31
! | +16397.038491
! | +74881.
! | +93901.57763026
! | +7799461.4119
! (10 rows)
!
! SELECT '' AS to_char_7, to_char(val, 'FM9999999999999999.999999999999999THPR') FROM num_data ORDER BY val;
! to_char_7 | to_char
! -----------+----------------------
! | <83028485.>
! | <34338492.215397047>
! | <24926804.04504742>
! | 0.
! | 0.
! | 4.31
! | 16397.038491
! | 74881.
! | 93901.57763026
! | 7799461.4119
! (10 rows)
!
! SELECT '' AS to_char_8, to_char(val, 'SG9999999999999999.999999999999999th') FROM num_data ORDER BY val;
! to_char_8 | to_char
! -----------+-----------------------------------
! | - 83028485.000000000000000
! | - 34338492.215397047000000
! | - 24926804.045047420000000
! | + .000000000000000
! | + .000000000000000
! | + 4.310000000000000
! | + 16397.038491000000000
! | + 74881.000000000000000
! | + 93901.577630260000000
! | + 7799461.411900000000000
! (10 rows)
!
! SELECT '' AS to_char_9, to_char(val, '0999999999999999.999999999999999') FROM num_data ORDER BY val;
! to_char_9 | to_char
! -----------+-----------------------------------
! | -0000000083028485.000000000000000
! | -0000000034338492.215397047000000
! | -0000000024926804.045047420000000
! | 0000000000000000.000000000000000
! | 0000000000000000.000000000000000
! | 0000000000000004.310000000000000
! | 0000000000016397.038491000000000
! | 0000000000074881.000000000000000
! | 0000000000093901.577630260000000
! | 0000000007799461.411900000000000
! (10 rows)
!
! SELECT '' AS to_char_10, to_char(val, 'S0999999999999999.999999999999999') FROM num_data ORDER BY val;
! to_char_10 | to_char
! ------------+-----------------------------------
! | -0000000083028485.000000000000000
! | -0000000034338492.215397047000000
! | -0000000024926804.045047420000000
! | +0000000000000000.000000000000000
! | +0000000000000000.000000000000000
! | +0000000000000004.310000000000000
! | +0000000000016397.038491000000000
! | +0000000000074881.000000000000000
! | +0000000000093901.577630260000000
! | +0000000007799461.411900000000000
! (10 rows)
!
! SELECT '' AS to_char_11, to_char(val, 'FM0999999999999999.999999999999999') FROM num_data ORDER BY val;
! to_char_11 | to_char
! ------------+-----------------------------
! | -0000000083028485.
! | -0000000034338492.215397047
! | -0000000024926804.04504742
! | 0000000000000000.
! | 0000000000000000.
! | 0000000000000004.31
! | 0000000000016397.038491
! | 0000000000074881.
! | 0000000000093901.57763026
! | 0000000007799461.4119
! (10 rows)
!
! SELECT '' AS to_char_12, to_char(val, 'FM9999999999999999.099999999999999') FROM num_data ORDER BY val;
! to_char_12 | to_char
! ------------+---------------------
! | -83028485.0
! | -34338492.215397047
! | -24926804.04504742
! | .0
! | .0
! | 4.31
! | 16397.038491
! | 74881.0
! | 93901.57763026
! | 7799461.4119
! (10 rows)
!
! SELECT '' AS to_char_13, to_char(val, 'FM9999999999990999.990999999999999') FROM num_data ORDER BY val;
! to_char_13 | to_char
! ------------+---------------------
! | -83028485.000
! | -34338492.215397047
! | -24926804.04504742
! | 0000.000
! | 0000.000
! | 0004.310
! | 16397.038491
! | 74881.000
! | 93901.57763026
! | 7799461.4119
! (10 rows)
!
! SELECT '' AS to_char_14, to_char(val, 'FM0999999999999999.999909999999999') FROM num_data ORDER BY val;
! to_char_14 | to_char
! ------------+-----------------------------
! | -0000000083028485.00000
! | -0000000034338492.215397047
! | -0000000024926804.04504742
! | 0000000000000000.00000
! | 0000000000000000.00000
! | 0000000000000004.31000
! | 0000000000016397.038491
! | 0000000000074881.00000
! | 0000000000093901.57763026
! | 0000000007799461.41190
! (10 rows)
!
! SELECT '' AS to_char_15, to_char(val, 'FM9999999990999999.099999999999999') FROM num_data ORDER BY val;
! to_char_15 | to_char
! ------------+---------------------
! | -83028485.0
! | -34338492.215397047
! | -24926804.04504742
! | 0000000.0
! | 0000000.0
! | 0000004.31
! | 0016397.038491
! | 0074881.0
! | 0093901.57763026
! | 7799461.4119
! (10 rows)
!
! SELECT '' AS to_char_16, to_char(val, 'L9999999999999999.099999999999999') FROM num_data ORDER BY val;
! to_char_16 | to_char
! ------------+------------------------------------
! | -83028485.000000000000000
! | -34338492.215397047000000
! | -24926804.045047420000000
! | .000000000000000
! | .000000000000000
! | 4.310000000000000
! | 16397.038491000000000
! | 74881.000000000000000
! | 93901.577630260000000
! | 7799461.411900000000000
! (10 rows)
!
! SELECT '' AS to_char_17, to_char(val, 'FM9999999999999999.99999999999999') FROM num_data ORDER BY val;
! to_char_17 | to_char
! ------------+---------------------
! | -83028485.
! | -34338492.215397047
! | -24926804.04504742
! | 0.
! | 0.
! | 4.31
! | 16397.038491
! | 74881.
! | 93901.57763026
! | 7799461.4119
! (10 rows)
!
! SELECT '' AS to_char_18, to_char(val, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data ORDER BY val;
! to_char_18 | to_char
! ------------+-----------------------------------------------------------------------
! | -8 3 0 2 8 4 8 5 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
! | -3 4 3 3 8 4 9 2 . 2 1 5 3 9 7 0 4 7 0 0 0 0 0 0 0 0
! | -2 4 9 2 6 8 0 4 . 0 4 5 0 4 7 4 2 0 0 0 0 0 0 0 0 0
! | +. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
! | +. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
! | +4 . 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
! | +1 6 3 9 7 . 0 3 8 4 9 1 0 0 0 0 0 0 0 0 0 0 0
! | +7 4 8 8 1 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
! | +9 3 9 0 1 . 5 7 7 6 3 0 2 6 0 0 0 0 0 0 0 0 0
! | +7 7 9 9 4 6 1 . 4 1 1 9 0 0 0 0 0 0 0 0 0 0 0 0 0
! (10 rows)
!
! SELECT '' AS to_char_19, to_char(val, 'FMS 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data ORDER BY val;
! to_char_19 | to_char
! ------------+-------------------------------------------------------
! | -8 3 0 2 8 4 8 5 .
! | -3 4 3 3 8 4 9 2 . 2 1 5 3 9 7 0 4 7
! | -2 4 9 2 6 8 0 4 . 0 4 5 0 4 7 4 2
! | +0 .
! | +0 .
! | +4 . 3 1
! | +1 6 3 9 7 . 0 3 8 4 9 1
! | +7 4 8 8 1 .
! | +9 3 9 0 1 . 5 7 7 6 3 0 2 6
! | +7 7 9 9 4 6 1 . 4 1 1 9
! (10 rows)
!
! SELECT '' AS to_char_20, to_char(val, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data ORDER BY val;
! to_char_20 | to_char
! ------------+-----------------------------------------------------------
! | text -8 9999 302 "text between quote marks" 8485
! | text -3 9999 433 "text between quote marks" 8492
! | text -2 9999 492 "text between quote marks" 6804
! | text 9999 "text between quote marks" 0
! | text 9999 "text between quote marks" 0
! | text 9999 "text between quote marks" 4
! | text 9999 1 "text between quote marks" 6397
! | text 9999 7 "text between quote marks" 4881
! | text 9999 9 "text between quote marks" 3902
! | text 9999 779 "text between quote marks" 9461
! (10 rows)
!
! SELECT '' AS to_char_21, to_char(val, '999999SG9999999999') FROM num_data ORDER BY val;
! to_char_21 | to_char
! ------------+-------------------
! | - 83028485
! | - 34338492
! | - 24926804
! | + 0
! | + 0
! | + 4
! | + 16397
! | + 74881
! | + 93902
! | + 7799461
! (10 rows)
!
! SELECT '' AS to_char_22, to_char(val, 'FM9999999999999999.999999999999999') FROM num_data ORDER BY val;
! to_char_22 | to_char
! ------------+---------------------
! | -83028485.
! | -34338492.215397047
! | -24926804.04504742
! | 0.
! | 0.
! | 4.31
! | 16397.038491
! | 74881.
! | 93901.57763026
! | 7799461.4119
! (10 rows)
!
! SELECT '' AS to_char_23, to_char(val, '9.999EEEE') FROM num_data ORDER BY val;
! to_char_23 | to_char
! ------------+------------
! | -8.303e+07
! | -3.434e+07
! | -2.493e+07
! | 0.000e+00
! | 0.000e+00
! | 4.310e+00
! | 1.640e+04
! | 7.488e+04
! | 9.390e+04
! | 7.799e+06
! (10 rows)
!
! SELECT '' AS to_char_24, to_char('100'::numeric, 'FM999.9');
! to_char_24 | to_char
! ------------+---------
! | 100.
! (1 row)
!
! SELECT '' AS to_char_25, to_char('100'::numeric, 'FM999.');
! to_char_25 | to_char
! ------------+---------
! | 100
! (1 row)
!
! SELECT '' AS to_char_26, to_char('100'::numeric, 'FM999');
! to_char_26 | to_char
! ------------+---------
! | 100
! (1 row)
!
! -- TO_NUMBER()
! --
! SELECT '' AS to_number_1, to_number('-34,338,492', '99G999G999');
! to_number_1 | to_number
! -------------+-----------
! | -34338492
! (1 row)
!
! SELECT '' AS to_number_2, to_number('-34,338,492.654,878', '99G999G999D999G999');
! to_number_2 | to_number
! -------------+------------------
! | -34338492.654878
! (1 row)
!
! SELECT '' AS to_number_3, to_number('<564646.654564>', '999999.999999PR');
! to_number_3 | to_number
! -------------+----------------
! | -564646.654564
! (1 row)
!
! SELECT '' AS to_number_4, to_number('0.00001-', '9.999999S');
! to_number_4 | to_number
! -------------+-----------
! | -0.00001
! (1 row)
!
! SELECT '' AS to_number_5, to_number('5.01-', 'FM9.999999S');
! to_number_5 | to_number
! -------------+-----------
! | -5.01
! (1 row)
!
! SELECT '' AS to_number_5, to_number('5.01-', 'FM9.999999MI');
! to_number_5 | to_number
! -------------+-----------
! | -5.01
! (1 row)
!
! SELECT '' AS to_number_7, to_number('5 4 4 4 4 8 . 7 8', '9 9 9 9 9 9 . 9 9');
! to_number_7 | to_number
! -------------+-----------
! | 544448.78
! (1 row)
!
! SELECT '' AS to_number_8, to_number('.01', 'FM9.99');
! to_number_8 | to_number
! -------------+-----------
! | 0.01
! (1 row)
!
! SELECT '' AS to_number_9, to_number('.0', '99999999.99999999');
! to_number_9 | to_number
! -------------+-----------
! | 0.0
! (1 row)
!
! SELECT '' AS to_number_10, to_number('0', '99.99');
! to_number_10 | to_number
! --------------+-----------
! | 0
! (1 row)
!
! SELECT '' AS to_number_11, to_number('.-01', 'S99.99');
! to_number_11 | to_number
! --------------+-----------
! | -0.01
! (1 row)
!
! SELECT '' AS to_number_12, to_number('.01-', '99.99S');
! to_number_12 | to_number
! --------------+-----------
! | -0.01
! (1 row)
!
! SELECT '' AS to_number_13, to_number(' . 0 1-', ' 9 9 . 9 9 S');
! to_number_13 | to_number
! --------------+-----------
! | -0.01
! (1 row)
!
! --
! -- Input syntax
! --
! CREATE TABLE num_input_test (n1 numeric);
! -- good inputs
! INSERT INTO num_input_test(n1) VALUES (' 123');
! INSERT INTO num_input_test(n1) VALUES (' 3245874 ');
! INSERT INTO num_input_test(n1) VALUES (' -93853');
! INSERT INTO num_input_test(n1) VALUES ('555.50');
! INSERT INTO num_input_test(n1) VALUES ('-555.50');
! INSERT INTO num_input_test(n1) VALUES ('NaN ');
! INSERT INTO num_input_test(n1) VALUES (' nan');
! -- bad inputs
! INSERT INTO num_input_test(n1) VALUES (' ');
! ERROR: invalid input syntax for type numeric: " "
! LINE 1: INSERT INTO num_input_test(n1) VALUES (' ');
! ^
! INSERT INTO num_input_test(n1) VALUES (' 1234 %');
! ERROR: invalid input syntax for type numeric: " 1234 %"
! LINE 1: INSERT INTO num_input_test(n1) VALUES (' 1234 %');
! ^
! INSERT INTO num_input_test(n1) VALUES ('xyz');
! ERROR: invalid input syntax for type numeric: "xyz"
! LINE 1: INSERT INTO num_input_test(n1) VALUES ('xyz');
! ^
! INSERT INTO num_input_test(n1) VALUES ('- 1234');
! ERROR: invalid input syntax for type numeric: "- 1234"
! LINE 1: INSERT INTO num_input_test(n1) VALUES ('- 1234');
! ^
! INSERT INTO num_input_test(n1) VALUES ('5 . 0');
! ERROR: invalid input syntax for type numeric: "5 . 0"
! LINE 1: INSERT INTO num_input_test(n1) VALUES ('5 . 0');
! ^
! INSERT INTO num_input_test(n1) VALUES ('5. 0 ');
! ERROR: invalid input syntax for type numeric: "5. 0 "
! LINE 1: INSERT INTO num_input_test(n1) VALUES ('5. 0 ');
! ^
! INSERT INTO num_input_test(n1) VALUES ('');
! ERROR: invalid input syntax for type numeric: ""
! LINE 1: INSERT INTO num_input_test(n1) VALUES ('');
! ^
! INSERT INTO num_input_test(n1) VALUES (' N aN ');
! ERROR: invalid input syntax for type numeric: " N aN "
! LINE 1: INSERT INTO num_input_test(n1) VALUES (' N aN ');
! ^
! SELECT * FROM num_input_test ORDER BY n1;
! n1
! ---------
! -93853
! -555.50
! 123
! 555.50
! 3245874
! NaN
! NaN
! (7 rows)
!
! --
! -- Test some corner cases for multiplication
! --
! select 4790999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999;
! ?column?
! ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
! 47909999999999999999999999999999999999999999999999999999999999999999999999999999999999985209000000000000000000000000000000000000000000000000000000000000000000000000000000000001
! (1 row)
!
! select 4789999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999;
! ?column?
! ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
! 47899999999999999999999999999999999999999999999999999999999999999999999999999999999999985210000000000000000000000000000000000000000000000000000000000000000000000000000000000001
! (1 row)
!
! select 4770999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999;
! ?column?
! ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
! 47709999999999999999999999999999999999999999999999999999999999999999999999999999999999985229000000000000000000000000000000000000000000000000000000000000000000000000000000000001
! (1 row)
!
! select 4769999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999;
! ?column?
! ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
! 47699999999999999999999999999999999999999999999999999999999999999999999999999999999999985230000000000000000000000000000000000000000000000000000000000000000000000000000000000001
! (1 row)
!
! --
! -- Test some corner cases for division
! --
! select 999999999999999999999::numeric/1000000000000000000000;
! ?column?
! ------------------------
! 1.00000000000000000000
! (1 row)
!
! select div(999999999999999999999::numeric,1000000000000000000000);
! div
! -----
! 0
! (1 row)
!
! select mod(999999999999999999999::numeric,1000000000000000000000);
! mod
! -----------------------
! 999999999999999999999
! (1 row)
!
! select div(-9999999999999999999999::numeric,1000000000000000000000);
! div
! -----
! -9
! (1 row)
!
! select mod(-9999999999999999999999::numeric,1000000000000000000000);
! mod
! ------------------------
! -999999999999999999999
! (1 row)
!
! select div(-9999999999999999999999::numeric,1000000000000000000000)*1000000000000000000000 + mod(-9999999999999999999999::numeric,1000000000000000000000);
! ?column?
! -------------------------
! -9999999999999999999999
! (1 row)
!
! select mod (70.0,70) ;
! mod
! -----
! 0.0
! (1 row)
!
! select div (70.0,70) ;
! div
! -----
! 1
! (1 row)
!
! select 70.0 / 70 ;
! ?column?
! ------------------------
! 1.00000000000000000000
! (1 row)
!
! select 12345678901234567890 % 123;
! ?column?
! ----------
! 78
! (1 row)
!
! select 12345678901234567890 / 123;
! ?column?
! --------------------
! 100371373180768845
! (1 row)
!
! select div(12345678901234567890, 123);
! div
! --------------------
! 100371373180768844
! (1 row)
!
! select div(12345678901234567890, 123) * 123 + 12345678901234567890 % 123;
! ?column?
! ----------------------
! 12345678901234567890
! (1 row)
!
! --
! -- Test code path for raising to integer powers
! --
! select 10.0 ^ -2147483648 as rounds_to_zero;
! rounds_to_zero
! --------------------
! 0.0000000000000000
! (1 row)
!
! select 10.0 ^ -2147483647 as rounds_to_zero;
! rounds_to_zero
! --------------------
! 0.0000000000000000
! (1 row)
!
! select 10.0 ^ 2147483647 as overflows;
! ERROR: value overflows numeric format
! select 117743296169.0 ^ 1000000000 as overflows;
! ERROR: value overflows numeric format
! --
! -- Tests for generate_series
! --
! select * from generate_series(0.0::numeric, 4.0::numeric);
! generate_series
! -----------------
! 0.0
! 1.0
! 2.0
! 3.0
! 4.0
! (5 rows)
!
! select * from generate_series(0.1::numeric, 4.0::numeric, 1.3::numeric);
! generate_series
! -----------------
! 0.1
! 1.4
! 2.7
! 4.0
! (4 rows)
!
! select * from generate_series(4.0::numeric, -1.5::numeric, -2.2::numeric);
! generate_series
! -----------------
! 4.0
! 1.8
! -0.4
! (3 rows)
!
! -- Trigger errors
! select * from generate_series(-100::numeric, 100::numeric, 0::numeric);
! ERROR: step size cannot equal zero
! select * from generate_series(-100::numeric, 100::numeric, 'nan'::numeric);
! ERROR: step size cannot be NaN
! select * from generate_series('nan'::numeric, 100::numeric, 10::numeric);
! ERROR: start value cannot be NaN
! select * from generate_series(0::numeric, 'nan'::numeric, 10::numeric);
! ERROR: stop value cannot be NaN
! -- Checks maximum, output is truncated
! select (i / (10::numeric ^ 131071))::numeric(1,0)
! from generate_series(6 * (10::numeric ^ 131071),
! 9 * (10::numeric ^ 131071),
! 10::numeric ^ 131071) as a(i);
! numeric
! ---------
! 6
! 7
! 8
! 9
! (4 rows)
!
! -- Check usage with variables
! select * from generate_series(1::numeric, 3::numeric) i, generate_series(i,3) j;
! i | j
! ---+---
! 1 | 1
! 1 | 2
! 1 | 3
! 2 | 2
! 2 | 3
! 3 | 3
! (6 rows)
!
! select * from generate_series(1::numeric, 3::numeric) i, generate_series(1,i) j;
! i | j
! ---+---
! 1 | 1
! 2 | 1
! 2 | 2
! 3 | 1
! 3 | 2
! 3 | 3
! (6 rows)
!
! select * from generate_series(1::numeric, 3::numeric) i, generate_series(1,5,i) j;
! i | j
! ---+---
! 1 | 1
! 1 | 2
! 1 | 3
! 1 | 4
! 1 | 5
! 2 | 1
! 2 | 3
! 2 | 5
! 3 | 1
! 3 | 4
! (10 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/txid.out 2016-04-02 21:48:58.137505320 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/txid.out 2016-04-04 03:18:30.567522400 +0000
***************
*** 1,240 ****
! -- txid_snapshot data type and related functions
! -- i/o
! select '12:13:'::txid_snapshot;
! txid_snapshot
! ---------------
! 12:13:
! (1 row)
!
! select '12:18:14,16'::txid_snapshot;
! txid_snapshot
! ---------------
! 12:18:14,16
! (1 row)
!
! select '12:16:14,14'::txid_snapshot;
! txid_snapshot
! ---------------
! 12:16:14
! (1 row)
!
! -- errors
! select '31:12:'::txid_snapshot;
! ERROR: invalid input syntax for type txid_snapshot: "31:12:"
! LINE 1: select '31:12:'::txid_snapshot;
! ^
! select '0:1:'::txid_snapshot;
! ERROR: invalid input syntax for type txid_snapshot: "0:1:"
! LINE 1: select '0:1:'::txid_snapshot;
! ^
! select '12:13:0'::txid_snapshot;
! ERROR: invalid input syntax for type txid_snapshot: "12:13:0"
! LINE 1: select '12:13:0'::txid_snapshot;
! ^
! select '12:16:14,13'::txid_snapshot;
! ERROR: invalid input syntax for type txid_snapshot: "12:16:14,13"
! LINE 1: select '12:16:14,13'::txid_snapshot;
! ^
! create temp table snapshot_test (
! nr integer,
! snap txid_snapshot
! );
! insert into snapshot_test values (1, '12:13:');
! insert into snapshot_test values (2, '12:20:13,15,18');
! insert into snapshot_test values (3, '100001:100009:100005,100007,100008');
! insert into snapshot_test values (4, '100:150:101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131');
! select snap from snapshot_test order by nr;
! snap
! -------------------------------------------------------------------------------------------------------------------------------------
! 12:13:
! 12:20:13,15,18
! 100001:100009:100005,100007,100008
! 100:150:101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131
! (4 rows)
!
! select txid_snapshot_xmin(snap),
! txid_snapshot_xmax(snap),
! txid_snapshot_xip(snap)
! from snapshot_test order by nr, 1, 2, 3;
! txid_snapshot_xmin | txid_snapshot_xmax | txid_snapshot_xip
! --------------------+--------------------+-------------------
! 12 | 20 | 13
! 12 | 20 | 15
! 12 | 20 | 18
! 100001 | 100009 | 100005
! 100001 | 100009 | 100007
! 100001 | 100009 | 100008
! 100 | 150 | 101
! 100 | 150 | 102
! 100 | 150 | 103
! 100 | 150 | 104
! 100 | 150 | 105
! 100 | 150 | 106
! 100 | 150 | 107
! 100 | 150 | 108
! 100 | 150 | 109
! 100 | 150 | 110
! 100 | 150 | 111
! 100 | 150 | 112
! 100 | 150 | 113
! 100 | 150 | 114
! 100 | 150 | 115
! 100 | 150 | 116
! 100 | 150 | 117
! 100 | 150 | 118
! 100 | 150 | 119
! 100 | 150 | 120
! 100 | 150 | 121
! 100 | 150 | 122
! 100 | 150 | 123
! 100 | 150 | 124
! 100 | 150 | 125
! 100 | 150 | 126
! 100 | 150 | 127
! 100 | 150 | 128
! 100 | 150 | 129
! 100 | 150 | 130
! 100 | 150 | 131
! (37 rows)
!
! select id, txid_visible_in_snapshot(id, snap)
! from snapshot_test, generate_series(11, 21) id
! where nr = 2;
! id | txid_visible_in_snapshot
! ----+--------------------------
! 11 | t
! 12 | t
! 13 | f
! 14 | t
! 15 | f
! 16 | t
! 17 | t
! 18 | f
! 19 | t
! 20 | f
! 21 | f
! (11 rows)
!
! -- test bsearch
! select id, txid_visible_in_snapshot(id, snap)
! from snapshot_test, generate_series(90, 160) id
! where nr = 4;
! id | txid_visible_in_snapshot
! -----+--------------------------
! 90 | t
! 91 | t
! 92 | t
! 93 | t
! 94 | t
! 95 | t
! 96 | t
! 97 | t
! 98 | t
! 99 | t
! 100 | t
! 101 | f
! 102 | f
! 103 | f
! 104 | f
! 105 | f
! 106 | f
! 107 | f
! 108 | f
! 109 | f
! 110 | f
! 111 | f
! 112 | f
! 113 | f
! 114 | f
! 115 | f
! 116 | f
! 117 | f
! 118 | f
! 119 | f
! 120 | f
! 121 | f
! 122 | f
! 123 | f
! 124 | f
! 125 | f
! 126 | f
! 127 | f
! 128 | f
! 129 | f
! 130 | f
! 131 | f
! 132 | t
! 133 | t
! 134 | t
! 135 | t
! 136 | t
! 137 | t
! 138 | t
! 139 | t
! 140 | t
! 141 | t
! 142 | t
! 143 | t
! 144 | t
! 145 | t
! 146 | t
! 147 | t
! 148 | t
! 149 | t
! 150 | f
! 151 | f
! 152 | f
! 153 | f
! 154 | f
! 155 | f
! 156 | f
! 157 | f
! 158 | f
! 159 | f
! 160 | f
! (71 rows)
!
! -- test current values also
! select txid_current() >= txid_snapshot_xmin(txid_current_snapshot());
! ?column?
! ----------
! t
! (1 row)
!
! -- we can't assume current is always less than xmax, however
! select txid_visible_in_snapshot(txid_current(), txid_current_snapshot());
! txid_visible_in_snapshot
! --------------------------
! f
! (1 row)
!
! -- test 64bitness
! select txid_snapshot '1000100010001000:1000100010001100:1000100010001012,1000100010001013';
! txid_snapshot
! ---------------------------------------------------------------------
! 1000100010001000:1000100010001100:1000100010001012,1000100010001013
! (1 row)
!
! select txid_visible_in_snapshot('1000100010001012', '1000100010001000:1000100010001100:1000100010001012,1000100010001013');
! txid_visible_in_snapshot
! --------------------------
! f
! (1 row)
!
! select txid_visible_in_snapshot('1000100010001015', '1000100010001000:1000100010001100:1000100010001012,1000100010001013');
! txid_visible_in_snapshot
! --------------------------
! t
! (1 row)
!
! -- test 64bit overflow
! SELECT txid_snapshot '1:9223372036854775807:3';
! txid_snapshot
! -------------------------
! 1:9223372036854775807:3
! (1 row)
!
! SELECT txid_snapshot '1:9223372036854775808:3';
! ERROR: invalid input syntax for type txid_snapshot: "1:9223372036854775808:3"
! LINE 1: SELECT txid_snapshot '1:9223372036854775808:3';
! ^
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/uuid_1.out 2016-04-02 21:48:12.942098498 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/uuid.out 2016-04-04 03:18:30.587631328 +0000
***************
*** 1,148 ****
! -- regression test for the uuid datatype
! -- creating test tables
! CREATE TABLE guid1
! (
! guid_field UUID,
! text_field TEXT DEFAULT(now())
! );
! CREATE TABLE guid2
! (
! guid_field UUID,
! text_field TEXT DEFAULT(now())
! );
! -- inserting invalid data tests
! -- too long
! INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111F');
! ERROR: invalid input syntax for uuid: "11111111-1111-1111-1111-111111111111F"
! LINE 1: INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-111...
! ^
! -- too short
! INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-1111-11111111111}');
! ERROR: invalid input syntax for uuid: "{11111111-1111-1111-1111-11111111111}"
! LINE 1: INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-11...
! ^
! -- valid data but invalid format
! INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-1111-111111111111');
! ERROR: invalid input syntax for uuid: "111-11111-1111-1111-1111-111111111111"
! LINE 1: INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-11...
! ^
! INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222 ');
! ERROR: invalid input syntax for uuid: "{22222222-2222-2222-2222-222222222222 "
! LINE 1: INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-22...
! ^
! -- invalid data
! INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G111-111111111111');
! ERROR: invalid input syntax for uuid: "11111111-1111-1111-G111-111111111111"
! LINE 1: INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G11...
! ^
! INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-1111-111111111111');
! ERROR: invalid input syntax for uuid: "11+11111-1111-1111-1111-111111111111"
! LINE 1: INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-111...
! ^
! --inserting three input formats
! INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
! INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}');
! INSERT INTO guid1(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e');
! -- retrieving the inserted data
! SELECT guid_field FROM guid1 ORDER BY guid_field;
! guid_field
! --------------------------------------
! 11111111-1111-1111-1111-111111111111
! 22222222-2222-2222-2222-222222222222
! 3f3e3c3b-3a30-3938-3736-353433a2313e
! (3 rows)
!
! -- ordering test
! SELECT guid_field FROM guid1 ORDER BY guid_field ASC;
! guid_field
! --------------------------------------
! 11111111-1111-1111-1111-111111111111
! 22222222-2222-2222-2222-222222222222
! 3f3e3c3b-3a30-3938-3736-353433a2313e
! (3 rows)
!
! SELECT guid_field FROM guid1 ORDER BY guid_field DESC;
! guid_field
! --------------------------------------
! 3f3e3c3b-3a30-3938-3736-353433a2313e
! 22222222-2222-2222-2222-222222222222
! 11111111-1111-1111-1111-111111111111
! (3 rows)
!
! -- = operator test
! SELECT COUNT(*) FROM guid1 WHERE guid_field = '3f3e3c3b-3a30-3938-3736-353433a2313e';
! count
! -------
! 1
! (1 row)
!
! -- <> operator test
! SELECT COUNT(*) FROM guid1 WHERE guid_field <> '11111111111111111111111111111111';
! count
! -------
! 2
! (1 row)
!
! -- < operator test
! SELECT COUNT(*) FROM guid1 WHERE guid_field < '22222222-2222-2222-2222-222222222222';
! count
! -------
! 1
! (1 row)
!
! -- <= operator test
! SELECT COUNT(*) FROM guid1 WHERE guid_field <= '22222222-2222-2222-2222-222222222222';
! count
! -------
! 2
! (1 row)
!
! -- > operator test
! SELECT COUNT(*) FROM guid1 WHERE guid_field > '22222222-2222-2222-2222-222222222222';
! count
! -------
! 1
! (1 row)
!
! -- >= operator test
! SELECT COUNT(*) FROM guid1 WHERE guid_field >= '22222222-2222-2222-2222-222222222222';
! count
! -------
! 2
! (1 row)
!
! -- btree and hash index creation test
! CREATE INDEX guid1_btree ON guid1 USING BTREE (guid_field);
! CREATE INDEX guid1_hash ON guid1 USING HASH (guid_field);
! -- unique index test
! CREATE UNIQUE INDEX guid1_unique_BTREE ON guid1 USING BTREE (guid_field);
! ERROR: Unique index of partitioned table must contain the hash/modulo distribution column.
! -- should fail
! INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
! -- check to see whether the new indexes are actually there
! SELECT count(*) FROM pg_class WHERE relkind='i' AND relname LIKE 'guid%';
! count
! -------
! 2
! (1 row)
!
! -- populating the test tables with additional records
! INSERT INTO guid1(guid_field) VALUES('44444444-4444-4444-4444-444444444444');
! INSERT INTO guid2(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
! INSERT INTO guid2(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}');
! INSERT INTO guid2(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e');
! -- join test
! SELECT COUNT(*) FROM guid1 g1 INNER JOIN guid2 g2 ON g1.guid_field = g2.guid_field;
! count
! -------
! 4
! (1 row)
!
! SELECT COUNT(*) FROM guid1 g1 LEFT JOIN guid2 g2 ON g1.guid_field = g2.guid_field WHERE g2.guid_field IS NULL;
! count
! -------
! 1
! (1 row)
!
! -- clean up
! DROP TABLE guid1, guid2 CASCADE;
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/enum.out 2016-04-02 21:48:12.915916576 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/enum.out 2016-04-04 03:18:30.613510445 +0000
***************
*** 1,604 ****
! --
! -- Enum tests
! --
! CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple');
! --
! -- Did it create the right number of rows?
! --
! SELECT COUNT(*) FROM pg_enum WHERE enumtypid = 'rainbow'::regtype;
! count
! -------
! 6
! (1 row)
!
! --
! -- I/O functions
! --
! SELECT 'red'::rainbow;
! rainbow
! ---------
! red
! (1 row)
!
! SELECT 'mauve'::rainbow;
! ERROR: invalid input value for enum rainbow: "mauve"
! LINE 1: SELECT 'mauve'::rainbow;
! ^
! --
! -- adding new values
! --
! CREATE TYPE planets AS ENUM ( 'venus', 'earth', 'mars' );
! SELECT enumlabel, enumsortorder
! FROM pg_enum
! WHERE enumtypid = 'planets'::regtype
! ORDER BY 2;
! enumlabel | enumsortorder
! -----------+---------------
! venus | 1
! earth | 2
! mars | 3
! (3 rows)
!
! ALTER TYPE planets ADD VALUE 'uranus';
! SELECT enumlabel, enumsortorder
! FROM pg_enum
! WHERE enumtypid = 'planets'::regtype
! ORDER BY 2;
! enumlabel | enumsortorder
! -----------+---------------
! venus | 1
! earth | 2
! mars | 3
! uranus | 4
! (4 rows)
!
! ALTER TYPE planets ADD VALUE 'mercury' BEFORE 'venus';
! ALTER TYPE planets ADD VALUE 'saturn' BEFORE 'uranus';
! ALTER TYPE planets ADD VALUE 'jupiter' AFTER 'mars';
! ALTER TYPE planets ADD VALUE 'neptune' AFTER 'uranus';
! SELECT enumlabel, enumsortorder
! FROM pg_enum
! WHERE enumtypid = 'planets'::regtype
! ORDER BY 2;
! enumlabel | enumsortorder
! -----------+---------------
! mercury | 0
! venus | 1
! earth | 2
! mars | 3
! jupiter | 3.25
! saturn | 3.5
! uranus | 4
! neptune | 5
! (8 rows)
!
! SELECT enumlabel, enumsortorder
! FROM pg_enum
! WHERE enumtypid = 'planets'::regtype
! ORDER BY enumlabel::planets;
! enumlabel | enumsortorder
! -----------+---------------
! mercury | 0
! venus | 1
! earth | 2
! mars | 3
! jupiter | 3.25
! saturn | 3.5
! uranus | 4
! neptune | 5
! (8 rows)
!
! -- errors for adding labels
! ALTER TYPE planets ADD VALUE
! 'plutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutopluto';
! ERROR: invalid enum label "plutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutopluto"
! DETAIL: Labels must be 63 characters or less.
! ALTER TYPE planets ADD VALUE 'pluto' AFTER 'zeus';
! ERROR: "zeus" is not an existing enum label
! -- if not exists tests
! -- existing value gives error
! ALTER TYPE planets ADD VALUE 'mercury';
! ERROR: enum label "mercury" already exists
! -- unless IF NOT EXISTS is specified
! ALTER TYPE planets ADD VALUE IF NOT EXISTS 'mercury';
! NOTICE: enum label "mercury" already exists, skipping
! -- should be neptune, not mercury
! SELECT enum_last(NULL::planets);
! enum_last
! -----------
! neptune
! (1 row)
!
! ALTER TYPE planets ADD VALUE IF NOT EXISTS 'pluto';
! -- should be pluto, i.e. the new value
! SELECT enum_last(NULL::planets);
! enum_last
! -----------
! pluto
! (1 row)
!
! --
! -- Test inserting so many values that we have to renumber
! --
! create type insenum as enum ('L1', 'L2');
! alter type insenum add value 'i1' before 'L2';
! alter type insenum add value 'i2' before 'L2';
! alter type insenum add value 'i3' before 'L2';
! alter type insenum add value 'i4' before 'L2';
! alter type insenum add value 'i5' before 'L2';
! alter type insenum add value 'i6' before 'L2';
! alter type insenum add value 'i7' before 'L2';
! alter type insenum add value 'i8' before 'L2';
! alter type insenum add value 'i9' before 'L2';
! alter type insenum add value 'i10' before 'L2';
! alter type insenum add value 'i11' before 'L2';
! alter type insenum add value 'i12' before 'L2';
! alter type insenum add value 'i13' before 'L2';
! alter type insenum add value 'i14' before 'L2';
! alter type insenum add value 'i15' before 'L2';
! alter type insenum add value 'i16' before 'L2';
! alter type insenum add value 'i17' before 'L2';
! alter type insenum add value 'i18' before 'L2';
! alter type insenum add value 'i19' before 'L2';
! alter type insenum add value 'i20' before 'L2';
! alter type insenum add value 'i21' before 'L2';
! alter type insenum add value 'i22' before 'L2';
! alter type insenum add value 'i23' before 'L2';
! alter type insenum add value 'i24' before 'L2';
! alter type insenum add value 'i25' before 'L2';
! alter type insenum add value 'i26' before 'L2';
! alter type insenum add value 'i27' before 'L2';
! alter type insenum add value 'i28' before 'L2';
! alter type insenum add value 'i29' before 'L2';
! alter type insenum add value 'i30' before 'L2';
! -- The exact values of enumsortorder will now depend on the local properties
! -- of float4, but in any reasonable implementation we should get at least
! -- 20 splits before having to renumber; so only hide values > 20.
! SELECT enumlabel,
! case when enumsortorder > 20 then null else enumsortorder end as so
! FROM pg_enum
! WHERE enumtypid = 'insenum'::regtype
! ORDER BY enumsortorder;
! enumlabel | so
! -----------+----
! L1 | 1
! i1 | 2
! i2 | 3
! i3 | 4
! i4 | 5
! i5 | 6
! i6 | 7
! i7 | 8
! i8 | 9
! i9 | 10
! i10 | 11
! i11 | 12
! i12 | 13
! i13 | 14
! i14 | 15
! i15 | 16
! i16 | 17
! i17 | 18
! i18 | 19
! i19 | 20
! i20 |
! i21 |
! i22 |
! i23 |
! i24 |
! i25 |
! i26 |
! i27 |
! i28 |
! i29 |
! i30 |
! L2 |
! (32 rows)
!
! --
! -- Basic table creation, row selection
! --
! CREATE TABLE enumtest (col rainbow) distribute by replication;
! INSERT INTO enumtest values ('red'), ('orange'), ('yellow'), ('green');
! COPY enumtest FROM stdin;
! SELECT * FROM enumtest ORDER BY col;
! col
! --------
! red
! orange
! yellow
! green
! blue
! purple
! (6 rows)
!
! --
! -- Operators, no index
! --
! SELECT * FROM enumtest WHERE col = 'orange';
! col
! --------
! orange
! (1 row)
!
! SELECT * FROM enumtest WHERE col <> 'orange' ORDER BY col;
! col
! --------
! red
! yellow
! green
! blue
! purple
! (5 rows)
!
! SELECT * FROM enumtest WHERE col > 'yellow' ORDER BY col;
! col
! --------
! green
! blue
! purple
! (3 rows)
!
! SELECT * FROM enumtest WHERE col >= 'yellow' ORDER BY col;
! col
! --------
! yellow
! green
! blue
! purple
! (4 rows)
!
! SELECT * FROM enumtest WHERE col < 'green' ORDER BY col;
! col
! --------
! red
! orange
! yellow
! (3 rows)
!
! SELECT * FROM enumtest WHERE col <= 'green' ORDER BY col;
! col
! --------
! red
! orange
! yellow
! green
! (4 rows)
!
! --
! -- Cast to/from text
! --
! SELECT 'red'::rainbow::text || 'hithere';
! ?column?
! ------------
! redhithere
! (1 row)
!
! SELECT 'red'::text::rainbow = 'red'::rainbow;
! ?column?
! ----------
! t
! (1 row)
!
! --
! -- Aggregates
! --
! SELECT min(col) FROM enumtest;
! min
! -----
! red
! (1 row)
!
! SELECT max(col) FROM enumtest;
! max
! --------
! purple
! (1 row)
!
! SELECT max(col) FROM enumtest WHERE col < 'green';
! max
! --------
! yellow
! (1 row)
!
! --
! -- Index tests, force use of index
! --
! SET enable_seqscan = off;
! SET enable_bitmapscan = off;
! --
! -- Btree index / opclass with the various operators
! --
! CREATE UNIQUE INDEX enumtest_btree ON enumtest USING btree (col);
! SELECT * FROM enumtest WHERE col = 'orange';
! col
! --------
! orange
! (1 row)
!
! SELECT * FROM enumtest WHERE col <> 'orange' ORDER BY col;
! col
! --------
! red
! yellow
! green
! blue
! purple
! (5 rows)
!
! SELECT * FROM enumtest WHERE col > 'yellow' ORDER BY col;
! col
! --------
! green
! blue
! purple
! (3 rows)
!
! SELECT * FROM enumtest WHERE col >= 'yellow' ORDER BY col;
! col
! --------
! yellow
! green
! blue
! purple
! (4 rows)
!
! SELECT * FROM enumtest WHERE col < 'green' ORDER BY col;
! col
! --------
! red
! orange
! yellow
! (3 rows)
!
! SELECT * FROM enumtest WHERE col <= 'green' ORDER BY col;
! col
! --------
! red
! orange
! yellow
! green
! (4 rows)
!
! SELECT min(col) FROM enumtest;
! min
! -----
! red
! (1 row)
!
! SELECT max(col) FROM enumtest;
! max
! --------
! purple
! (1 row)
!
! SELECT max(col) FROM enumtest WHERE col < 'green';
! max
! --------
! yellow
! (1 row)
!
! DROP INDEX enumtest_btree;
! --
! -- Hash index / opclass with the = operator
! --
! CREATE INDEX enumtest_hash ON enumtest USING hash (col);
! WARNING: hash indexes are not WAL-logged and their use is discouraged
! SELECT * FROM enumtest WHERE col = 'orange';
! col
! --------
! orange
! (1 row)
!
! DROP INDEX enumtest_hash;
! --
! -- End index tests
! --
! RESET enable_seqscan;
! RESET enable_bitmapscan;
! --
! -- Domains over enums
! --
! CREATE DOMAIN rgb AS rainbow CHECK (VALUE IN ('red', 'green', 'blue'));
! SELECT 'red'::rgb;
! rgb
! -----
! red
! (1 row)
!
! SELECT 'purple'::rgb;
! ERROR: value for domain rgb violates check constraint "rgb_check"
! SELECT 'purple'::rainbow::rgb;
! ERROR: value for domain rgb violates check constraint "rgb_check"
! DROP DOMAIN rgb;
! --
! -- Arrays
! --
! SELECT '{red,green,blue}'::rainbow[];
! rainbow
! ------------------
! {red,green,blue}
! (1 row)
!
! SELECT ('{red,green,blue}'::rainbow[])[2];
! rainbow
! ---------
! green
! (1 row)
!
! SELECT 'red' = ANY ('{red,green,blue}'::rainbow[]);
! ?column?
! ----------
! t
! (1 row)
!
! SELECT 'yellow' = ANY ('{red,green,blue}'::rainbow[]);
! ?column?
! ----------
! f
! (1 row)
!
! SELECT 'red' = ALL ('{red,green,blue}'::rainbow[]);
! ?column?
! ----------
! f
! (1 row)
!
! SELECT 'red' = ALL ('{red,red}'::rainbow[]);
! ?column?
! ----------
! t
! (1 row)
!
! --
! -- Support functions
! --
! SELECT enum_first(NULL::rainbow);
! enum_first
! ------------
! red
! (1 row)
!
! SELECT enum_last('green'::rainbow);
! enum_last
! -----------
! purple
! (1 row)
!
! SELECT enum_range(NULL::rainbow);
! enum_range
! ---------------------------------------
! {red,orange,yellow,green,blue,purple}
! (1 row)
!
! SELECT enum_range('orange'::rainbow, 'green'::rainbow);
! enum_range
! -----------------------
! {orange,yellow,green}
! (1 row)
!
! SELECT enum_range(NULL, 'green'::rainbow);
! enum_range
! ---------------------------
! {red,orange,yellow,green}
! (1 row)
!
! SELECT enum_range('orange'::rainbow, NULL);
! enum_range
! -----------------------------------
! {orange,yellow,green,blue,purple}
! (1 row)
!
! SELECT enum_range(NULL::rainbow, NULL);
! enum_range
! ---------------------------------------
! {red,orange,yellow,green,blue,purple}
! (1 row)
!
! --
! -- User functions, can't test perl/python etc here since may not be compiled.
! --
! CREATE FUNCTION echo_me(anyenum) RETURNS text AS $$
! BEGIN
! RETURN $1::text || 'omg';
! END
! $$ LANGUAGE plpgsql;
! SELECT echo_me('red'::rainbow);
! echo_me
! ---------
! redomg
! (1 row)
!
! --
! -- Concrete function should override generic one
! --
! CREATE FUNCTION echo_me(rainbow) RETURNS text AS $$
! BEGIN
! RETURN $1::text || 'wtf';
! END
! $$ LANGUAGE plpgsql;
! SELECT echo_me('red'::rainbow);
! echo_me
! ---------
! redwtf
! (1 row)
!
! --
! -- If we drop the original generic one, we don't have to qualify the type
! -- anymore, since there's only one match
! --
! DROP FUNCTION echo_me(anyenum);
! SELECT echo_me('red');
! echo_me
! ---------
! redwtf
! (1 row)
!
! DROP FUNCTION echo_me(rainbow);
! --
! -- RI triggers on enum types
! --
! CREATE TABLE enumtest_parent (id rainbow PRIMARY KEY);
! CREATE TABLE enumtest_child (parent rainbow REFERENCES enumtest_parent);
! INSERT INTO enumtest_parent VALUES ('red');
! INSERT INTO enumtest_child VALUES ('red');
! INSERT INTO enumtest_child VALUES ('blue'); -- fail
! ERROR: insert or update on table "enumtest_child" violates foreign key constraint "enumtest_child_parent_fkey"
! DETAIL: Key (parent)=(blue) is not present in table "enumtest_parent".
! DELETE FROM enumtest_parent; -- fail
! ERROR: update or delete on table "enumtest_parent" violates foreign key constraint "enumtest_child_parent_fkey" on table "enumtest_child"
! DETAIL: Key (id)=(red) is still referenced from table "enumtest_child".
! --
! -- cross-type RI should fail
! --
! CREATE TYPE bogus AS ENUM('good', 'bad', 'ugly');
! CREATE TABLE enumtest_bogus_child(parent bogus REFERENCES enumtest_parent);
! ERROR: foreign key constraint "enumtest_bogus_child_parent_fkey" cannot be implemented
! DETAIL: Key columns "parent" and "id" are of incompatible types: bogus and rainbow.
! DROP TYPE bogus;
! --
! -- check transactional behaviour of ALTER TYPE ... ADD VALUE
! --
! CREATE TYPE bogus AS ENUM('good');
! -- check that we can't add new values to existing enums in a transaction
! BEGIN;
! ALTER TYPE bogus ADD VALUE 'bad';
! ERROR: ALTER TYPE ... ADD cannot run inside a transaction block
! COMMIT;
! -- check that we recognize the case where the enum already existed but was
! -- modified in the current txn
! BEGIN;
! ALTER TYPE bogus RENAME TO bogon;
! ALTER TYPE bogon ADD VALUE 'bad';
! ERROR: ALTER TYPE ... ADD cannot run inside a transaction block
! ROLLBACK;
! DROP TYPE bogus;
! -- check that we *can* add new values to existing enums in a transaction,
! -- if the type is new as well
! BEGIN;
! CREATE TYPE bogus AS ENUM();
! ALTER TYPE bogus ADD VALUE 'good';
! ALTER TYPE bogus ADD VALUE 'ugly';
! ROLLBACK;
! --
! -- Cleanup
! --
! DROP TABLE enumtest_child;
! DROP TABLE enumtest_parent;
! DROP TABLE enumtest;
! DROP TYPE rainbow;
! --
! -- Verify properly cleaned up
! --
! SELECT COUNT(*) FROM pg_type WHERE typname = 'rainbow';
! count
! -------
! 0
! (1 row)
!
! SELECT * FROM pg_enum WHERE NOT EXISTS
! (SELECT 1 FROM pg_type WHERE pg_type.oid = enumtypid);
! enumtypid | enumsortorder | enumlabel
! -----------+---------------+-----------
! (0 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/money.out 2016-04-02 21:48:12.923499820 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/money.out 2016-04-04 03:18:30.645905866 +0000
***************
*** 1,250 ****
! --
! -- MONEY
! --
! CREATE TABLE money_data (m money);
! INSERT INTO money_data VALUES ('123');
! SELECT * FROM money_data;
! m
! ---------
! $123.00
! (1 row)
!
! SELECT m + '123' FROM money_data;
! ?column?
! ----------
! $246.00
! (1 row)
!
! SELECT m + '123.45' FROM money_data;
! ?column?
! ----------
! $246.45
! (1 row)
!
! SELECT m - '123.45' FROM money_data;
! ?column?
! ----------
! -$0.45
! (1 row)
!
! SELECT m * 2 FROM money_data;
! ?column?
! ----------
! $246.00
! (1 row)
!
! SELECT m / 2 FROM money_data;
! ?column?
! ----------
! $61.50
! (1 row)
!
! -- All true
! SELECT m = '$123.00' FROM money_data;
! ?column?
! ----------
! t
! (1 row)
!
! SELECT m != '$124.00' FROM money_data;
! ?column?
! ----------
! t
! (1 row)
!
! SELECT m <= '$123.00' FROM money_data;
! ?column?
! ----------
! t
! (1 row)
!
! SELECT m >= '$123.00' FROM money_data;
! ?column?
! ----------
! t
! (1 row)
!
! SELECT m < '$124.00' FROM money_data;
! ?column?
! ----------
! t
! (1 row)
!
! SELECT m > '$122.00' FROM money_data;
! ?column?
! ----------
! t
! (1 row)
!
! -- All false
! SELECT m = '$123.01' FROM money_data;
! ?column?
! ----------
! f
! (1 row)
!
! SELECT m != '$123.00' FROM money_data;
! ?column?
! ----------
! f
! (1 row)
!
! SELECT m <= '$122.99' FROM money_data;
! ?column?
! ----------
! f
! (1 row)
!
! SELECT m >= '$123.01' FROM money_data;
! ?column?
! ----------
! f
! (1 row)
!
! SELECT m > '$124.00' FROM money_data;
! ?column?
! ----------
! f
! (1 row)
!
! SELECT m < '$122.00' FROM money_data;
! ?column?
! ----------
! f
! (1 row)
!
! SELECT cashlarger(m, '$124.00') FROM money_data;
! cashlarger
! ------------
! $124.00
! (1 row)
!
! SELECT cashsmaller(m, '$124.00') FROM money_data;
! cashsmaller
! -------------
! $123.00
! (1 row)
!
! SELECT cash_words(m) FROM money_data;
! cash_words
! -------------------------------------------------
! One hundred twenty three dollars and zero cents
! (1 row)
!
! SELECT cash_words(m + '1.23') FROM money_data;
! cash_words
! --------------------------------------------------------
! One hundred twenty four dollars and twenty three cents
! (1 row)
!
! DELETE FROM money_data;
! INSERT INTO money_data VALUES ('$123.45');
! SELECT * FROM money_data;
! m
! ---------
! $123.45
! (1 row)
!
! DELETE FROM money_data;
! INSERT INTO money_data VALUES ('$123.451');
! SELECT * FROM money_data;
! m
! ---------
! $123.45
! (1 row)
!
! DELETE FROM money_data;
! INSERT INTO money_data VALUES ('$123.454');
! SELECT * FROM money_data;
! m
! ---------
! $123.45
! (1 row)
!
! DELETE FROM money_data;
! INSERT INTO money_data VALUES ('$123.455');
! SELECT * FROM money_data;
! m
! ---------
! $123.46
! (1 row)
!
! DELETE FROM money_data;
! INSERT INTO money_data VALUES ('$123.456');
! SELECT * FROM money_data;
! m
! ---------
! $123.46
! (1 row)
!
! DELETE FROM money_data;
! INSERT INTO money_data VALUES ('$123.459');
! SELECT * FROM money_data;
! m
! ---------
! $123.46
! (1 row)
!
! -- Cast int4/int8 to money
! SELECT 1234567890::money;
! money
! -------------------
! $1,234,567,890.00
! (1 row)
!
! SELECT 12345678901234567::money;
! money
! ----------------------------
! $12,345,678,901,234,567.00
! (1 row)
!
! SELECT 123456789012345678::money;
! ERROR: bigint out of range
! SELECT 9223372036854775807::money;
! ERROR: bigint out of range
! SELECT (-12345)::money;
! money
! -------------
! -$12,345.00
! (1 row)
!
! SELECT (-1234567890)::money;
! money
! --------------------
! -$1,234,567,890.00
! (1 row)
!
! SELECT (-12345678901234567)::money;
! money
! -----------------------------
! -$12,345,678,901,234,567.00
! (1 row)
!
! SELECT (-123456789012345678)::money;
! ERROR: bigint out of range
! SELECT (-9223372036854775808)::money;
! ERROR: bigint out of range
! SELECT 1234567890::int4::money;
! money
! -------------------
! $1,234,567,890.00
! (1 row)
!
! SELECT 12345678901234567::int8::money;
! money
! ----------------------------
! $12,345,678,901,234,567.00
! (1 row)
!
! SELECT (-1234567890)::int4::money;
! money
! --------------------
! -$1,234,567,890.00
! (1 row)
!
! SELECT (-12345678901234567)::int8::money;
! money
! -----------------------------
! -$12,345,678,901,234,567.00
! (1 row)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/rangetypes.out 2016-04-02 21:48:12.931487015 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/rangetypes.out 2016-04-04 03:18:30.666541867 +0000
***************
*** 1,1381 ****
! -- Tests for range data types.
! create type textrange as range (subtype=text, collation="C");
! --
! -- test input parser
! --
! -- negative tests; should fail
! select ''::textrange;
! ERROR: malformed range literal: ""
! LINE 1: select ''::textrange;
! ^
! DETAIL: Missing left parenthesis or bracket.
! select '-[a,z)'::textrange;
! ERROR: malformed range literal: "-[a,z)"
! LINE 1: select '-[a,z)'::textrange;
! ^
! DETAIL: Missing left parenthesis or bracket.
! select '[a,z) - '::textrange;
! ERROR: malformed range literal: "[a,z) - "
! LINE 1: select '[a,z) - '::textrange;
! ^
! DETAIL: Junk after right parenthesis or bracket.
! select '(",a)'::textrange;
! ERROR: malformed range literal: "(",a)"
! LINE 1: select '(",a)'::textrange;
! ^
! DETAIL: Unexpected end of input.
! select '(,,a)'::textrange;
! ERROR: malformed range literal: "(,,a)"
! LINE 1: select '(,,a)'::textrange;
! ^
! DETAIL: Too many commas.
! select '(),a)'::textrange;
! ERROR: malformed range literal: "(),a)"
! LINE 1: select '(),a)'::textrange;
! ^
! DETAIL: Missing comma after lower bound.
! select '(a,))'::textrange;
! ERROR: malformed range literal: "(a,))"
! LINE 1: select '(a,))'::textrange;
! ^
! DETAIL: Junk after right parenthesis or bracket.
! select '(],a)'::textrange;
! ERROR: malformed range literal: "(],a)"
! LINE 1: select '(],a)'::textrange;
! ^
! DETAIL: Missing comma after lower bound.
! select '(a,])'::textrange;
! ERROR: malformed range literal: "(a,])"
! LINE 1: select '(a,])'::textrange;
! ^
! DETAIL: Junk after right parenthesis or bracket.
! select '[z,a]'::textrange;
! ERROR: range lower bound must be less than or equal to range upper bound
! LINE 1: select '[z,a]'::textrange;
! ^
! -- should succeed
! select ' empty '::textrange;
! textrange
! -----------
! empty
! (1 row)
!
! select ' ( empty, empty ) '::textrange;
! textrange
! ----------------------
! (" empty"," empty ")
! (1 row)
!
! select ' ( " a " " a ", " z " " z " ) '::textrange;
! textrange
! --------------------------
! (" a a "," z z ")
! (1 row)
!
! select '(,z)'::textrange;
! textrange
! -----------
! (,z)
! (1 row)
!
! select '(a,)'::textrange;
! textrange
! -----------
! (a,)
! (1 row)
!
! select '[,z]'::textrange;
! textrange
! -----------
! (,z]
! (1 row)
!
! select '[a,]'::textrange;
! textrange
! -----------
! [a,)
! (1 row)
!
! select '(,)'::textrange;
! textrange
! -----------
! (,)
! (1 row)
!
! select '[ , ]'::textrange;
! textrange
! -----------
! [" "," "]
! (1 row)
!
! select '["",""]'::textrange;
! textrange
! -----------
! ["",""]
! (1 row)
!
! select '[",",","]'::textrange;
! textrange
! -----------
! [",",","]
! (1 row)
!
! select '["\\","\\"]'::textrange;
! textrange
! -------------
! ["\\","\\"]
! (1 row)
!
! select '(\\,a)'::textrange;
! textrange
! -----------
! ("\\",a)
! (1 row)
!
! select '((,z)'::textrange;
! textrange
! -----------
! ("(",z)
! (1 row)
!
! select '([,z)'::textrange;
! textrange
! -----------
! ("[",z)
! (1 row)
!
! select '(!,()'::textrange;
! textrange
! -----------
! (!,"(")
! (1 row)
!
! select '(!,[)'::textrange;
! textrange
! -----------
! (!,"[")
! (1 row)
!
! select '[a,a]'::textrange;
! textrange
! -----------
! [a,a]
! (1 row)
!
! -- these are allowed but normalize to empty:
! select '[a,a)'::textrange;
! textrange
! -----------
! empty
! (1 row)
!
! select '(a,a]'::textrange;
! textrange
! -----------
! empty
! (1 row)
!
! select '(a,a)'::textrange;
! textrange
! -----------
! empty
! (1 row)
!
! --
! -- create some test data and test the operators
! --
! CREATE TABLE numrange_test (nr NUMRANGE);
! create index numrange_test_btree on numrange_test(nr);
! INSERT INTO numrange_test VALUES('[,)');
! INSERT INTO numrange_test VALUES('[3,]');
! INSERT INTO numrange_test VALUES('[, 5)');
! INSERT INTO numrange_test VALUES(numrange(1.1, 2.2));
! INSERT INTO numrange_test VALUES('empty');
! INSERT INTO numrange_test VALUES(numrange(1.7, 1.7, '[]'));
! SELECT nr, isempty(nr), lower(nr), upper(nr) FROM numrange_test ORDER BY nr;
! nr | isempty | lower | upper
! -----------+---------+-------+-------
! empty | t | |
! (,5) | f | | 5
! (,) | f | |
! [1.1,2.2) | f | 1.1 | 2.2
! [1.7,1.7] | f | 1.7 | 1.7
! [3,) | f | 3 |
! (6 rows)
!
! SELECT nr, lower_inc(nr), lower_inf(nr), upper_inc(nr), upper_inf(nr) FROM numrange_test ORDER BY nr;
! nr | lower_inc | lower_inf | upper_inc | upper_inf
! -----------+-----------+-----------+-----------+-----------
! empty | f | f | f | f
! (,5) | f | t | f | f
! (,) | f | t | f | t
! [1.1,2.2) | t | f | f | f
! [1.7,1.7] | t | f | t | f
! [3,) | t | f | f | t
! (6 rows)
!
! SELECT * FROM numrange_test WHERE range_contains(nr, numrange(1.9,1.91)) ORDER BY nr;
! nr
! -----------
! (,5)
! (,)
! [1.1,2.2)
! (3 rows)
!
! SELECT * FROM numrange_test WHERE nr @> numrange(1.0,10000.1) ORDER BY nr;
! nr
! -----
! (,)
! (1 row)
!
! SELECT * FROM numrange_test WHERE range_contained_by(numrange(-1e7,-10000.1), nr) ORDER BY nr;
! nr
! ------
! (,5)
! (,)
! (2 rows)
!
! SELECT * FROM numrange_test WHERE 1.9 <@ nr ORDER BY nr;
! nr
! -----------
! (,5)
! (,)
! [1.1,2.2)
! (3 rows)
!
! select * from numrange_test where nr = 'empty' ORDER BY nr;
! nr
! -------
! empty
! (1 row)
!
! select * from numrange_test where nr = '(1.1, 2.2)' ORDER BY nr;
! nr
! ----
! (0 rows)
!
! select * from numrange_test where nr = '[1.1, 2.2)' ORDER BY nr;
! nr
! -----------
! [1.1,2.2)
! (1 row)
!
! select * from numrange_test where nr < 'empty' ORDER BY nr;
! nr
! ----
! (0 rows)
!
! select * from numrange_test where nr < numrange(-1000.0, -1000.0,'[]') ORDER BY nr;
! nr
! -------
! empty
! (,5)
! (,)
! (3 rows)
!
! select * from numrange_test where nr < numrange(0.0, 1.0,'[]') ORDER BY nr;
! nr
! -------
! empty
! (,5)
! (,)
! (3 rows)
!
! select * from numrange_test where nr < numrange(1000.0, 1001.0,'[]') ORDER BY nr;
! nr
! -----------
! empty
! (,5)
! (,)
! [1.1,2.2)
! [1.7,1.7]
! [3,)
! (6 rows)
!
! select * from numrange_test where nr <= 'empty' ORDER BY nr;
! nr
! -------
! empty
! (1 row)
!
! select * from numrange_test where nr >= 'empty' ORDER BY nr;
! nr
! -----------
! empty
! (,5)
! (,)
! [1.1,2.2)
! [1.7,1.7]
! [3,)
! (6 rows)
!
! select * from numrange_test where nr > 'empty' ORDER BY nr;
! nr
! -----------
! (,5)
! (,)
! [1.1,2.2)
! [1.7,1.7]
! [3,)
! (5 rows)
!
! select * from numrange_test where nr > numrange(-1001.0, -1000.0,'[]') ORDER BY nr;
! nr
! -----------
! [1.1,2.2)
! [1.7,1.7]
! [3,)
! (3 rows)
!
! select * from numrange_test where nr > numrange(0.0, 1.0,'[]') ORDER BY nr;
! nr
! -----------
! [1.1,2.2)
! [1.7,1.7]
! [3,)
! (3 rows)
!
! select * from numrange_test where nr > numrange(1000.0, 1000.0,'[]') ORDER BY nr;
! nr
! ----
! (0 rows)
!
! select numrange(2.0, 1.0);
! ERROR: range lower bound must be less than or equal to range upper bound
! select numrange(2.0, 3.0) -|- numrange(3.0, 4.0);
! ?column?
! ----------
! t
! (1 row)
!
! select range_adjacent(numrange(2.0, 3.0), numrange(3.1, 4.0));
! range_adjacent
! ----------------
! f
! (1 row)
!
! select range_adjacent(numrange(2.0, 3.0), numrange(3.1, null));
! range_adjacent
! ----------------
! f
! (1 row)
!
! select numrange(2.0, 3.0, '[]') -|- numrange(3.0, 4.0, '()');
! ?column?
! ----------
! t
! (1 row)
!
! select numrange(1.0, 2.0) -|- numrange(2.0, 3.0,'[]');
! ?column?
! ----------
! t
! (1 row)
!
! select range_adjacent(numrange(2.0, 3.0, '(]'), numrange(1.0, 2.0, '(]'));
! range_adjacent
! ----------------
! t
! (1 row)
!
! select numrange(1.1, 3.3) <@ numrange(0.1,10.1);
! ?column?
! ----------
! t
! (1 row)
!
! select numrange(0.1, 10.1) <@ numrange(1.1,3.3);
! ?column?
! ----------
! f
! (1 row)
!
! select numrange(1.1, 2.2) - numrange(2.0, 3.0);
! ?column?
! -----------
! [1.1,2.0)
! (1 row)
!
! select numrange(1.1, 2.2) - numrange(2.2, 3.0);
! ?column?
! -----------
! [1.1,2.2)
! (1 row)
!
! select numrange(1.1, 2.2,'[]') - numrange(2.0, 3.0);
! ?column?
! -----------
! [1.1,2.0)
! (1 row)
!
! select range_minus(numrange(10.1,12.2,'[]'), numrange(110.0,120.2,'(]'));
! range_minus
! -------------
! [10.1,12.2]
! (1 row)
!
! select range_minus(numrange(10.1,12.2,'[]'), numrange(0.0,120.2,'(]'));
! range_minus
! -------------
! empty
! (1 row)
!
! select numrange(4.5, 5.5, '[]') && numrange(5.5, 6.5);
! ?column?
! ----------
! t
! (1 row)
!
! select numrange(1.0, 2.0) << numrange(3.0, 4.0);
! ?column?
! ----------
! t
! (1 row)
!
! select numrange(1.0, 3.0,'[]') << numrange(3.0, 4.0,'[]');
! ?column?
! ----------
! f
! (1 row)
!
! select numrange(1.0, 3.0,'()') << numrange(3.0, 4.0,'()');
! ?column?
! ----------
! t
! (1 row)
!
! select numrange(1.0, 2.0) >> numrange(3.0, 4.0);
! ?column?
! ----------
! f
! (1 row)
!
! select numrange(3.0, 70.0) &< numrange(6.6, 100.0);
! ?column?
! ----------
! t
! (1 row)
!
! select numrange(1.1, 2.2) < numrange(1.0, 200.2);
! ?column?
! ----------
! f
! (1 row)
!
! select numrange(1.1, 2.2) < numrange(1.1, 1.2);
! ?column?
! ----------
! f
! (1 row)
!
! select numrange(1.0, 2.0) + numrange(2.0, 3.0);
! ?column?
! -----------
! [1.0,3.0)
! (1 row)
!
! select numrange(1.0, 2.0) + numrange(1.5, 3.0);
! ?column?
! -----------
! [1.0,3.0)
! (1 row)
!
! select numrange(1.0, 2.0) + numrange(2.5, 3.0); -- should fail
! ERROR: result of range union would not be contiguous
! select range_merge(numrange(1.0, 2.0), numrange(2.0, 3.0));
! range_merge
! -------------
! [1.0,3.0)
! (1 row)
!
! select range_merge(numrange(1.0, 2.0), numrange(1.5, 3.0));
! range_merge
! -------------
! [1.0,3.0)
! (1 row)
!
! select range_merge(numrange(1.0, 2.0), numrange(2.5, 3.0)); -- shouldn't fail
! range_merge
! -------------
! [1.0,3.0)
! (1 row)
!
! select numrange(1.0, 2.0) * numrange(2.0, 3.0);
! ?column?
! ----------
! empty
! (1 row)
!
! select numrange(1.0, 2.0) * numrange(1.5, 3.0);
! ?column?
! -----------
! [1.5,2.0)
! (1 row)
!
! select numrange(1.0, 2.0) * numrange(2.5, 3.0);
! ?column?
! ----------
! empty
! (1 row)
!
! create table numrange_test2(nr numrange);
! create index numrange_test2_hash_idx on numrange_test2 (nr);
! INSERT INTO numrange_test2 VALUES('[, 5)');
! INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2));
! INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2));
! INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2,'()'));
! INSERT INTO numrange_test2 VALUES('empty');
! select * from numrange_test2 where nr = 'empty'::numrange;
! nr
! -------
! empty
! (1 row)
!
! select * from numrange_test2 where nr = numrange(1.1, 2.2) ORDER BY nr;
! nr
! -----------
! [1.1,2.2)
! [1.1,2.2)
! (2 rows)
!
! select * from numrange_test2 where nr = numrange(1.1, 2.3) ORDER BY nr;
! nr
! ----
! (0 rows)
!
! set enable_nestloop=t;
! set enable_hashjoin=f;
! set enable_mergejoin=f;
! select * from numrange_test natural join numrange_test2 order by nr;
! nr
! -----------
! empty
! (,5)
! [1.1,2.2)
! [1.1,2.2)
! (4 rows)
!
! set enable_nestloop=f;
! set enable_hashjoin=t;
! set enable_mergejoin=f;
! select * from numrange_test natural join numrange_test2 order by nr;
! nr
! -----------
! empty
! (,5)
! [1.1,2.2)
! [1.1,2.2)
! (4 rows)
!
! set enable_nestloop=f;
! set enable_hashjoin=f;
! set enable_mergejoin=t;
! select * from numrange_test natural join numrange_test2 order by nr;
! nr
! -----------
! empty
! (,5)
! [1.1,2.2)
! [1.1,2.2)
! (4 rows)
!
! set enable_nestloop to default;
! set enable_hashjoin to default;
! set enable_mergejoin to default;
! DROP TABLE numrange_test;
! DROP TABLE numrange_test2;
! -- test canonical form for int4range
! select int4range(1, 10, '[]');
! int4range
! -----------
! [1,11)
! (1 row)
!
! select int4range(1, 10, '[)');
! int4range
! -----------
! [1,10)
! (1 row)
!
! select int4range(1, 10, '(]');
! int4range
! -----------
! [2,11)
! (1 row)
!
! select int4range(1, 10, '()');
! int4range
! -----------
! [2,10)
! (1 row)
!
! select int4range(1, 2, '()');
! int4range
! -----------
! empty
! (1 row)
!
! -- test canonical form for daterange
! select daterange('2000-01-10'::date, '2000-01-20'::date, '[]');
! daterange
! -------------------------
! [01-10-2000,01-21-2000)
! (1 row)
!
! select daterange('2000-01-10'::date, '2000-01-20'::date, '[)');
! daterange
! -------------------------
! [01-10-2000,01-20-2000)
! (1 row)
!
! select daterange('2000-01-10'::date, '2000-01-20'::date, '(]');
! daterange
! -------------------------
! [01-11-2000,01-21-2000)
! (1 row)
!
! select daterange('2000-01-10'::date, '2000-01-20'::date, '()');
! daterange
! -------------------------
! [01-11-2000,01-20-2000)
! (1 row)
!
! select daterange('2000-01-10'::date, '2000-01-11'::date, '()');
! daterange
! -----------
! empty
! (1 row)
!
! select daterange('2000-01-10'::date, '2000-01-11'::date, '(]');
! daterange
! -------------------------
! [01-11-2000,01-12-2000)
! (1 row)
!
! -- test GiST index that's been built incrementally
! create table test_range_gist(ir int4range);
! create index test_range_gist_idx on test_range_gist using gist (ir);
! insert into test_range_gist select int4range(g, g+10) from generate_series(1,2000) g;
! insert into test_range_gist select 'empty'::int4range from generate_series(1,500) g;
! insert into test_range_gist select int4range(g, g+10000) from generate_series(1,1000) g;
! insert into test_range_gist select 'empty'::int4range from generate_series(1,500) g;
! insert into test_range_gist select int4range(NULL,g*10,'(]') from generate_series(1,100) g;
! insert into test_range_gist select int4range(g*10,NULL,'(]') from generate_series(1,100) g;
! insert into test_range_gist select int4range(g, g+10) from generate_series(1,2000) g;
! -- first, verify non-indexed results
! SET enable_seqscan = t;
! SET enable_indexscan = f;
! SET enable_bitmapscan = f;
! select count(*) from test_range_gist where ir @> 'empty'::int4range;
! count
! -------
! 6200
! (1 row)
!
! select count(*) from test_range_gist where ir = int4range(10,20);
! count
! -------
! 2
! (1 row)
!
! select count(*) from test_range_gist where ir @> 10;
! count
! -------
! 130
! (1 row)
!
! select count(*) from test_range_gist where ir @> int4range(10,20);
! count
! -------
! 111
! (1 row)
!
! select count(*) from test_range_gist where ir && int4range(10,20);
! count
! -------
! 158
! (1 row)
!
! select count(*) from test_range_gist where ir <@ int4range(10,50);
! count
! -------
! 1062
! (1 row)
!
! select count(*) from test_range_gist where ir << int4range(100,500);
! count
! -------
! 189
! (1 row)
!
! select count(*) from test_range_gist where ir >> int4range(100,500);
! count
! -------
! 3554
! (1 row)
!
! select count(*) from test_range_gist where ir &< int4range(100,500);
! count
! -------
! 1029
! (1 row)
!
! select count(*) from test_range_gist where ir &> int4range(100,500);
! count
! -------
! 4794
! (1 row)
!
! select count(*) from test_range_gist where ir -|- int4range(100,500);
! count
! -------
! 5
! (1 row)
!
! -- now check same queries using index
! SET enable_seqscan = f;
! SET enable_indexscan = t;
! SET enable_bitmapscan = f;
! select count(*) from test_range_gist where ir @> 'empty'::int4range;
! count
! -------
! 6200
! (1 row)
!
! select count(*) from test_range_gist where ir = int4range(10,20);
! count
! -------
! 2
! (1 row)
!
! select count(*) from test_range_gist where ir @> 10;
! count
! -------
! 130
! (1 row)
!
! select count(*) from test_range_gist where ir @> int4range(10,20);
! count
! -------
! 111
! (1 row)
!
! select count(*) from test_range_gist where ir && int4range(10,20);
! count
! -------
! 158
! (1 row)
!
! select count(*) from test_range_gist where ir <@ int4range(10,50);
! count
! -------
! 1062
! (1 row)
!
! select count(*) from test_range_gist where ir << int4range(100,500);
! count
! -------
! 189
! (1 row)
!
! select count(*) from test_range_gist where ir >> int4range(100,500);
! count
! -------
! 3554
! (1 row)
!
! select count(*) from test_range_gist where ir &< int4range(100,500);
! count
! -------
! 1029
! (1 row)
!
! select count(*) from test_range_gist where ir &> int4range(100,500);
! count
! -------
! 4794
! (1 row)
!
! select count(*) from test_range_gist where ir -|- int4range(100,500);
! count
! -------
! 5
! (1 row)
!
! -- now check same queries using a bulk-loaded index
! drop index test_range_gist_idx;
! create index test_range_gist_idx on test_range_gist using gist (ir);
! select count(*) from test_range_gist where ir @> 'empty'::int4range;
! count
! -------
! 6200
! (1 row)
!
! select count(*) from test_range_gist where ir = int4range(10,20);
! count
! -------
! 2
! (1 row)
!
! select count(*) from test_range_gist where ir @> 10;
! count
! -------
! 130
! (1 row)
!
! select count(*) from test_range_gist where ir @> int4range(10,20);
! count
! -------
! 111
! (1 row)
!
! select count(*) from test_range_gist where ir && int4range(10,20);
! count
! -------
! 158
! (1 row)
!
! select count(*) from test_range_gist where ir <@ int4range(10,50);
! count
! -------
! 1062
! (1 row)
!
! select count(*) from test_range_gist where ir << int4range(100,500);
! count
! -------
! 189
! (1 row)
!
! select count(*) from test_range_gist where ir >> int4range(100,500);
! count
! -------
! 3554
! (1 row)
!
! select count(*) from test_range_gist where ir &< int4range(100,500);
! count
! -------
! 1029
! (1 row)
!
! select count(*) from test_range_gist where ir &> int4range(100,500);
! count
! -------
! 4794
! (1 row)
!
! select count(*) from test_range_gist where ir -|- int4range(100,500);
! count
! -------
! 5
! (1 row)
!
! -- test SP-GiST index that's been built incrementally
! create table test_range_spgist(ir int4range);
! create index test_range_spgist_idx on test_range_spgist using spgist (ir);
! insert into test_range_spgist select int4range(g, g+10) from generate_series(1,2000) g;
! insert into test_range_spgist select 'empty'::int4range from generate_series(1,500) g;
! insert into test_range_spgist select int4range(g, g+10000) from generate_series(1,1000) g;
! insert into test_range_spgist select 'empty'::int4range from generate_series(1,500) g;
! insert into test_range_spgist select int4range(NULL,g*10,'(]') from generate_series(1,100) g;
! insert into test_range_spgist select int4range(g*10,NULL,'(]') from generate_series(1,100) g;
! insert into test_range_spgist select int4range(g, g+10) from generate_series(1,2000) g;
! -- first, verify non-indexed results
! SET enable_seqscan = t;
! SET enable_indexscan = f;
! SET enable_bitmapscan = f;
! select count(*) from test_range_spgist where ir @> 'empty'::int4range;
! count
! -------
! 6200
! (1 row)
!
! select count(*) from test_range_spgist where ir = int4range(10,20);
! count
! -------
! 2
! (1 row)
!
! select count(*) from test_range_spgist where ir @> 10;
! count
! -------
! 130
! (1 row)
!
! select count(*) from test_range_spgist where ir @> int4range(10,20);
! count
! -------
! 111
! (1 row)
!
! select count(*) from test_range_spgist where ir && int4range(10,20);
! count
! -------
! 158
! (1 row)
!
! select count(*) from test_range_spgist where ir <@ int4range(10,50);
! count
! -------
! 1062
! (1 row)
!
! select count(*) from test_range_spgist where ir << int4range(100,500);
! count
! -------
! 189
! (1 row)
!
! select count(*) from test_range_spgist where ir >> int4range(100,500);
! count
! -------
! 3554
! (1 row)
!
! select count(*) from test_range_spgist where ir &< int4range(100,500);
! count
! -------
! 1029
! (1 row)
!
! select count(*) from test_range_spgist where ir &> int4range(100,500);
! count
! -------
! 4794
! (1 row)
!
! select count(*) from test_range_spgist where ir -|- int4range(100,500);
! count
! -------
! 5
! (1 row)
!
! -- now check same queries using index
! SET enable_seqscan = f;
! SET enable_indexscan = t;
! SET enable_bitmapscan = f;
! select count(*) from test_range_spgist where ir @> 'empty'::int4range;
! count
! -------
! 6200
! (1 row)
!
! select count(*) from test_range_spgist where ir = int4range(10,20);
! count
! -------
! 2
! (1 row)
!
! select count(*) from test_range_spgist where ir @> 10;
! count
! -------
! 130
! (1 row)
!
! select count(*) from test_range_spgist where ir @> int4range(10,20);
! count
! -------
! 111
! (1 row)
!
! select count(*) from test_range_spgist where ir && int4range(10,20);
! count
! -------
! 158
! (1 row)
!
! select count(*) from test_range_spgist where ir <@ int4range(10,50);
! count
! -------
! 1062
! (1 row)
!
! select count(*) from test_range_spgist where ir << int4range(100,500);
! count
! -------
! 189
! (1 row)
!
! select count(*) from test_range_spgist where ir >> int4range(100,500);
! count
! -------
! 3554
! (1 row)
!
! select count(*) from test_range_spgist where ir &< int4range(100,500);
! count
! -------
! 1029
! (1 row)
!
! select count(*) from test_range_spgist where ir &> int4range(100,500);
! count
! -------
! 4794
! (1 row)
!
! select count(*) from test_range_spgist where ir -|- int4range(100,500);
! count
! -------
! 5
! (1 row)
!
! -- now check same queries using a bulk-loaded index
! drop index test_range_spgist_idx;
! create index test_range_spgist_idx on test_range_spgist using spgist (ir);
! select count(*) from test_range_spgist where ir @> 'empty'::int4range;
! count
! -------
! 6200
! (1 row)
!
! select count(*) from test_range_spgist where ir = int4range(10,20);
! count
! -------
! 2
! (1 row)
!
! select count(*) from test_range_spgist where ir @> 10;
! count
! -------
! 130
! (1 row)
!
! select count(*) from test_range_spgist where ir @> int4range(10,20);
! count
! -------
! 111
! (1 row)
!
! select count(*) from test_range_spgist where ir && int4range(10,20);
! count
! -------
! 158
! (1 row)
!
! select count(*) from test_range_spgist where ir <@ int4range(10,50);
! count
! -------
! 1062
! (1 row)
!
! select count(*) from test_range_spgist where ir << int4range(100,500);
! count
! -------
! 189
! (1 row)
!
! select count(*) from test_range_spgist where ir >> int4range(100,500);
! count
! -------
! 3554
! (1 row)
!
! select count(*) from test_range_spgist where ir &< int4range(100,500);
! count
! -------
! 1029
! (1 row)
!
! select count(*) from test_range_spgist where ir &> int4range(100,500);
! count
! -------
! 4794
! (1 row)
!
! select count(*) from test_range_spgist where ir -|- int4range(100,500);
! count
! -------
! 5
! (1 row)
!
! -- test index-only scans
! explain (costs off)
! select ir from test_range_spgist where ir -|- int4range(10,20) order by ir;
! QUERY PLAN
! ------------------------------------------------------------------------------
! Remote Subquery Scan on all (datanode_1,datanode_2)
! -> Sort
! Sort Key: ir
! -> Index Only Scan using test_range_spgist_idx on test_range_spgist
! Index Cond: (ir -|- '[10,20)'::int4range)
! (5 rows)
!
! select ir from test_range_spgist where ir -|- int4range(10,20) order by ir;
! ir
! ------------
! [20,30)
! [20,30)
! [20,10020)
! (3 rows)
!
! RESET enable_seqscan;
! RESET enable_indexscan;
! RESET enable_bitmapscan;
! -- test elem <@ range operator
! create table test_range_elem(i int4);
! create index test_range_elem_idx on test_range_elem (i);
! insert into test_range_elem select i from generate_series(1,100) i;
! select count(*) from test_range_elem where i <@ int4range(10,50);
! count
! -------
! 40
! (1 row)
!
! drop table test_range_elem;
! --
! -- Btree_gist is not included by default, so to test exclusion
! -- constraints with range types, use singleton int ranges for the "="
! -- portion of the constraint.
! --
! create table test_range_excl(
! room int4range,
! speaker int4range,
! during tsrange,
! exclude using gist (room with =, during with &&),
! exclude using gist (speaker with =, during with &&)
! );
! insert into test_range_excl
! values(int4range(123, 123, '[]'), int4range(1, 1, '[]'), '[2010-01-02 10:00, 2010-01-02 11:00)');
! insert into test_range_excl
! values(int4range(123, 123, '[]'), int4range(2, 2, '[]'), '[2010-01-02 11:00, 2010-01-02 12:00)');
! insert into test_range_excl
! values(int4range(123, 123, '[]'), int4range(3, 3, '[]'), '[2010-01-02 10:10, 2010-01-02 11:00)');
! ERROR: conflicting key value violates exclusion constraint "test_range_excl_room_during_excl"
! DETAIL: Key (room, during)=([123,124), ["Sat Jan 02 10:10:00 2010","Sat Jan 02 11:00:00 2010")) conflicts with existing key (room, during)=([123,124), ["Sat Jan 02 10:00:00 2010","Sat Jan 02 11:00:00 2010")).
! insert into test_range_excl
! values(int4range(124, 124, '[]'), int4range(3, 3, '[]'), '[2010-01-02 10:10, 2010-01-02 11:10)');
! insert into test_range_excl
! values(int4range(125, 125, '[]'), int4range(1, 1, '[]'), '[2010-01-02 10:10, 2010-01-02 11:00)');
! ERROR: conflicting key value violates exclusion constraint "test_range_excl_speaker_during_excl"
! DETAIL: Key (speaker, during)=([1,2), ["Sat Jan 02 10:10:00 2010","Sat Jan 02 11:00:00 2010")) conflicts with existing key (speaker, during)=([1,2), ["Sat Jan 02 10:00:00 2010","Sat Jan 02 11:00:00 2010")).
! -- test bigint ranges
! select int8range(10000000000::int8, 20000000000::int8,'(]');
! int8range
! ---------------------------
! [10000000001,20000000001)
! (1 row)
!
! -- test tstz ranges
! set timezone to '-08';
! select '[2010-01-01 01:00:00 -05, 2010-01-01 02:00:00 -08)'::tstzrange;
! tstzrange
! -----------------------------------------------------------------
! ["Thu Dec 31 22:00:00 2009 -08","Fri Jan 01 02:00:00 2010 -08")
! (1 row)
!
! -- should fail
! select '[2010-01-01 01:00:00 -08, 2010-01-01 02:00:00 -05)'::tstzrange;
! ERROR: range lower bound must be less than or equal to range upper bound
! LINE 1: select '[2010-01-01 01:00:00 -08, 2010-01-01 02:00:00 -05)':...
! ^
! set timezone to default;
! --
! -- Test user-defined range of floats
! --
! --should fail
! create type float8range as range (subtype=float8, subtype_diff=float4mi);
! ERROR: function float4mi(double precision, double precision) does not exist
! --should succeed
! create type float8range as range (subtype=float8, subtype_diff=float8mi);
! select '[123.001, 5.e9)'::float8range @> 888.882::float8;
! ?column?
! ----------
! t
! (1 row)
!
! create table float8range_test(f8r float8range, i int);
! insert into float8range_test values(float8range(-100.00007, '1.111113e9'), 42);
! select * from float8range_test;
! f8r | i
! -------------------------+----
! [-100.00007,1111113000) | 42
! (1 row)
!
! drop table float8range_test;
! --
! -- Test range types over domains
! --
! create domain mydomain as int4;
! create type mydomainrange as range(subtype=mydomain);
! select '[4,50)'::mydomainrange @> 7::mydomain;
! ?column?
! ----------
! t
! (1 row)
!
! drop domain mydomain; -- fail
! ERROR: cannot drop type mydomain because other objects depend on it
! DETAIL: type mydomainrange depends on type mydomain
! HINT: Use DROP ... CASCADE to drop the dependent objects too.
! drop domain mydomain cascade;
! NOTICE: drop cascades to type mydomainrange
! --
! -- Test domains over range types
! --
! create domain restrictedrange as int4range check (upper(value) < 10);
! select '[4,5)'::restrictedrange @> 7;
! ?column?
! ----------
! f
! (1 row)
!
! select '[4,50)'::restrictedrange @> 7; -- should fail
! ERROR: value for domain restrictedrange violates check constraint "restrictedrange_check"
! drop domain restrictedrange;
! --
! -- Test multiple range types over the same subtype
! --
! create type textrange1 as range(subtype=text, collation="C");
! create type textrange2 as range(subtype=text, collation="C");
! select textrange1('a','Z') @> 'b'::text;
! ERROR: range lower bound must be less than or equal to range upper bound
! select textrange2('a','z') @> 'b'::text;
! ?column?
! ----------
! t
! (1 row)
!
! drop type textrange1;
! drop type textrange2;
! --
! -- Test polymorphic type system
! --
! create function anyarray_anyrange_func(a anyarray, r anyrange)
! returns anyelement as 'select $1[1] + lower($2);' language sql;
! select anyarray_anyrange_func(ARRAY[1,2], int4range(10,20));
! anyarray_anyrange_func
! ------------------------
! 11
! (1 row)
!
! -- should fail
! select anyarray_anyrange_func(ARRAY[1,2], numrange(10,20));
! ERROR: function anyarray_anyrange_func(integer[], numrange) does not exist
! LINE 1: select anyarray_anyrange_func(ARRAY[1,2], numrange(10,20));
! ^
! HINT: No function matches the given name and argument types. You might need to add explicit type casts.
! drop function anyarray_anyrange_func(anyarray, anyrange);
! -- should fail
! create function bogus_func(anyelement)
! returns anyrange as 'select int4range(1,10)' language sql;
! ERROR: cannot determine result data type
! DETAIL: A function returning "anyrange" must have at least one "anyrange" argument.
! -- should fail
! create function bogus_func(int)
! returns anyrange as 'select int4range(1,10)' language sql;
! ERROR: cannot determine result data type
! DETAIL: A function returning a polymorphic type must have at least one polymorphic argument.
! create function range_add_bounds(anyrange)
! returns anyelement as 'select lower($1) + upper($1)' language sql;
! select range_add_bounds(int4range(1, 17));
! range_add_bounds
! ------------------
! 18
! (1 row)
!
! select range_add_bounds(numrange(1.0001, 123.123));
! range_add_bounds
! ------------------
! 124.1231
! (1 row)
!
! create function rangetypes_sql(q anyrange, b anyarray, out c anyelement)
! as $$ select upper($1) + $2[1] $$
! language sql;
! select rangetypes_sql(int4range(1,10), ARRAY[2,20]);
! rangetypes_sql
! ----------------
! 12
! (1 row)
!
! select rangetypes_sql(numrange(1,10), ARRAY[2,20]); -- match failure
! ERROR: function rangetypes_sql(numrange, integer[]) does not exist
! LINE 1: select rangetypes_sql(numrange(1,10), ARRAY[2,20]);
! ^
! HINT: No function matches the given name and argument types. You might need to add explicit type casts.
! --
! -- Arrays of ranges
! --
! select ARRAY[numrange(1.1, 1.2), numrange(12.3, 155.5)];
! array
! ------------------------------
! {"[1.1,1.2)","[12.3,155.5)"}
! (1 row)
!
! create table i8r_array (f1 int, f2 int8range[]);
! insert into i8r_array values (42, array[int8range(1,10), int8range(2,20)]);
! select * from i8r_array;
! f1 | f2
! ----+---------------------
! 42 | {"[1,10)","[2,20)"}
! (1 row)
!
! drop table i8r_array;
! --
! -- Ranges of arrays
! --
! create type arrayrange as range (subtype=int4[]);
! select arrayrange(ARRAY[1,2], ARRAY[2,1]);
! arrayrange
! -------------------
! ["{1,2}","{2,1}")
! (1 row)
!
! select arrayrange(ARRAY[2,1], ARRAY[1,2]); -- fail
! ERROR: range lower bound must be less than or equal to range upper bound
! select array[1,1] <@ arrayrange(array[1,2], array[2,1]);
! ?column?
! ----------
! f
! (1 row)
!
! select array[1,3] <@ arrayrange(array[1,2], array[2,1]);
! ?column?
! ----------
! t
! (1 row)
!
! --
! -- OUT/INOUT/TABLE functions
! --
! create function outparam_succeed(i anyrange, out r anyrange, out t text)
! as $$ select $1, 'foo'::text $$ language sql;
! select * from outparam_succeed(int4range(1,2));
! r | t
! -------+-----
! [1,2) | foo
! (1 row)
!
! create function inoutparam_succeed(out i anyelement, inout r anyrange)
! as $$ select upper($1), $1 $$ language sql;
! select * from inoutparam_succeed(int4range(1,2));
! i | r
! ---+-------
! 2 | [1,2)
! (1 row)
!
! create function table_succeed(i anyelement, r anyrange) returns table(i anyelement, r anyrange)
! as $$ select $1, $2 $$ language sql;
! select * from table_succeed(123, int4range(1,11));
! i | r
! -----+--------
! 123 | [1,11)
! (1 row)
!
! -- should fail
! create function outparam_fail(i anyelement, out r anyrange, out t text)
! as $$ select '[1,10]', 'foo' $$ language sql;
! ERROR: cannot determine result data type
! DETAIL: A function returning "anyrange" must have at least one "anyrange" argument.
! --should fail
! create function inoutparam_fail(inout i anyelement, out r anyrange)
! as $$ select $1, '[1,10]' $$ language sql;
! ERROR: cannot determine result data type
! DETAIL: A function returning "anyrange" must have at least one "anyrange" argument.
! --should fail
! create function table_fail(i anyelement) returns table(i anyelement, r anyrange)
! as $$ select $1, '[1,10]' $$ language sql;
! ERROR: cannot determine result data type
! DETAIL: A function returning "anyrange" must have at least one "anyrange" argument.
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/pg_lsn.out 2016-04-02 21:48:12.926336897 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/pg_lsn.out 2016-04-04 03:18:30.698654532 +0000
***************
*** 1,200 ****
! --
! -- PG_LSN
! --
! CREATE TABLE PG_LSN_TBL (f1 pg_lsn);
! -- Largest and smallest input
! INSERT INTO PG_LSN_TBL VALUES ('0/0');
! INSERT INTO PG_LSN_TBL VALUES ('FFFFFFFF/FFFFFFFF');
! -- Incorrect input
! INSERT INTO PG_LSN_TBL VALUES ('G/0');
! ERROR: invalid input syntax for type pg_lsn: "G/0"
! LINE 1: INSERT INTO PG_LSN_TBL VALUES ('G/0');
! ^
! INSERT INTO PG_LSN_TBL VALUES ('-1/0');
! ERROR: invalid input syntax for type pg_lsn: "-1/0"
! LINE 1: INSERT INTO PG_LSN_TBL VALUES ('-1/0');
! ^
! INSERT INTO PG_LSN_TBL VALUES (' 0/12345678');
! ERROR: invalid input syntax for type pg_lsn: " 0/12345678"
! LINE 1: INSERT INTO PG_LSN_TBL VALUES (' 0/12345678');
! ^
! INSERT INTO PG_LSN_TBL VALUES ('ABCD/');
! ERROR: invalid input syntax for type pg_lsn: "ABCD/"
! LINE 1: INSERT INTO PG_LSN_TBL VALUES ('ABCD/');
! ^
! INSERT INTO PG_LSN_TBL VALUES ('/ABCD');
! ERROR: invalid input syntax for type pg_lsn: "/ABCD"
! LINE 1: INSERT INTO PG_LSN_TBL VALUES ('/ABCD');
! ^
! DROP TABLE PG_LSN_TBL;
! -- Operators
! SELECT '0/16AE7F8' = '0/16AE7F8'::pg_lsn;
! ?column?
! ----------
! t
! (1 row)
!
! SELECT '0/16AE7F8'::pg_lsn != '0/16AE7F7';
! ?column?
! ----------
! t
! (1 row)
!
! SELECT '0/16AE7F7' < '0/16AE7F8'::pg_lsn;
! ?column?
! ----------
! t
! (1 row)
!
! SELECT '0/16AE7F8' > pg_lsn '0/16AE7F7';
! ?column?
! ----------
! t
! (1 row)
!
! SELECT '0/16AE7F7'::pg_lsn - '0/16AE7F8'::pg_lsn;
! ?column?
! ----------
! -1
! (1 row)
!
! SELECT '0/16AE7F8'::pg_lsn - '0/16AE7F7'::pg_lsn;
! ?column?
! ----------
! 1
! (1 row)
!
! -- Check btree and hash opclasses
! EXPLAIN (COSTS OFF)
! SELECT DISTINCT (i || '/' || j)::pg_lsn f
! FROM generate_series(1, 10) i,
! generate_series(1, 10) j,
! generate_series(1, 5) k
! WHERE i <= 10 AND j > 0 AND j <= 10
! ORDER BY f;
! QUERY PLAN
! --------------------------------------------------------------------------
! Sort
! Sort Key: (((((i.i)::text || '/'::text) || (j.j)::text))::pg_lsn)
! -> HashAggregate
! Group Key: ((((i.i)::text || '/'::text) || (j.j)::text))::pg_lsn
! -> Nested Loop
! -> Function Scan on generate_series k
! -> Materialize
! -> Nested Loop
! -> Function Scan on generate_series j
! Filter: ((j > 0) AND (j <= 10))
! -> Function Scan on generate_series i
! Filter: (i <= 10)
! (12 rows)
!
! SELECT DISTINCT (i || '/' || j)::pg_lsn f
! FROM generate_series(1, 10) i,
! generate_series(1, 10) j,
! generate_series(1, 5) k
! WHERE i <= 10 AND j > 0 AND j <= 10
! ORDER BY f;
! f
! -------
! 1/1
! 1/2
! 1/3
! 1/4
! 1/5
! 1/6
! 1/7
! 1/8
! 1/9
! 1/10
! 2/1
! 2/2
! 2/3
! 2/4
! 2/5
! 2/6
! 2/7
! 2/8
! 2/9
! 2/10
! 3/1
! 3/2
! 3/3
! 3/4
! 3/5
! 3/6
! 3/7
! 3/8
! 3/9
! 3/10
! 4/1
! 4/2
! 4/3
! 4/4
! 4/5
! 4/6
! 4/7
! 4/8
! 4/9
! 4/10
! 5/1
! 5/2
! 5/3
! 5/4
! 5/5
! 5/6
! 5/7
! 5/8
! 5/9
! 5/10
! 6/1
! 6/2
! 6/3
! 6/4
! 6/5
! 6/6
! 6/7
! 6/8
! 6/9
! 6/10
! 7/1
! 7/2
! 7/3
! 7/4
! 7/5
! 7/6
! 7/7
! 7/8
! 7/9
! 7/10
! 8/1
! 8/2
! 8/3
! 8/4
! 8/5
! 8/6
! 8/7
! 8/8
! 8/9
! 8/10
! 9/1
! 9/2
! 9/3
! 9/4
! 9/5
! 9/6
! 9/7
! 9/8
! 9/9
! 9/10
! 10/1
! 10/2
! 10/3
! 10/4
! 10/5
! 10/6
! 10/7
! 10/8
! 10/9
! 10/10
! (100 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/regproc.out 2016-04-02 21:48:58.132204978 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/regproc.out 2016-04-04 03:18:30.719309330 +0000
***************
*** 1,397 ****
! --
! -- regproc
! --
! /* If objects exist, return oids */
! CREATE ROLE regtestrole;
! -- without schemaname
! SELECT regoper('||/');
! regoper
! ---------
! ||/
! (1 row)
!
! SELECT regoperator('+(int4,int4)');
! regoperator
! --------------------
! +(integer,integer)
! (1 row)
!
! SELECT regproc('now');
! regproc
! ---------
! now
! (1 row)
!
! SELECT regprocedure('abs(numeric)');
! regprocedure
! --------------
! abs(numeric)
! (1 row)
!
! SELECT regclass('pg_class');
! regclass
! ----------
! pg_class
! (1 row)
!
! SELECT regtype('int4');
! regtype
! ---------
! integer
! (1 row)
!
! SELECT to_regoper('||/');
! to_regoper
! ------------
! ||/
! (1 row)
!
! SELECT to_regoperator('+(int4,int4)');
! to_regoperator
! --------------------
! +(integer,integer)
! (1 row)
!
! SELECT to_regproc('now');
! to_regproc
! ------------
! now
! (1 row)
!
! SELECT to_regprocedure('abs(numeric)');
! to_regprocedure
! -----------------
! abs(numeric)
! (1 row)
!
! SELECT to_regclass('pg_class');
! to_regclass
! -------------
! pg_class
! (1 row)
!
! SELECT to_regtype('int4');
! to_regtype
! ------------
! integer
! (1 row)
!
! -- with schemaname
! SELECT regoper('pg_catalog.||/');
! regoper
! ---------
! ||/
! (1 row)
!
! SELECT regoperator('pg_catalog.+(int4,int4)');
! regoperator
! --------------------
! +(integer,integer)
! (1 row)
!
! SELECT regproc('pg_catalog.now');
! regproc
! ---------
! now
! (1 row)
!
! SELECT regprocedure('pg_catalog.abs(numeric)');
! regprocedure
! --------------
! abs(numeric)
! (1 row)
!
! SELECT regclass('pg_catalog.pg_class');
! regclass
! ----------
! pg_class
! (1 row)
!
! SELECT regtype('pg_catalog.int4');
! regtype
! ---------
! integer
! (1 row)
!
! SELECT to_regoper('pg_catalog.||/');
! to_regoper
! ------------
! ||/
! (1 row)
!
! SELECT to_regproc('pg_catalog.now');
! to_regproc
! ------------
! now
! (1 row)
!
! SELECT to_regprocedure('pg_catalog.abs(numeric)');
! to_regprocedure
! -----------------
! abs(numeric)
! (1 row)
!
! SELECT to_regclass('pg_catalog.pg_class');
! to_regclass
! -------------
! pg_class
! (1 row)
!
! SELECT to_regtype('pg_catalog.int4');
! to_regtype
! ------------
! integer
! (1 row)
!
! -- schemaname not applicable
! SELECT regrole('regtestrole');
! regrole
! -------------
! regtestrole
! (1 row)
!
! SELECT regrole('"regtestrole"');
! regrole
! -------------
! regtestrole
! (1 row)
!
! SELECT regnamespace('pg_catalog');
! regnamespace
! --------------
! pg_catalog
! (1 row)
!
! SELECT regnamespace('"pg_catalog"');
! regnamespace
! --------------
! pg_catalog
! (1 row)
!
! SELECT to_regrole('regtestrole');
! to_regrole
! -------------
! regtestrole
! (1 row)
!
! SELECT to_regrole('"regtestrole"');
! to_regrole
! -------------
! regtestrole
! (1 row)
!
! SELECT to_regnamespace('pg_catalog');
! to_regnamespace
! -----------------
! pg_catalog
! (1 row)
!
! SELECT to_regnamespace('"pg_catalog"');
! to_regnamespace
! -----------------
! pg_catalog
! (1 row)
!
! /* If objects don't exist, raise errors. */
! DROP ROLE regtestrole;
! -- without schemaname
! SELECT regoper('||//');
! ERROR: operator does not exist: ||//
! LINE 1: SELECT regoper('||//');
! ^
! SELECT regoperator('++(int4,int4)');
! ERROR: operator does not exist: ++(int4,int4)
! LINE 1: SELECT regoperator('++(int4,int4)');
! ^
! SELECT regproc('know');
! ERROR: function "know" does not exist
! LINE 1: SELECT regproc('know');
! ^
! SELECT regprocedure('absinthe(numeric)');
! ERROR: function "absinthe(numeric)" does not exist
! LINE 1: SELECT regprocedure('absinthe(numeric)');
! ^
! SELECT regclass('pg_classes');
! ERROR: relation "pg_classes" does not exist
! LINE 1: SELECT regclass('pg_classes');
! ^
! SELECT regtype('int3');
! ERROR: type "int3" does not exist
! LINE 1: SELECT regtype('int3');
! ^
! -- with schemaname
! SELECT regoper('ng_catalog.||/');
! ERROR: schema "ng_catalog" does not exist
! LINE 1: SELECT regoper('ng_catalog.||/');
! ^
! SELECT regoperator('ng_catalog.+(int4,int4)');
! ERROR: operator does not exist: ng_catalog.+(int4,int4)
! LINE 1: SELECT regoperator('ng_catalog.+(int4,int4)');
! ^
! SELECT regproc('ng_catalog.now');
! ERROR: schema "ng_catalog" does not exist
! LINE 1: SELECT regproc('ng_catalog.now');
! ^
! SELECT regprocedure('ng_catalog.abs(numeric)');
! ERROR: schema "ng_catalog" does not exist
! LINE 1: SELECT regprocedure('ng_catalog.abs(numeric)');
! ^
! SELECT regclass('ng_catalog.pg_class');
! ERROR: schema "ng_catalog" does not exist
! LINE 1: SELECT regclass('ng_catalog.pg_class');
! ^
! SELECT regtype('ng_catalog.int4');
! ERROR: schema "ng_catalog" does not exist
! LINE 1: SELECT regtype('ng_catalog.int4');
! ^
! -- schemaname not applicable
! SELECT regrole('regtestrole');
! ERROR: role "regtestrole" does not exist
! LINE 1: SELECT regrole('regtestrole');
! ^
! SELECT regrole('"regtestrole"');
! ERROR: role "regtestrole" does not exist
! LINE 1: SELECT regrole('"regtestrole"');
! ^
! SELECT regrole('Nonexistent');
! ERROR: role "nonexistent" does not exist
! LINE 1: SELECT regrole('Nonexistent');
! ^
! SELECT regrole('"Nonexistent"');
! ERROR: role "Nonexistent" does not exist
! LINE 1: SELECT regrole('"Nonexistent"');
! ^
! SELECT regrole('foo.bar');
! ERROR: invalid name syntax
! LINE 1: SELECT regrole('foo.bar');
! ^
! SELECT regnamespace('Nonexistent');
! ERROR: schema "nonexistent" does not exist
! LINE 1: SELECT regnamespace('Nonexistent');
! ^
! SELECT regnamespace('"Nonexistent"');
! ERROR: schema "Nonexistent" does not exist
! LINE 1: SELECT regnamespace('"Nonexistent"');
! ^
! SELECT regnamespace('foo.bar');
! ERROR: invalid name syntax
! LINE 1: SELECT regnamespace('foo.bar');
! ^
! /* If objects don't exist, return NULL with no error. */
! -- without schemaname
! SELECT to_regoper('||//');
! to_regoper
! ------------
!
! (1 row)
!
! SELECT to_regoperator('++(int4,int4)');
! to_regoperator
! ----------------
!
! (1 row)
!
! SELECT to_regproc('know');
! to_regproc
! ------------
!
! (1 row)
!
! SELECT to_regprocedure('absinthe(numeric)');
! to_regprocedure
! -----------------
!
! (1 row)
!
! SELECT to_regclass('pg_classes');
! to_regclass
! -------------
!
! (1 row)
!
! SELECT to_regtype('int3');
! to_regtype
! ------------
!
! (1 row)
!
! -- with schemaname
! SELECT to_regoper('ng_catalog.||/');
! to_regoper
! ------------
!
! (1 row)
!
! SELECT to_regoperator('ng_catalog.+(int4,int4)');
! to_regoperator
! ----------------
!
! (1 row)
!
! SELECT to_regproc('ng_catalog.now');
! to_regproc
! ------------
!
! (1 row)
!
! SELECT to_regprocedure('ng_catalog.abs(numeric)');
! to_regprocedure
! -----------------
!
! (1 row)
!
! SELECT to_regclass('ng_catalog.pg_class');
! to_regclass
! -------------
!
! (1 row)
!
! SELECT to_regtype('ng_catalog.int4');
! to_regtype
! ------------
!
! (1 row)
!
! -- schemaname not applicable
! SELECT to_regrole('regtestrole');
! to_regrole
! ------------
!
! (1 row)
!
! SELECT to_regrole('"regtestrole"');
! to_regrole
! ------------
!
! (1 row)
!
! SELECT to_regrole('foo.bar');
! ERROR: invalid name syntax
! SELECT to_regrole('Nonexistent');
! to_regrole
! ------------
!
! (1 row)
!
! SELECT to_regrole('"Nonexistent"');
! to_regrole
! ------------
!
! (1 row)
!
! SELECT to_regrole('foo.bar');
! ERROR: invalid name syntax
! SELECT to_regnamespace('Nonexistent');
! to_regnamespace
! -----------------
!
! (1 row)
!
! SELECT to_regnamespace('"Nonexistent"');
! to_regnamespace
! -----------------
!
! (1 row)
!
! SELECT to_regnamespace('foo.bar');
! ERROR: invalid name syntax
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/strings.out 2016-04-02 21:48:12.938306885 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/strings.out 2016-04-04 03:18:30.739303384 +0000
***************
*** 1,1660 ****
! --
! -- STRINGS
! -- Test various data entry syntaxes.
! --
! -- SQL string continuation syntax
! -- E021-03 character string literals
! SELECT 'first line'
! ' - next line'
! ' - third line'
! AS "Three lines to one";
! Three lines to one
! -------------------------------------
! first line - next line - third line
! (1 row)
!
! -- illegal string continuation syntax
! SELECT 'first line'
! ' - next line' /* this comment is not allowed here */
! ' - third line'
! AS "Illegal comment within continuation";
! ERROR: syntax error at or near "' - third line'"
! LINE 3: ' - third line'
! ^
! -- Unicode escapes
! SET standard_conforming_strings TO on;
! SELECT U&'d\0061t\+000061' AS U&"d\0061t\+000061";
! data
! ------
! data
! (1 row)
!
! SELECT U&'d!0061t\+000061' UESCAPE '!' AS U&"d*0061t\+000061" UESCAPE '*';
! dat\+000061
! -------------
! dat\+000061
! (1 row)
!
! SELECT U&' \' UESCAPE '!' AS "tricky";
! tricky
! --------
! \
! (1 row)
!
! SELECT 'tricky' AS U&"\" UESCAPE '!';
! \
! --------
! tricky
! (1 row)
!
! SELECT U&'wrong: \061';
! ERROR: invalid Unicode escape value at or near "\061'"
! LINE 1: SELECT U&'wrong: \061';
! ^
! SELECT U&'wrong: \+0061';
! ERROR: invalid Unicode escape value at or near "\+0061'"
! LINE 1: SELECT U&'wrong: \+0061';
! ^
! SELECT U&'wrong: +0061' UESCAPE '+';
! ERROR: invalid Unicode escape character at or near "+'"
! LINE 1: SELECT U&'wrong: +0061' UESCAPE '+';
! ^
! SET standard_conforming_strings TO off;
! SELECT U&'d\0061t\+000061' AS U&"d\0061t\+000061";
! ERROR: unsafe use of string constant with Unicode escapes
! LINE 1: SELECT U&'d\0061t\+000061' AS U&"d\0061t\+000061";
! ^
! DETAIL: String constants with Unicode escapes cannot be used when standard_conforming_strings is off.
! SELECT U&'d!0061t\+000061' UESCAPE '!' AS U&"d*0061t\+000061" UESCAPE '*';
! ERROR: unsafe use of string constant with Unicode escapes
! LINE 1: SELECT U&'d!0061t\+000061' UESCAPE '!' AS U&"d*0061t\+000061...
! ^
! DETAIL: String constants with Unicode escapes cannot be used when standard_conforming_strings is off.
! SELECT U&' \' UESCAPE '!' AS "tricky";
! ERROR: unsafe use of string constant with Unicode escapes
! LINE 1: SELECT U&' \' UESCAPE '!' AS "tricky";
! ^
! DETAIL: String constants with Unicode escapes cannot be used when standard_conforming_strings is off.
! SELECT 'tricky' AS U&"\" UESCAPE '!';
! \
! --------
! tricky
! (1 row)
!
! SELECT U&'wrong: \061';
! ERROR: unsafe use of string constant with Unicode escapes
! LINE 1: SELECT U&'wrong: \061';
! ^
! DETAIL: String constants with Unicode escapes cannot be used when standard_conforming_strings is off.
! SELECT U&'wrong: \+0061';
! ERROR: unsafe use of string constant with Unicode escapes
! LINE 1: SELECT U&'wrong: \+0061';
! ^
! DETAIL: String constants with Unicode escapes cannot be used when standard_conforming_strings is off.
! SELECT U&'wrong: +0061' UESCAPE '+';
! ERROR: unsafe use of string constant with Unicode escapes
! LINE 1: SELECT U&'wrong: +0061' UESCAPE '+';
! ^
! DETAIL: String constants with Unicode escapes cannot be used when standard_conforming_strings is off.
! RESET standard_conforming_strings;
! -- bytea
! SET bytea_output TO hex;
! SELECT E'\\xDeAdBeEf'::bytea;
! bytea
! ------------
! \xdeadbeef
! (1 row)
!
! SELECT E'\\x De Ad Be Ef '::bytea;
! bytea
! ------------
! \xdeadbeef
! (1 row)
!
! SELECT E'\\xDeAdBeE'::bytea;
! ERROR: invalid hexadecimal data: odd number of digits
! LINE 1: SELECT E'\\xDeAdBeE'::bytea;
! ^
! SELECT E'\\xDeAdBeEx'::bytea;
! ERROR: invalid hexadecimal digit: "x"
! LINE 1: SELECT E'\\xDeAdBeEx'::bytea;
! ^
! SELECT E'\\xDe00BeEf'::bytea;
! bytea
! ------------
! \xde00beef
! (1 row)
!
! SELECT E'DeAdBeEf'::bytea;
! bytea
! --------------------
! \x4465416442654566
! (1 row)
!
! SELECT E'De\\000dBeEf'::bytea;
! bytea
! --------------------
! \x4465006442654566
! (1 row)
!
! SELECT E'De\123dBeEf'::bytea;
! bytea
! --------------------
! \x4465536442654566
! (1 row)
!
! SELECT E'De\\123dBeEf'::bytea;
! bytea
! --------------------
! \x4465536442654566
! (1 row)
!
! SELECT E'De\\678dBeEf'::bytea;
! ERROR: invalid input syntax for type bytea
! LINE 1: SELECT E'De\\678dBeEf'::bytea;
! ^
! SET bytea_output TO escape;
! SELECT E'\\xDeAdBeEf'::bytea;
! bytea
! ------------------
! \336\255\276\357
! (1 row)
!
! SELECT E'\\x De Ad Be Ef '::bytea;
! bytea
! ------------------
! \336\255\276\357
! (1 row)
!
! SELECT E'\\xDe00BeEf'::bytea;
! bytea
! ------------------
! \336\000\276\357
! (1 row)
!
! SELECT E'DeAdBeEf'::bytea;
! bytea
! ----------
! DeAdBeEf
! (1 row)
!
! SELECT E'De\\000dBeEf'::bytea;
! bytea
! -------------
! De\000dBeEf
! (1 row)
!
! SELECT E'De\\123dBeEf'::bytea;
! bytea
! ----------
! DeSdBeEf
! (1 row)
!
! --
! -- test conversions between various string types
! -- E021-10 implicit casting among the character data types
! --
! SELECT CAST(f1 AS text) AS "text(char)" FROM CHAR_TBL ORDER BY f1;
! text(char)
! ------------
! a
! ab
! abcd
! abcd
! (4 rows)
!
! SELECT CAST(f1 AS text) AS "text(varchar)" FROM VARCHAR_TBL ORDER BY f1;
! text(varchar)
! ---------------
! a
! ab
! abcd
! abcd
! (4 rows)
!
! SELECT CAST(name 'namefield' AS text) AS "text(name)";
! text(name)
! ------------
! namefield
! (1 row)
!
! -- since this is an explicit cast, it should truncate w/o error:
! SELECT CAST(f1 AS char(10)) AS "char(text)" FROM TEXT_TBL ORDER BY f1;
! char(text)
! ------------
! doh!
! hi de ho n
! (2 rows)
!
! -- note: implicit-cast case is tested in char.sql
! SELECT CAST(f1 AS char(20)) AS "char(text)" FROM TEXT_TBL ORDER BY f1;
! char(text)
! ----------------------
! doh!
! hi de ho neighbor
! (2 rows)
!
! SELECT CAST(f1 AS char(10)) AS "char(varchar)" FROM VARCHAR_TBL ORDER BY f1;
! char(varchar)
! ---------------
! a
! ab
! abcd
! abcd
! (4 rows)
!
! SELECT CAST(name 'namefield' AS char(10)) AS "char(name)";
! char(name)
! ------------
! namefield
! (1 row)
!
! SELECT CAST(f1 AS varchar) AS "varchar(text)" FROM TEXT_TBL ORDER BY f1;
! varchar(text)
! -------------------
! doh!
! hi de ho neighbor
! (2 rows)
!
! SELECT CAST(f1 AS varchar) AS "varchar(char)" FROM CHAR_TBL ORDER BY f1;
! varchar(char)
! ---------------
! a
! ab
! abcd
! abcd
! (4 rows)
!
! SELECT CAST(name 'namefield' AS varchar) AS "varchar(name)";
! varchar(name)
! ---------------
! namefield
! (1 row)
!
! --
! -- test SQL string functions
! -- E### and T### are feature reference numbers from SQL99
! --
! -- E021-09 trim function
! SELECT TRIM(BOTH FROM ' bunch o blanks ') = 'bunch o blanks' AS "bunch o blanks";
! bunch o blanks
! ----------------
! t
! (1 row)
!
! SELECT TRIM(LEADING FROM ' bunch o blanks ') = 'bunch o blanks ' AS "bunch o blanks ";
! bunch o blanks
! ------------------
! t
! (1 row)
!
! SELECT TRIM(TRAILING FROM ' bunch o blanks ') = ' bunch o blanks' AS " bunch o blanks";
! bunch o blanks
! ------------------
! t
! (1 row)
!
! SELECT TRIM(BOTH 'x' FROM 'xxxxxsome Xsxxxxx') = 'some Xs' AS "some Xs";
! some Xs
! ---------
! t
! (1 row)
!
! -- E021-06 substring expression
! SELECT SUBSTRING('1234567890' FROM 3) = '34567890' AS "34567890";
! 34567890
! ----------
! t
! (1 row)
!
! SELECT SUBSTRING('1234567890' FROM 4 FOR 3) = '456' AS "456";
! 456
! -----
! t
! (1 row)
!
! -- T581 regular expression substring (with SQL99's bizarre regexp syntax)
! SELECT SUBSTRING('abcdefg' FROM 'a#"(b_d)#"%' FOR '#') AS "bcd";
! bcd
! -----
! bcd
! (1 row)
!
! -- No match should return NULL
! SELECT SUBSTRING('abcdefg' FROM '#"(b_d)#"%' FOR '#') IS NULL AS "True";
! True
! ------
! t
! (1 row)
!
! -- Null inputs should return NULL
! SELECT SUBSTRING('abcdefg' FROM '(b|c)' FOR NULL) IS NULL AS "True";
! True
! ------
! t
! (1 row)
!
! SELECT SUBSTRING(NULL FROM '(b|c)' FOR '#') IS NULL AS "True";
! True
! ------
! t
! (1 row)
!
! SELECT SUBSTRING('abcdefg' FROM NULL FOR '#') IS NULL AS "True";
! True
! ------
! t
! (1 row)
!
! -- PostgreSQL extension to allow omitting the escape character;
! -- here the regexp is taken as Posix syntax
! SELECT SUBSTRING('abcdefg' FROM 'c.e') AS "cde";
! cde
! -----
! cde
! (1 row)
!
! -- With a parenthesized subexpression, return only what matches the subexpr
! SELECT SUBSTRING('abcdefg' FROM 'b(.*)f') AS "cde";
! cde
! -----
! cde
! (1 row)
!
! -- PostgreSQL extension to allow using back reference in replace string;
! SELECT regexp_replace('1112223333', E'(\\d{3})(\\d{3})(\\d{4})', E'(\\1) \\2-\\3');
! regexp_replace
! ----------------
! (111) 222-3333
! (1 row)
!
! SELECT regexp_replace('AAA BBB CCC ', E'\\s+', ' ', 'g');
! regexp_replace
! ----------------
! AAA BBB CCC
! (1 row)
!
! SELECT regexp_replace('AAA', '^|$', 'Z', 'g');
! regexp_replace
! ----------------
! ZAAAZ
! (1 row)
!
! SELECT regexp_replace('AAA aaa', 'A+', 'Z', 'gi');
! regexp_replace
! ----------------
! Z Z
! (1 row)
!
! -- invalid regexp option
! SELECT regexp_replace('AAA aaa', 'A+', 'Z', 'z');
! ERROR: invalid regexp option: "z"
! -- set so we can tell NULL from empty string
! \pset null '\\N'
! -- return all matches from regexp
! SELECT regexp_matches('foobarbequebaz', $re$(bar)(beque)$re$);
! regexp_matches
! ----------------
! {bar,beque}
! (1 row)
!
! -- test case insensitive
! SELECT regexp_matches('foObARbEqUEbAz', $re$(bar)(beque)$re$, 'i');
! regexp_matches
! ----------------
! {bAR,bEqUE}
! (1 row)
!
! -- global option - more than one match
! SELECT regexp_matches('foobarbequebazilbarfbonk', $re$(b[^b]+)(b[^b]+)$re$, 'g');
! regexp_matches
! ----------------
! {bar,beque}
! {bazil,barf}
! (2 rows)
!
! -- empty capture group (matched empty string)
! SELECT regexp_matches('foobarbequebaz', $re$(bar)(.*)(beque)$re$);
! regexp_matches
! ----------------
! {bar,"",beque}
! (1 row)
!
! -- no match
! SELECT regexp_matches('foobarbequebaz', $re$(bar)(.+)(beque)$re$);
! regexp_matches
! ----------------
! (0 rows)
!
! -- optional capture group did not match, null entry in array
! SELECT regexp_matches('foobarbequebaz', $re$(bar)(.+)?(beque)$re$);
! regexp_matches
! ------------------
! {bar,NULL,beque}
! (1 row)
!
! -- no capture groups
! SELECT regexp_matches('foobarbequebaz', $re$barbeque$re$);
! regexp_matches
! ----------------
! {barbeque}
! (1 row)
!
! -- start/end-of-line matches are of zero length
! SELECT regexp_matches('foo' || chr(10) || 'bar' || chr(10) || 'bequq' || chr(10) || 'baz', '^', 'mg');
! regexp_matches
! ----------------
! {""}
! {""}
! {""}
! {""}
! (4 rows)
!
! SELECT regexp_matches('foo' || chr(10) || 'bar' || chr(10) || 'bequq' || chr(10) || 'baz', '$', 'mg');
! regexp_matches
! ----------------
! {""}
! {""}
! {""}
! {""}
! (4 rows)
!
! SELECT regexp_matches('1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4' || chr(10), '^.?', 'mg');
! regexp_matches
! ----------------
! {1}
! {2}
! {3}
! {4}
! {""}
! (5 rows)
!
! SELECT regexp_matches(chr(10) || '1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4' || chr(10), '.?$', 'mg');
! regexp_matches
! ----------------
! {""}
! {1}
! {""}
! {2}
! {""}
! {3}
! {""}
! {4}
! {""}
! {""}
! (10 rows)
!
! SELECT regexp_matches(chr(10) || '1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4', '.?$', 'mg');
! regexp_matches
! ----------------
! {""}
! {1}
! {""}
! {2}
! {""}
! {3}
! {""}
! {4}
! {""}
! (9 rows)
!
! -- give me errors
! SELECT regexp_matches('foobarbequebaz', $re$(bar)(beque)$re$, 'gz');
! ERROR: invalid regexp option: "z"
! SELECT regexp_matches('foobarbequebaz', $re$(barbeque$re$);
! ERROR: invalid regular expression: parentheses () not balanced
! SELECT regexp_matches('foobarbequebaz', $re$(bar)(beque){2,1}$re$);
! ERROR: invalid regular expression: invalid repetition count(s)
! -- split string on regexp
! SELECT foo, length(foo) FROM regexp_split_to_table('the quick brown fox jumps over the lazy dog', $re$\s+$re$) AS foo;
! foo | length
! -------+--------
! the | 3
! quick | 5
! brown | 5
! fox | 3
! jumps | 5
! over | 4
! the | 3
! lazy | 4
! dog | 3
! (9 rows)
!
! SELECT regexp_split_to_array('the quick brown fox jumps over the lazy dog', $re$\s+$re$);
! regexp_split_to_array
! -----------------------------------------------
! {the,quick,brown,fox,jumps,over,the,lazy,dog}
! (1 row)
!
! SELECT foo, length(foo) FROM regexp_split_to_table('the quick brown fox jumps over the lazy dog', $re$\s*$re$) AS foo;
! foo | length
! -----+--------
! t | 1
! h | 1
! e | 1
! q | 1
! u | 1
! i | 1
! c | 1
! k | 1
! b | 1
! r | 1
! o | 1
! w | 1
! n | 1
! f | 1
! o | 1
! x | 1
! j | 1
! u | 1
! m | 1
! p | 1
! s | 1
! o | 1
! v | 1
! e | 1
! r | 1
! t | 1
! h | 1
! e | 1
! l | 1
! a | 1
! z | 1
! y | 1
! d | 1
! o | 1
! g | 1
! (35 rows)
!
! SELECT regexp_split_to_array('the quick brown fox jumps over the lazy dog', $re$\s*$re$);
! regexp_split_to_array
! -------------------------------------------------------------------------
! {t,h,e,q,u,i,c,k,b,r,o,w,n,f,o,x,j,u,m,p,s,o,v,e,r,t,h,e,l,a,z,y,d,o,g}
! (1 row)
!
! SELECT foo, length(foo) FROM regexp_split_to_table('the quick brown fox jumps over the lazy dog', '') AS foo;
! foo | length
! -----+--------
! t | 1
! h | 1
! e | 1
! | 1
! q | 1
! u | 1
! i | 1
! c | 1
! k | 1
! | 1
! b | 1
! r | 1
! o | 1
! w | 1
! n | 1
! | 1
! f | 1
! o | 1
! x | 1
! | 1
! j | 1
! u | 1
! m | 1
! p | 1
! s | 1
! | 1
! o | 1
! v | 1
! e | 1
! r | 1
! | 1
! t | 1
! h | 1
! e | 1
! | 1
! l | 1
! a | 1
! z | 1
! y | 1
! | 1
! d | 1
! o | 1
! g | 1
! (43 rows)
!
! SELECT regexp_split_to_array('the quick brown fox jumps over the lazy dog', '');
! regexp_split_to_array
! ---------------------------------------------------------------------------------------------------------
! {t,h,e," ",q,u,i,c,k," ",b,r,o,w,n," ",f,o,x," ",j,u,m,p,s," ",o,v,e,r," ",t,h,e," ",l,a,z,y," ",d,o,g}
! (1 row)
!
! -- case insensitive
! SELECT foo, length(foo) FROM regexp_split_to_table('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'i') AS foo;
! foo | length
! ---------------------------+--------
! th | 2
! QUick bROWn FOx jUMPs ov | 25
! r Th | 4
! lazy dOG | 9
! (4 rows)
!
! SELECT regexp_split_to_array('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'i');
! regexp_split_to_array
! -----------------------------------------------------
! {th," QUick bROWn FOx jUMPs ov","r Th"," lazy dOG"}
! (1 row)
!
! -- no match of pattern
! SELECT foo, length(foo) FROM regexp_split_to_table('the quick brown fox jumps over the lazy dog', 'nomatch') AS foo;
! foo | length
! ---------------------------------------------+--------
! the quick brown fox jumps over the lazy dog | 43
! (1 row)
!
! SELECT regexp_split_to_array('the quick brown fox jumps over the lazy dog', 'nomatch');
! regexp_split_to_array
! -------------------------------------------------
! {"the quick brown fox jumps over the lazy dog"}
! (1 row)
!
! -- some corner cases
! SELECT regexp_split_to_array('123456','1');
! regexp_split_to_array
! -----------------------
! {"",23456}
! (1 row)
!
! SELECT regexp_split_to_array('123456','6');
! regexp_split_to_array
! -----------------------
! {12345,""}
! (1 row)
!
! SELECT regexp_split_to_array('123456','.');
! regexp_split_to_array
! ------------------------
! {"","","","","","",""}
! (1 row)
!
! -- errors
! SELECT foo, length(foo) FROM regexp_split_to_table('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'zippy') AS foo;
! ERROR: invalid regexp option: "z"
! SELECT regexp_split_to_array('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'iz');
! ERROR: invalid regexp option: "z"
! -- global option meaningless for regexp_split
! SELECT foo, length(foo) FROM regexp_split_to_table('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'g') AS foo;
! ERROR: regexp_split does not support the global option
! SELECT regexp_split_to_array('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'g');
! ERROR: regexp_split does not support the global option
! -- change NULL-display back
! \pset null ''
! -- E021-11 position expression
! SELECT POSITION('4' IN '1234567890') = '4' AS "4";
! 4
! ---
! t
! (1 row)
!
! SELECT POSITION('5' IN '1234567890') = '5' AS "5";
! 5
! ---
! t
! (1 row)
!
! -- T312 character overlay function
! SELECT OVERLAY('abcdef' PLACING '45' FROM 4) AS "abc45f";
! abc45f
! --------
! abc45f
! (1 row)
!
! SELECT OVERLAY('yabadoo' PLACING 'daba' FROM 5) AS "yabadaba";
! yabadaba
! ----------
! yabadaba
! (1 row)
!
! SELECT OVERLAY('yabadoo' PLACING 'daba' FROM 5 FOR 0) AS "yabadabadoo";
! yabadabadoo
! -------------
! yabadabadoo
! (1 row)
!
! SELECT OVERLAY('babosa' PLACING 'ubb' FROM 2 FOR 4) AS "bubba";
! bubba
! -------
! bubba
! (1 row)
!
! --
! -- test LIKE
! -- Be sure to form every test as a LIKE/NOT LIKE pair.
! --
! -- simplest examples
! -- E061-04 like predicate
! SELECT 'hawkeye' LIKE 'h%' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'hawkeye' NOT LIKE 'h%' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'hawkeye' LIKE 'H%' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'hawkeye' NOT LIKE 'H%' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'hawkeye' LIKE 'indio%' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'hawkeye' NOT LIKE 'indio%' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'hawkeye' LIKE 'h%eye' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'hawkeye' NOT LIKE 'h%eye' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'indio' LIKE '_ndio' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'indio' NOT LIKE '_ndio' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'indio' LIKE 'in__o' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'indio' NOT LIKE 'in__o' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'indio' LIKE 'in_o' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'indio' NOT LIKE 'in_o' AS "true";
! true
! ------
! t
! (1 row)
!
! -- unused escape character
! SELECT 'hawkeye' LIKE 'h%' ESCAPE '#' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'hawkeye' NOT LIKE 'h%' ESCAPE '#' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'indio' LIKE 'ind_o' ESCAPE '$' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'indio' NOT LIKE 'ind_o' ESCAPE '$' AS "false";
! false
! -------
! f
! (1 row)
!
! -- escape character
! -- E061-05 like predicate with escape clause
! SELECT 'h%' LIKE 'h#%' ESCAPE '#' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'h%' NOT LIKE 'h#%' ESCAPE '#' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'h%wkeye' LIKE 'h#%' ESCAPE '#' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'h%wkeye' NOT LIKE 'h#%' ESCAPE '#' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'h%wkeye' LIKE 'h#%%' ESCAPE '#' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'h%wkeye' NOT LIKE 'h#%%' ESCAPE '#' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'h%awkeye' LIKE 'h#%a%k%e' ESCAPE '#' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'h%awkeye' NOT LIKE 'h#%a%k%e' ESCAPE '#' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'indio' LIKE '_ndio' ESCAPE '$' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'indio' NOT LIKE '_ndio' ESCAPE '$' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'i_dio' LIKE 'i$_d_o' ESCAPE '$' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'i_dio' NOT LIKE 'i$_d_o' ESCAPE '$' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'i_dio' LIKE 'i$_nd_o' ESCAPE '$' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'i_dio' NOT LIKE 'i$_nd_o' ESCAPE '$' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'i_dio' LIKE 'i$_d%o' ESCAPE '$' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'i_dio' NOT LIKE 'i$_d%o' ESCAPE '$' AS "false";
! false
! -------
! f
! (1 row)
!
! -- escape character same as pattern character
! SELECT 'maca' LIKE 'm%aca' ESCAPE '%' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'maca' NOT LIKE 'm%aca' ESCAPE '%' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'ma%a' LIKE 'm%a%%a' ESCAPE '%' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'ma%a' NOT LIKE 'm%a%%a' ESCAPE '%' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'bear' LIKE 'b_ear' ESCAPE '_' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'bear' NOT LIKE 'b_ear' ESCAPE '_' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'be_r' LIKE 'b_e__r' ESCAPE '_' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'be_r' NOT LIKE 'b_e__r' ESCAPE '_' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'be_r' LIKE '__e__r' ESCAPE '_' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'be_r' NOT LIKE '__e__r' ESCAPE '_' AS "true";
! true
! ------
! t
! (1 row)
!
! --
! -- test ILIKE (case-insensitive LIKE)
! -- Be sure to form every test as an ILIKE/NOT ILIKE pair.
! --
! SELECT 'hawkeye' ILIKE 'h%' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'hawkeye' NOT ILIKE 'h%' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'hawkeye' ILIKE 'H%' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'hawkeye' NOT ILIKE 'H%' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'hawkeye' ILIKE 'H%Eye' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'hawkeye' NOT ILIKE 'H%Eye' AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'Hawkeye' ILIKE 'h%' AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'Hawkeye' NOT ILIKE 'h%' AS "false";
! false
! -------
! f
! (1 row)
!
! --
! -- test %/_ combination cases, cf bugs #4821 and #5478
! --
! SELECT 'foo' LIKE '_%' as t, 'f' LIKE '_%' as t, '' LIKE '_%' as f;
! t | t | f
! ---+---+---
! t | t | f
! (1 row)
!
! SELECT 'foo' LIKE '%_' as t, 'f' LIKE '%_' as t, '' LIKE '%_' as f;
! t | t | f
! ---+---+---
! t | t | f
! (1 row)
!
! SELECT 'foo' LIKE '__%' as t, 'foo' LIKE '___%' as t, 'foo' LIKE '____%' as f;
! t | t | f
! ---+---+---
! t | t | f
! (1 row)
!
! SELECT 'foo' LIKE '%__' as t, 'foo' LIKE '%___' as t, 'foo' LIKE '%____' as f;
! t | t | f
! ---+---+---
! t | t | f
! (1 row)
!
! SELECT 'jack' LIKE '%____%' AS t;
! t
! ---
! t
! (1 row)
!
! --
! -- test implicit type conversion
! --
! -- E021-07 character concatenation
! SELECT 'unknown' || ' and unknown' AS "Concat unknown types";
! Concat unknown types
! ----------------------
! unknown and unknown
! (1 row)
!
! SELECT text 'text' || ' and unknown' AS "Concat text to unknown type";
! Concat text to unknown type
! -----------------------------
! text and unknown
! (1 row)
!
! SELECT char(20) 'characters' || ' and text' AS "Concat char to unknown type";
! Concat char to unknown type
! -----------------------------
! characters and text
! (1 row)
!
! SELECT text 'text' || char(20) ' and characters' AS "Concat text to char";
! Concat text to char
! ---------------------
! text and characters
! (1 row)
!
! SELECT text 'text' || varchar ' and varchar' AS "Concat text to varchar";
! Concat text to varchar
! ------------------------
! text and varchar
! (1 row)
!
! --
! -- test substr with toasted text values
! --
! CREATE TABLE toasttest(f1 text);
! insert into toasttest values(repeat('1234567890',10000));
! insert into toasttest values(repeat('1234567890',10000));
! --
! -- Ensure that some values are uncompressed, to test the faster substring
! -- operation used in that case
! --
! alter table toasttest alter column f1 set storage external;
! insert into toasttest values(repeat('1234567890',10000));
! insert into toasttest values(repeat('1234567890',10000));
! -- If the starting position is zero or less, then return from the start of the string
! -- adjusting the length to be consistent with the "negative start" per SQL.
! SELECT substr(f1, -1, 5) from toasttest;
! substr
! --------
! 123
! 123
! 123
! 123
! (4 rows)
!
! -- If the length is less than zero, an ERROR is thrown.
! SELECT substr(f1, 5, -1) from toasttest;
! ERROR: negative substring length not allowed
! -- If no third argument (length) is provided, the length to the end of the
! -- string is assumed.
! SELECT substr(f1, 99995) from toasttest;
! substr
! --------
! 567890
! 567890
! 567890
! 567890
! (4 rows)
!
! -- If start plus length is > string length, the result is truncated to
! -- string length
! SELECT substr(f1, 99995, 10) from toasttest;
! substr
! --------
! 567890
! 567890
! 567890
! 567890
! (4 rows)
!
! DROP TABLE toasttest;
! --
! -- test substr with toasted bytea values
! --
! CREATE TABLE toasttest(f1 bytea);
! insert into toasttest values(decode(repeat('1234567890',10000),'escape'));
! insert into toasttest values(decode(repeat('1234567890',10000),'escape'));
! --
! -- Ensure that some values are uncompressed, to test the faster substring
! -- operation used in that case
! --
! alter table toasttest alter column f1 set storage external;
! insert into toasttest values(decode(repeat('1234567890',10000),'escape'));
! insert into toasttest values(decode(repeat('1234567890',10000),'escape'));
! -- If the starting position is zero or less, then return from the start of the string
! -- adjusting the length to be consistent with the "negative start" per SQL.
! SELECT substr(f1, -1, 5) from toasttest;
! substr
! --------
! 123
! 123
! 123
! 123
! (4 rows)
!
! -- If the length is less than zero, an ERROR is thrown.
! SELECT substr(f1, 5, -1) from toasttest;
! ERROR: negative substring length not allowed
! -- If no third argument (length) is provided, the length to the end of the
! -- string is assumed.
! SELECT substr(f1, 99995) from toasttest;
! substr
! --------
! 567890
! 567890
! 567890
! 567890
! (4 rows)
!
! -- If start plus length is > string length, the result is truncated to
! -- string length
! SELECT substr(f1, 99995, 10) from toasttest;
! substr
! --------
! 567890
! 567890
! 567890
! 567890
! (4 rows)
!
! DROP TABLE toasttest;
! -- test internally compressing datums
! -- this tests compressing a datum to a very small size which exercises a
! -- corner case in packed-varlena handling: even though small, the compressed
! -- datum must be given a 4-byte header because there are no bits to indicate
! -- compression in a 1-byte header
! CREATE TABLE toasttest (c char(4096));
! INSERT INTO toasttest VALUES('x');
! SELECT length(c), c::text FROM toasttest;
! length | c
! --------+---
! 1 | x
! (1 row)
!
! SELECT c FROM toasttest;
! c
! ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
! x
! (1 row)
!
! DROP TABLE toasttest;
! --
! -- test length
! --
! SELECT length('abcdef') AS "length_6";
! length_6
! ----------
! 6
! (1 row)
!
! --
! -- test strpos
! --
! SELECT strpos('abcdef', 'cd') AS "pos_3";
! pos_3
! -------
! 3
! (1 row)
!
! SELECT strpos('abcdef', 'xy') AS "pos_0";
! pos_0
! -------
! 0
! (1 row)
!
! --
! -- test replace
! --
! SELECT replace('abcdef', 'de', '45') AS "abc45f";
! abc45f
! --------
! abc45f
! (1 row)
!
! SELECT replace('yabadabadoo', 'ba', '123') AS "ya123da123doo";
! ya123da123doo
! ---------------
! ya123da123doo
! (1 row)
!
! SELECT replace('yabadoo', 'bad', '') AS "yaoo";
! yaoo
! ------
! yaoo
! (1 row)
!
! --
! -- test split_part
! --
! select split_part('joeuser@mydatabase','@',0) AS "an error";
! ERROR: field position must be greater than zero
! select split_part('joeuser@mydatabase','@',1) AS "joeuser";
! joeuser
! ---------
! joeuser
! (1 row)
!
! select split_part('joeuser@mydatabase','@',2) AS "mydatabase";
! mydatabase
! ------------
! mydatabase
! (1 row)
!
! select split_part('joeuser@mydatabase','@',3) AS "empty string";
! empty string
! --------------
!
! (1 row)
!
! select split_part('@joeuser@mydatabase@','@',2) AS "joeuser";
! joeuser
! ---------
! joeuser
! (1 row)
!
! --
! -- test to_hex
! --
! select to_hex(256*256*256 - 1) AS "ffffff";
! ffffff
! --------
! ffffff
! (1 row)
!
! select to_hex(256::bigint*256::bigint*256::bigint*256::bigint - 1) AS "ffffffff";
! ffffffff
! ----------
! ffffffff
! (1 row)
!
! --
! -- MD5 test suite - from IETF RFC 1321
! -- (see: ftp://ftp.rfc-editor.org/in-notes/rfc1321.txt)
! --
! select md5('') = 'd41d8cd98f00b204e9800998ecf8427e' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('a') = '0cc175b9c0f1b6a831c399e269772661' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('abc') = '900150983cd24fb0d6963f7d28e17f72' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('message digest') = 'f96b697d7cb7938d525a2f31aaf161d0' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('abcdefghijklmnopqrstuvwxyz') = 'c3fcd3d76192e4007dfb496cca67e13b' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') = 'd174ab98d277d9f5a5611c2c9f419d9f' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('12345678901234567890123456789012345678901234567890123456789012345678901234567890') = '57edf4a22be3c955ac49da2e2107b67a' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5(''::bytea) = 'd41d8cd98f00b204e9800998ecf8427e' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('a'::bytea) = '0cc175b9c0f1b6a831c399e269772661' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('abc'::bytea) = '900150983cd24fb0d6963f7d28e17f72' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('message digest'::bytea) = 'f96b697d7cb7938d525a2f31aaf161d0' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('abcdefghijklmnopqrstuvwxyz'::bytea) = 'c3fcd3d76192e4007dfb496cca67e13b' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'::bytea) = 'd174ab98d277d9f5a5611c2c9f419d9f' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! select md5('12345678901234567890123456789012345678901234567890123456789012345678901234567890'::bytea) = '57edf4a22be3c955ac49da2e2107b67a' AS "TRUE";
! TRUE
! ------
! t
! (1 row)
!
! --
! -- test behavior of escape_string_warning and standard_conforming_strings options
! --
! set escape_string_warning = off;
! set standard_conforming_strings = off;
! show escape_string_warning;
! escape_string_warning
! -----------------------
! off
! (1 row)
!
! show standard_conforming_strings;
! standard_conforming_strings
! -----------------------------
! off
! (1 row)
!
! set escape_string_warning = on;
! set standard_conforming_strings = on;
! show escape_string_warning;
! escape_string_warning
! -----------------------
! on
! (1 row)
!
! show standard_conforming_strings;
! standard_conforming_strings
! -----------------------------
! on
! (1 row)
!
! select 'a\bcd' as f1, 'a\b''cd' as f2, 'a\b''''cd' as f3, 'abcd\' as f4, 'ab\''cd' as f5, '\\' as f6;
! f1 | f2 | f3 | f4 | f5 | f6
! -------+--------+---------+-------+--------+----
! a\bcd | a\b'cd | a\b''cd | abcd\ | ab\'cd | \\
! (1 row)
!
! set standard_conforming_strings = off;
! select 'a\\bcd' as f1, 'a\\b\'cd' as f2, 'a\\b\'''cd' as f3, 'abcd\\' as f4, 'ab\\\'cd' as f5, '\\\\' as f6;
! WARNING: nonstandard use of \\ in a string literal
! LINE 1: select 'a\\bcd' as f1, 'a\\b\'cd' as f2, 'a\\b\'''cd' as f3,...
! ^
! HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
! WARNING: nonstandard use of \\ in a string literal
! LINE 1: select 'a\\bcd' as f1, 'a\\b\'cd' as f2, 'a\\b\'''cd' as f3,...
! ^
! HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
! WARNING: nonstandard use of \\ in a string literal
! LINE 1: select 'a\\bcd' as f1, 'a\\b\'cd' as f2, 'a\\b\'''cd' as f3,...
! ^
! HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
! WARNING: nonstandard use of \\ in a string literal
! LINE 1: ...bcd' as f1, 'a\\b\'cd' as f2, 'a\\b\'''cd' as f3, 'abcd\\' ...
! ^
! HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
! WARNING: nonstandard use of \\ in a string literal
! LINE 1: ...'cd' as f2, 'a\\b\'''cd' as f3, 'abcd\\' as f4, 'ab\\\'cd'...
! ^
! HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
! WARNING: nonstandard use of \\ in a string literal
! LINE 1: ...'''cd' as f3, 'abcd\\' as f4, 'ab\\\'cd' as f5, '\\\\' as ...
! ^
! HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
! f1 | f2 | f3 | f4 | f5 | f6
! -------+--------+---------+-------+--------+----
! a\bcd | a\b'cd | a\b''cd | abcd\ | ab\'cd | \\
! (1 row)
!
! set escape_string_warning = off;
! set standard_conforming_strings = on;
! select 'a\bcd' as f1, 'a\b''cd' as f2, 'a\b''''cd' as f3, 'abcd\' as f4, 'ab\''cd' as f5, '\\' as f6;
! f1 | f2 | f3 | f4 | f5 | f6
! -------+--------+---------+-------+--------+----
! a\bcd | a\b'cd | a\b''cd | abcd\ | ab\'cd | \\
! (1 row)
!
! set standard_conforming_strings = off;
! select 'a\\bcd' as f1, 'a\\b\'cd' as f2, 'a\\b\'''cd' as f3, 'abcd\\' as f4, 'ab\\\'cd' as f5, '\\\\' as f6;
! f1 | f2 | f3 | f4 | f5 | f6
! -------+--------+---------+-------+--------+----
! a\bcd | a\b'cd | a\b''cd | abcd\ | ab\'cd | \\
! (1 row)
!
! --
! -- Additional string functions
! --
! SELECT initcap('hi THOMAS');
! initcap
! -----------
! Hi Thomas
! (1 row)
!
! SELECT lpad('hi', 5, 'xy');
! lpad
! -------
! xyxhi
! (1 row)
!
! SELECT lpad('hi', 5);
! lpad
! -------
! hi
! (1 row)
!
! SELECT lpad('hi', -5, 'xy');
! lpad
! ------
!
! (1 row)
!
! SELECT lpad('hello', 2);
! lpad
! ------
! he
! (1 row)
!
! SELECT lpad('hi', 5, '');
! lpad
! ------
! hi
! (1 row)
!
! SELECT rpad('hi', 5, 'xy');
! rpad
! -------
! hixyx
! (1 row)
!
! SELECT rpad('hi', 5);
! rpad
! -------
! hi
! (1 row)
!
! SELECT rpad('hi', -5, 'xy');
! rpad
! ------
!
! (1 row)
!
! SELECT rpad('hello', 2);
! rpad
! ------
! he
! (1 row)
!
! SELECT rpad('hi', 5, '');
! rpad
! ------
! hi
! (1 row)
!
! SELECT ltrim('zzzytrim', 'xyz');
! ltrim
! -------
! trim
! (1 row)
!
! SELECT translate('', '14', 'ax');
! translate
! -----------
!
! (1 row)
!
! SELECT translate('12345', '14', 'ax');
! translate
! -----------
! a23x5
! (1 row)
!
! SELECT ascii('x');
! ascii
! -------
! 120
! (1 row)
!
! SELECT ascii('');
! ascii
! -------
! 0
! (1 row)
!
! SELECT chr(65);
! chr
! -----
! A
! (1 row)
!
! SELECT chr(0);
! ERROR: null character not permitted
! SELECT repeat('Pg', 4);
! repeat
! ----------
! PgPgPgPg
! (1 row)
!
! SELECT repeat('Pg', -4);
! repeat
! --------
!
! (1 row)
!
! SELECT trim(E'\\000'::bytea from E'\\000Tom\\000'::bytea);
! btrim
! -------
! Tom
! (1 row)
!
! SELECT btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea);
! btrim
! -------
! trim
! (1 row)
!
! SELECT btrim(''::bytea, E'\\000'::bytea);
! btrim
! -------
!
! (1 row)
!
! SELECT btrim(E'\\000trim\\000'::bytea, ''::bytea);
! btrim
! --------------
! \000trim\000
! (1 row)
!
! SELECT encode(overlay(E'Th\\000omas'::bytea placing E'Th\\001omas'::bytea from 2),'escape');
! encode
! -------------
! TTh\x01omas
! (1 row)
!
! SELECT encode(overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 8),'escape');
! encode
! --------------------
! Th\000omas\x02\x03
! (1 row)
!
! SELECT encode(overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 5 for 3),'escape');
! encode
! -----------------
! Th\000o\x02\x03
! (1 row)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/numerology.out 2016-04-02 21:48:12.925449020 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/numerology.out 2016-04-04 03:18:30.769126557 +0000
***************
*** 1,136 ****
! --
! -- NUMEROLOGY
! -- Test various combinations of numeric types and functions.
! --
! --
! -- Test implicit type conversions
! -- This fails for Postgres v6.1 (and earlier?)
! -- so let's try explicit conversions for now - tgl 97/05/07
! --
! CREATE TABLE TEMP_FLOAT (f1 FLOAT8);
! INSERT INTO TEMP_FLOAT (f1)
! SELECT float8(f1) FROM INT4_TBL;
! INSERT INTO TEMP_FLOAT (f1)
! SELECT float8(f1) FROM INT2_TBL;
! SELECT '' AS ten, f1 FROM TEMP_FLOAT
! ORDER BY f1;
! ten | f1
! -----+-------------
! | -2147483647
! | -123456
! | -32767
! | -1234
! | 0
! | 0
! | 1234
! | 32767
! | 123456
! | 2147483647
! (10 rows)
!
! -- int4
! CREATE TABLE TEMP_INT4 (f1 INT4);
! INSERT INTO TEMP_INT4 (f1)
! SELECT int4(f1) FROM FLOAT8_TBL
! WHERE (f1 > -2147483647) AND (f1 < 2147483647);
! INSERT INTO TEMP_INT4 (f1)
! SELECT int4(f1) FROM INT2_TBL;
! SELECT '' AS nine, f1 FROM TEMP_INT4
! ORDER BY f1;
! nine | f1
! ------+--------
! | -32767
! | -1234
! | -1004
! | -35
! | 0
! | 0
! | 0
! | 1234
! | 32767
! (9 rows)
!
! -- int2
! CREATE TABLE TEMP_INT2 (f1 INT2);
! INSERT INTO TEMP_INT2 (f1)
! SELECT int2(f1) FROM FLOAT8_TBL
! WHERE (f1 >= -32767) AND (f1 <= 32767);
! INSERT INTO TEMP_INT2 (f1)
! SELECT int2(f1) FROM INT4_TBL
! WHERE (f1 >= -32767) AND (f1 <= 32767);
! SELECT '' AS five, f1 FROM TEMP_INT2
! ORDER BY f1;
! five | f1
! ------+-------
! | -1004
! | -35
! | 0
! | 0
! | 0
! (5 rows)
!
! --
! -- Group-by combinations
! --
! CREATE TABLE TEMP_GROUP (f1 INT4, f2 INT4, f3 FLOAT8);
! INSERT INTO TEMP_GROUP
! SELECT 1, (- i.f1), (- f.f1)
! FROM INT4_TBL i, FLOAT8_TBL f;
! INSERT INTO TEMP_GROUP
! SELECT 2, i.f1, f.f1
! FROM INT4_TBL i, FLOAT8_TBL f;
! SELECT DISTINCT f1 AS two FROM TEMP_GROUP ORDER BY 1;
! two
! -----
! 1
! 2
! (2 rows)
!
! SELECT f1 AS two, max(f3) AS max_float, min(f3) as min_float
! FROM TEMP_GROUP
! GROUP BY f1
! ORDER BY two, max_float, min_float;
! two | max_float | min_float
! -----+----------------------+-----------------------
! 1 | 1.2345678901234e+200 | -0
! 2 | 0 | -1.2345678901234e+200
! (2 rows)
!
! -- GROUP BY a result column name is not legal per SQL92, but we accept it
! -- anyway (if the name is not the name of any column exposed by FROM).
! SELECT f1 AS two, max(f3) AS max_float, min(f3) AS min_float
! FROM TEMP_GROUP
! GROUP BY two
! ORDER BY two, max_float, min_float;
! two | max_float | min_float
! -----+----------------------+-----------------------
! 1 | 1.2345678901234e+200 | -0
! 2 | 0 | -1.2345678901234e+200
! (2 rows)
!
! SELECT f1 AS two, (max(f3) + 1) AS max_plus_1, (min(f3) - 1) AS min_minus_1
! FROM TEMP_GROUP
! GROUP BY f1
! ORDER BY two, min_minus_1;
! two | max_plus_1 | min_minus_1
! -----+----------------------+-----------------------
! 1 | 1.2345678901234e+200 | -1
! 2 | 1 | -1.2345678901234e+200
! (2 rows)
!
! SELECT f1 AS two,
! max(f2) + min(f2) AS max_plus_min,
! min(f3) - 1 AS min_minus_1
! FROM TEMP_GROUP
! GROUP BY f1
! ORDER BY two, min_minus_1;
! two | max_plus_min | min_minus_1
! -----+--------------+-----------------------
! 1 | 0 | -1
! 2 | 0 | -1.2345678901234e+200
! (2 rows)
!
! DROP TABLE TEMP_INT2;
! DROP TABLE TEMP_INT4;
! DROP TABLE TEMP_FLOAT;
! DROP TABLE TEMP_GROUP;
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/point.out 2016-04-02 21:48:12.928545495 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/point.out 2016-04-04 03:18:30.804847264 +0000
***************
*** 1,299 ****
! --
! -- POINT
! --
! -- Postgres-XL case: point type cannot use ORDER BY so table
! -- is replicated for regression tests whatever the cluster configuration
! CREATE TABLE POINT_TBL(f1 point) DISTRIBUTE BY REPLICATION;
! INSERT INTO POINT_TBL(f1) VALUES ('(0.0,0.0)');
! INSERT INTO POINT_TBL(f1) VALUES ('(-10.0,0.0)');
! INSERT INTO POINT_TBL(f1) VALUES ('(-3.0,4.0)');
! INSERT INTO POINT_TBL(f1) VALUES ('(5.1, 34.5)');
! INSERT INTO POINT_TBL(f1) VALUES ('(-5.0,-12.0)');
! -- bad format points
! INSERT INTO POINT_TBL(f1) VALUES ('asdfasdf');
! ERROR: invalid input syntax for type point: "asdfasdf"
! LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('asdfasdf');
! ^
! INSERT INTO POINT_TBL(f1) VALUES ('10.0,10.0');
! INSERT INTO POINT_TBL(f1) VALUES ('(10.0 10.0)');
! ERROR: invalid input syntax for type point: "(10.0 10.0)"
! LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('(10.0 10.0)');
! ^
! INSERT INTO POINT_TBL(f1) VALUES ('(10.0,10.0');
! ERROR: invalid input syntax for type point: "(10.0,10.0"
! LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('(10.0,10.0');
! ^
! SELECT '' AS six, * FROM POINT_TBL;
! six | f1
! -----+------------
! | (0,0)
! | (-10,0)
! | (-3,4)
! | (5.1,34.5)
! | (-5,-12)
! | (10,10)
! (6 rows)
!
! -- left of
! SELECT '' AS three, p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)' ORDER BY p.f1[0], p.f1[1];
! three | f1
! -------+----------
! | (-10,0)
! | (-5,-12)
! | (-3,4)
! (3 rows)
!
! -- right of
! SELECT '' AS three, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1 ORDER BY p.f1[0], p.f1[1];
! three | f1
! -------+----------
! | (-10,0)
! | (-5,-12)
! | (-3,4)
! (3 rows)
!
! -- above
! SELECT '' AS one, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >^ p.f1 ORDER BY p.f1[0], p.f1[1];
! one | f1
! -----+----------
! | (-5,-12)
! (1 row)
!
! -- below
! SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 <^ '(0.0, 0.0)' ORDER BY p.f1[0], p.f1[1];
! one | f1
! -----+----------
! | (-5,-12)
! (1 row)
!
! -- equal
! SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)' ORDER BY p.f1[0], p.f1[1];
! one | f1
! -----+------------
! | (5.1,34.5)
! (1 row)
!
! -- point in box
! SELECT '' AS three, p.* FROM POINT_TBL p
! WHERE p.f1 <@ box '(0,0,100,100)' ORDER BY p.f1[0], p.f1[1];
! three | f1
! -------+------------
! | (0,0)
! | (5.1,34.5)
! | (10,10)
! (3 rows)
!
! SELECT '' AS three, p.* FROM POINT_TBL p
! WHERE box '(0,0,100,100)' @> p.f1;
! three | f1
! -------+------------
! | (0,0)
! | (5.1,34.5)
! | (10,10)
! (3 rows)
!
! SELECT '' AS three, p.* FROM POINT_TBL p
! WHERE not p.f1 <@ box '(0,0,100,100)';
! three | f1
! -------+----------
! | (-10,0)
! | (-3,4)
! | (-5,-12)
! (3 rows)
!
! SELECT '' AS two, p.* FROM POINT_TBL p
! WHERE p.f1 <@ path '[(0,0),(-10,0),(-10,10)]' ORDER BY p.f1[0], p.f1[1];
! two | f1
! -----+---------
! | (-10,0)
! | (0,0)
! (2 rows)
!
! SELECT '' AS three, p.* FROM POINT_TBL p
! WHERE not box '(0,0,100,100)' @> p.f1;
! three | f1
! -------+----------
! | (-10,0)
! | (-3,4)
! | (-5,-12)
! (3 rows)
!
! SELECT '' AS six, p.f1, p.f1 <-> point '(0,0)' AS dist
! FROM POINT_TBL p
! ORDER BY dist, p.f1[0], p.f1[1];
! six | f1 | dist
! -----+------------+------------------
! | (0,0) | 0
! | (-3,4) | 5
! | (-10,0) | 10
! | (-5,-12) | 13
! | (10,10) | 14.142135623731
! | (5.1,34.5) | 34.8749193547455
! (6 rows)
!
! SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dist
! FROM POINT_TBL p1, POINT_TBL p2
! ORDER BY dist, p1.f1[0], p2.f1[0];
! thirtysix | point1 | point2 | dist
! -----------+------------+------------+------------------
! | (-10,0) | (-10,0) | 0
! | (-5,-12) | (-5,-12) | 0
! | (-3,4) | (-3,4) | 0
! | (0,0) | (0,0) | 0
! | (5.1,34.5) | (5.1,34.5) | 0
! | (10,10) | (10,10) | 0
! | (-3,4) | (0,0) | 5
! | (0,0) | (-3,4) | 5
! | (-10,0) | (-3,4) | 8.06225774829855
! | (-3,4) | (-10,0) | 8.06225774829855
! | (-10,0) | (0,0) | 10
! | (0,0) | (-10,0) | 10
! | (-10,0) | (-5,-12) | 13
! | (-5,-12) | (-10,0) | 13
! | (-5,-12) | (0,0) | 13
! | (0,0) | (-5,-12) | 13
! | (0,0) | (10,10) | 14.142135623731
! | (10,10) | (0,0) | 14.142135623731
! | (-3,4) | (10,10) | 14.3178210632764
! | (10,10) | (-3,4) | 14.3178210632764
! | (-5,-12) | (-3,4) | 16.1245154965971
! | (-3,4) | (-5,-12) | 16.1245154965971
! | (-10,0) | (10,10) | 22.3606797749979
! | (10,10) | (-10,0) | 22.3606797749979
! | (5.1,34.5) | (10,10) | 24.9851956166046
! | (10,10) | (5.1,34.5) | 24.9851956166046
! | (-5,-12) | (10,10) | 26.6270539113887
! | (10,10) | (-5,-12) | 26.6270539113887
! | (-3,4) | (5.1,34.5) | 31.5572495632937
! | (5.1,34.5) | (-3,4) | 31.5572495632937
! | (0,0) | (5.1,34.5) | 34.8749193547455
! | (5.1,34.5) | (0,0) | 34.8749193547455
! | (-10,0) | (5.1,34.5) | 37.6597928831267
! | (5.1,34.5) | (-10,0) | 37.6597928831267
! | (-5,-12) | (5.1,34.5) | 47.5842410888311
! | (5.1,34.5) | (-5,-12) | 47.5842410888311
! (36 rows)
!
! SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
! FROM POINT_TBL p1, POINT_TBL p2
! WHERE (p1.f1 <-> p2.f1) > 3 ORDER BY p1.f1[0], p1.f1[1], p2.f1[0], p2.f1[1];
! thirty | point1 | point2
! --------+------------+------------
! | (-10,0) | (-5,-12)
! | (-10,0) | (-3,4)
! | (-10,0) | (0,0)
! | (-10,0) | (5.1,34.5)
! | (-10,0) | (10,10)
! | (-5,-12) | (-10,0)
! | (-5,-12) | (-3,4)
! | (-5,-12) | (0,0)
! | (-5,-12) | (5.1,34.5)
! | (-5,-12) | (10,10)
! | (-3,4) | (-10,0)
! | (-3,4) | (-5,-12)
! | (-3,4) | (0,0)
! | (-3,4) | (5.1,34.5)
! | (-3,4) | (10,10)
! | (0,0) | (-10,0)
! | (0,0) | (-5,-12)
! | (0,0) | (-3,4)
! | (0,0) | (5.1,34.5)
! | (0,0) | (10,10)
! | (5.1,34.5) | (-10,0)
! | (5.1,34.5) | (-5,-12)
! | (5.1,34.5) | (-3,4)
! | (5.1,34.5) | (0,0)
! | (5.1,34.5) | (10,10)
! | (10,10) | (-10,0)
! | (10,10) | (-5,-12)
! | (10,10) | (-3,4)
! | (10,10) | (0,0)
! | (10,10) | (5.1,34.5)
! (30 rows)
!
! -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10
! SELECT '' AS fifteen, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance
! FROM POINT_TBL p1, POINT_TBL p2
! WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1
! ORDER BY distance, p1.f1[0], p2.f1[0];
! fifteen | point1 | point2 | distance
! ---------+------------+------------+------------------
! | (-3,4) | (0,0) | 5
! | (-10,0) | (-3,4) | 8.06225774829855
! | (-10,0) | (0,0) | 10
! | (-10,0) | (-5,-12) | 13
! | (-5,-12) | (0,0) | 13
! | (0,0) | (10,10) | 14.142135623731
! | (-3,4) | (10,10) | 14.3178210632764
! | (-5,-12) | (-3,4) | 16.1245154965971
! | (-10,0) | (10,10) | 22.3606797749979
! | (5.1,34.5) | (10,10) | 24.9851956166046
! | (-5,-12) | (10,10) | 26.6270539113887
! | (-3,4) | (5.1,34.5) | 31.5572495632937
! | (0,0) | (5.1,34.5) | 34.8749193547455
! | (-10,0) | (5.1,34.5) | 37.6597928831267
! | (-5,-12) | (5.1,34.5) | 47.5842410888311
! (15 rows)
!
! -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10
! SELECT '' AS three, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance
! FROM POINT_TBL p1, POINT_TBL p2
! WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 >^ p2.f1
! ORDER BY distance, p1.f1[0], p1.f1[1], p2.f1[0], p2.f1[1];
! three | point1 | point2 | distance
! -------+------------+----------+------------------
! | (-3,4) | (0,0) | 5
! | (-10,0) | (-5,-12) | 13
! | (5.1,34.5) | (10,10) | 24.9851956166046
! (3 rows)
!
! -- Test that GiST indexes provide same behavior as sequential scan
! CREATE TEMP TABLE point_gist_tbl(f1 point);
! INSERT INTO point_gist_tbl SELECT '(0,0)' FROM generate_series(0,1000);
! CREATE INDEX point_gist_tbl_index ON point_gist_tbl USING gist (f1);
! INSERT INTO point_gist_tbl VALUES ('(0.0000009,0.0000009)');
! SET enable_seqscan TO true;
! SET enable_indexscan TO false;
! SET enable_bitmapscan TO false;
! SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000009,0.0000009)'::point;
! count
! -------
! 1002
! (1 row)
!
! SELECT COUNT(*) FROM point_gist_tbl WHERE f1 <@ '(0.0000009,0.0000009),(0.0000009,0.0000009)'::box;
! count
! -------
! 1
! (1 row)
!
! SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000018,0.0000018)'::point;
! count
! -------
! 1
! (1 row)
!
! SET enable_seqscan TO false;
! SET enable_indexscan TO true;
! SET enable_bitmapscan TO true;
! SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000009,0.0000009)'::point;
! count
! -------
! 1002
! (1 row)
!
! SELECT COUNT(*) FROM point_gist_tbl WHERE f1 <@ '(0.0000009,0.0000009),(0.0000009,0.0000009)'::box;
! count
! -------
! 1
! (1 row)
!
! SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000018,0.0000018)'::point;
! count
! -------
! 1
! (1 row)
!
! RESET enable_seqscan;
! RESET enable_indexscan;
! RESET enable_bitmapscan;
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/lseg.out 2016-04-02 21:48:12.923306271 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/lseg.out 2016-04-04 03:18:30.825044913 +0000
***************
*** 1,52 ****
! --
! -- LSEG
! -- Line segments
! --
! --DROP TABLE LSEG_TBL;
! CREATE TABLE LSEG_TBL (s lseg);
! INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)]');
! INSERT INTO LSEG_TBL VALUES ('(0,0),(6,6)');
! INSERT INTO LSEG_TBL VALUES ('10,-10 ,-3,-4');
! INSERT INTO LSEG_TBL VALUES ('[-1e6,2e2,3e5, -4e1]');
! INSERT INTO LSEG_TBL VALUES ('(11,22,33,44)');
! -- bad values for parser testing
! INSERT INTO LSEG_TBL VALUES ('(3asdf,2 ,3,4r2)');
! ERROR: invalid input syntax for type lseg: "(3asdf,2 ,3,4r2)"
! LINE 1: INSERT INTO LSEG_TBL VALUES ('(3asdf,2 ,3,4r2)');
! ^
! INSERT INTO LSEG_TBL VALUES ('[1,2,3, 4');
! ERROR: invalid input syntax for type lseg: "[1,2,3, 4"
! LINE 1: INSERT INTO LSEG_TBL VALUES ('[1,2,3, 4');
! ^
! INSERT INTO LSEG_TBL VALUES ('[(,2),(3,4)]');
! ERROR: invalid input syntax for type lseg: "[(,2),(3,4)]"
! LINE 1: INSERT INTO LSEG_TBL VALUES ('[(,2),(3,4)]');
! ^
! INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)');
! ERROR: invalid input syntax for type lseg: "[(1,2),(3,4)"
! LINE 1: INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)');
! ^
! select * from LSEG_TBL ORDER BY (s[0])[0], (s[0])[1];
! s
! -------------------------------
! [(-1000000,200),(300000,-40)]
! [(0,0),(6,6)]
! [(1,2),(3,4)]
! [(10,-10),(-3,-4)]
! [(11,22),(33,44)]
! (5 rows)
!
! SELECT * FROM LSEG_TBL WHERE s <= lseg '[(1,2),(3,4)]' ORDER BY (s[0])[0], (s[0])[1];
! s
! ---------------
! [(1,2),(3,4)]
! (1 row)
!
! SELECT * FROM LSEG_TBL WHERE (s <-> lseg '[(1,2),(3,4)]') < 10 ORDER BY (s[0])[0], (s[0])[1];
! s
! --------------------
! [(0,0),(6,6)]
! [(1,2),(3,4)]
! [(10,-10),(-3,-4)]
! (3 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/line.out 2016-04-02 21:48:12.923204718 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/line.out 2016-04-04 03:18:30.854096211 +0000
***************
*** 1,271 ****
! --
! -- LINE
! -- Infinite lines
! --
! --DROP TABLE LINE_TBL;
! CREATE TABLE LINE_TBL (s line);
! INSERT INTO LINE_TBL VALUES ('{1,-1,1}');
! INSERT INTO LINE_TBL VALUES ('(0,0),(6,6)');
! INSERT INTO LINE_TBL VALUES ('10,-10 ,-5,-4');
! INSERT INTO LINE_TBL VALUES ('[-1e6,2e2,3e5, -4e1]');
! INSERT INTO LINE_TBL VALUES ('(11,22,33,44)');
! INSERT INTO LINE_TBL VALUES ('[(1,0),(1,0)]');
! ERROR: invalid line specification: must be two distinct points
! LINE 1: INSERT INTO LINE_TBL VALUES ('[(1,0),(1,0)]');
! ^
! -- horizontal
! INSERT INTO LINE_TBL VALUES ('[(1,3),(2,3)]');
! -- vertical
! INSERT INTO LINE_TBL VALUES ('[(3,1),(3,2)]');
! -- bad values for parser testing
! INSERT INTO LINE_TBL VALUES ('{0,0,1}');
! ERROR: invalid line specification: A and B cannot both be zero
! LINE 1: INSERT INTO LINE_TBL VALUES ('{0,0,1}');
! ^
! INSERT INTO LINE_TBL VALUES ('(3asdf,2 ,3,4r2)');
! ERROR: invalid input syntax for type line: "(3asdf,2 ,3,4r2)"
! LINE 1: INSERT INTO LINE_TBL VALUES ('(3asdf,2 ,3,4r2)');
! ^
! INSERT INTO LINE_TBL VALUES ('[1,2,3, 4');
! ERROR: invalid input syntax for type line: "[1,2,3, 4"
! LINE 1: INSERT INTO LINE_TBL VALUES ('[1,2,3, 4');
! ^
! INSERT INTO LINE_TBL VALUES ('[(,2),(3,4)]');
! ERROR: invalid input syntax for type line: "[(,2),(3,4)]"
! LINE 1: INSERT INTO LINE_TBL VALUES ('[(,2),(3,4)]');
! ^
! INSERT INTO LINE_TBL VALUES ('[(1,2),(3,4)');
! ERROR: invalid input syntax for type line: "[(1,2),(3,4)"
! LINE 1: INSERT INTO LINE_TBL VALUES ('[(1,2),(3,4)');
! ^
! select * from LINE_TBL;
! s
! ---------------------------------------------
! {1,-1,1}
! {1,-1,0}
! {-0.4,-1,-6}
! {-0.000184615384615385,-1,15.3846153846154}
! {1,-1,11}
! {0,-1,3}
! {-1,0,3}
! (7 rows)
!
! -- functions and operators
! SELECT * FROM LINE_TBL WHERE (s <-> line '[(1,2),(3,4)]') < 10;
! s
! ---------------------------------------------
! {1,-1,1}
! {1,-1,0}
! {-0.4,-1,-6}
! {-0.000184615384615385,-1,15.3846153846154}
! {1,-1,11}
! {0,-1,3}
! {-1,0,3}
! (7 rows)
!
! SELECT * FROM LINE_TBL WHERE (point '(0.1,0.1)' <-> s) < 1;
! s
! ----------
! {1,-1,1}
! {1,-1,0}
! (2 rows)
!
! SELECT * FROM LINE_TBL WHERE (lseg '[(0.1,0.1),(0.2,0.2)]' <-> s) < 1;
! s
! ----------
! {1,-1,1}
! {1,-1,0}
! (2 rows)
!
! SELECT line '[(1,1),(2,1)]' <-> line '[(-1,-1),(-2,-1)]';
! ?column?
! ----------
! 2
! (1 row)
!
! SELECT lseg '[(1,1),(2,1)]' <-> line '[(-1,-1),(-2,-1)]';
! ?column?
! ----------
! 2
! (1 row)
!
! SELECT point '(-1,1)' <-> line '[(-3,0),(-4,0)]';
! ?column?
! ----------
! 1
! (1 row)
!
! SELECT lseg '[(1,1),(5,5)]' ?# line '[(2,0),(0,2)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT lseg '[(1,1),(5,5)]' ?# line '[(0,0),(1,0)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT line '[(0,0),(1,1)]' ?# box '(0,0,2,2)'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT line '[(3,0),(4,1)]' ?# box '(0,0,2,2)'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT point '(1,1)' <@ line '[(0,0),(2,2)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT point '(1,1)' <@ line '[(0,0),(1,0)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT point '(1,1)' @ line '[(0,0),(2,2)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT point '(1,1)' @ line '[(0,0),(1,0)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT lseg '[(1,1),(2,2)]' <@ line '[(0,0),(2,2)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT lseg '[(1,1),(2,1)]' <@ line '[(0,0),(1,0)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT lseg '[(1,1),(2,2)]' @ line '[(0,0),(2,2)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT lseg '[(1,1),(2,1)]' @ line '[(0,0),(1,0)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT point '(0,1)' ## line '[(0,0),(1,1)]';
! ?column?
! -----------
! (0.5,0.5)
! (1 row)
!
! SELECT line '[(0,0),(1,1)]' ## lseg '[(1,0),(2,0)]';
! ?column?
! ----------
! (1,0)
! (1 row)
!
! SELECT line '[(0,0),(1,1)]' ?# line '[(1,0),(2,1)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT line '[(0,0),(1,1)]' ?# line '[(1,0),(1,1)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT line '[(0,0),(1,1)]' # line '[(1,0),(2,1)]';
! ?column?
! ----------
!
! (1 row)
!
! SELECT line '[(0,0),(1,1)]' # line '[(1,0),(1,1)]';
! ?column?
! ----------
! (1,1)
! (1 row)
!
! SELECT line '[(0,0),(1,1)]' ?|| line '[(1,0),(2,1)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT line '[(0,0),(1,1)]' ?|| line '[(1,0),(1,1)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT line '[(0,0),(1,0)]' ?-| line '[(0,0),(0,1)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT line '[(0,0),(1,1)]' ?-| line '[(1,0),(1,1)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT ?- line '[(0,0),(1,0)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT ?- line '[(0,0),(1,1)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT ?| line '[(0,0),(0,1)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT ?| line '[(0,0),(1,1)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT line(point '(1,2)', point '(3,4)');
! line
! ----------
! {1,-1,1}
! (1 row)
!
! SELECT line '[(1,2),(3,4)]' = line '[(3,4),(4,5)]'; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT line '[(1,2),(3,4)]' = line '[(3,4),(4,4)]'; -- false
! ?column?
! ----------
! f
! (1 row)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/box.out 2016-04-02 21:48:12.912274758 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/box.out 2016-04-04 03:18:30.874063108 +0000
***************
*** 1,218 ****
! --
! -- BOX
! --
! --
! -- box logic
! -- o
! -- 3 o--|X
! -- | o|
! -- 2 +-+-+ |
! -- | | | |
! -- 1 | o-+-o
! -- | |
! -- 0 +---+
! --
! -- 0 1 2 3
! --
! -- boxes are specified by two points, given by four floats x1,y1,x2,y2
! CREATE TABLE BOX_TBL (f1 box);
! INSERT INTO BOX_TBL (f1) VALUES ('(2.0,2.0,0.0,0.0)');
! INSERT INTO BOX_TBL (f1) VALUES ('(1.0,1.0,3.0,3.0)');
! -- degenerate cases where the box is a line or a point
! -- note that lines and points boxes all have zero area
! INSERT INTO BOX_TBL (f1) VALUES ('(2.5, 2.5, 2.5,3.5)');
! INSERT INTO BOX_TBL (f1) VALUES ('(3.0, 3.0,3.0,3.0)');
! -- badly formatted box inputs
! INSERT INTO BOX_TBL (f1) VALUES ('(2.3, 4.5)');
! ERROR: invalid input syntax for type box: "(2.3, 4.5)"
! LINE 1: INSERT INTO BOX_TBL (f1) VALUES ('(2.3, 4.5)');
! ^
! INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad');
! ERROR: invalid input syntax for type box: "asdfasdf(ad"
! LINE 1: INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad');
! ^
! SELECT '' AS four, * FROM BOX_TBL;
! four | f1
! ------+---------------------
! | (2,2),(0,0)
! | (3,3),(1,1)
! | (2.5,3.5),(2.5,2.5)
! | (3,3),(3,3)
! (4 rows)
!
! SELECT '' AS four, b.*, area(b.f1) as barea
! FROM BOX_TBL b ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! four | f1 | barea
! ------+---------------------+-------
! | (2,2),(0,0) | 4
! | (2.5,3.5),(2.5,2.5) | 0
! | (3,3),(1,1) | 4
! | (3,3),(3,3) | 0
! (4 rows)
!
! -- overlap
! SELECT '' AS three, b.f1
! FROM BOX_TBL b
! WHERE b.f1 && box '(2.5,2.5,1.0,1.0)' ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! three | f1
! -------+---------------------
! | (2,2),(0,0)
! | (2.5,3.5),(2.5,2.5)
! | (3,3),(1,1)
! (3 rows)
!
! -- left-or-overlap (x only)
! SELECT '' AS two, b1.*
! FROM BOX_TBL b1
! WHERE b1.f1 &< box '(2.0,2.0,2.5,2.5)' ORDER BY (b1.f1[0])[0], (b1.f1[0])[1], (b1.f1[2])[0], (b1.f1[2])[1];
! two | f1
! -----+---------------------
! | (2,2),(0,0)
! | (2.5,3.5),(2.5,2.5)
! (2 rows)
!
! -- right-or-overlap (x only)
! SELECT '' AS two, b1.*
! FROM BOX_TBL b1
! WHERE b1.f1 &> box '(2.0,2.0,2.5,2.5)' ORDER BY (b1.f1[0])[0], (b1.f1[0])[1], (b1.f1[2])[0], (b1.f1[2])[1];
! two | f1
! -----+---------------------
! | (2.5,3.5),(2.5,2.5)
! | (3,3),(3,3)
! (2 rows)
!
! -- left of
! SELECT '' AS two, b.f1
! FROM BOX_TBL b
! WHERE b.f1 << box '(3.0,3.0,5.0,5.0)' ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! two | f1
! -----+---------------------
! | (2,2),(0,0)
! | (2.5,3.5),(2.5,2.5)
! (2 rows)
!
! -- area <=
! SELECT '' AS four, b.f1
! FROM BOX_TBL b
! WHERE b.f1 <= box '(3.0,3.0,5.0,5.0)' ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! four | f1
! ------+---------------------
! | (2,2),(0,0)
! | (2.5,3.5),(2.5,2.5)
! | (3,3),(1,1)
! | (3,3),(3,3)
! (4 rows)
!
! -- area <
! SELECT '' AS two, b.f1
! FROM BOX_TBL b
! WHERE b.f1 < box '(3.0,3.0,5.0,5.0)' ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! two | f1
! -----+---------------------
! | (2.5,3.5),(2.5,2.5)
! | (3,3),(3,3)
! (2 rows)
!
! -- area =
! SELECT '' AS two, b.f1
! FROM BOX_TBL b
! WHERE b.f1 = box '(3.0,3.0,5.0,5.0)' ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! two | f1
! -----+-------------
! | (2,2),(0,0)
! | (3,3),(1,1)
! (2 rows)
!
! -- area >
! SELECT '' AS two, b.f1
! FROM BOX_TBL b -- zero area
! WHERE b.f1 > box '(3.5,3.0,4.5,3.0)' ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! two | f1
! -----+-------------
! | (2,2),(0,0)
! | (3,3),(1,1)
! (2 rows)
!
! -- area >=
! SELECT '' AS four, b.f1
! FROM BOX_TBL b -- zero area
! WHERE b.f1 >= box '(3.5,3.0,4.5,3.0)' ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! four | f1
! ------+---------------------
! | (2,2),(0,0)
! | (2.5,3.5),(2.5,2.5)
! | (3,3),(1,1)
! | (3,3),(3,3)
! (4 rows)
!
! -- right of
! SELECT '' AS two, b.f1
! FROM BOX_TBL b
! WHERE box '(3.0,3.0,5.0,5.0)' >> b.f1 ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! two | f1
! -----+---------------------
! | (2,2),(0,0)
! | (2.5,3.5),(2.5,2.5)
! (2 rows)
!
! -- contained in
! SELECT '' AS three, b.f1
! FROM BOX_TBL b
! WHERE b.f1 <@ box '(0,0,3,3)' ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! three | f1
! -------+-------------
! | (2,2),(0,0)
! | (3,3),(1,1)
! | (3,3),(3,3)
! (3 rows)
!
! -- contains
! SELECT '' AS three, b.f1
! FROM BOX_TBL b
! WHERE box '(0,0,3,3)' @> b.f1 ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! three | f1
! -------+-------------
! | (2,2),(0,0)
! | (3,3),(1,1)
! | (3,3),(3,3)
! (3 rows)
!
! -- box equality
! SELECT '' AS one, b.f1
! FROM BOX_TBL b
! WHERE box '(1,1,3,3)' ~= b.f1 ORDER BY (b.f1[0])[0], (b.f1[0])[1], (b.f1[2])[0], (b.f1[2])[1];
! one | f1
! -----+-------------
! | (3,3),(1,1)
! (1 row)
!
! -- center of box, left unary operator
! SELECT '' AS four, @@(b1.f1) AS p
! FROM BOX_TBL b1 ORDER BY (b1.f1[0])[0], (b1.f1[0])[1], (b1.f1[2])[0], (b1.f1[2])[1];
! four | p
! ------+---------
! | (1,1)
! | (2.5,3)
! | (2,2)
! | (3,3)
! (4 rows)
!
! -- wholly-contained
! SELECT '' AS one, b1.*, b2.*
! FROM BOX_TBL b1, BOX_TBL b2
! WHERE b1.f1 @> b2.f1 and not b1.f1 ~= b2.f1
! ORDER BY (b1.f1[0])[0], (b1.f1[0])[1], (b1.f1[2])[0], (b1.f1[2])[1], (b2.f1[0])[0], (b2.f1[0])[1], (b2.f1[2])[0], (b2.f1[2])[1];
! one | f1 | f1
! -----+-------------+-------------
! | (3,3),(1,1) | (3,3),(3,3)
! (1 row)
!
! SELECT '' AS four, height(f1), width(f1) FROM BOX_TBL ORDER BY (f1[0])[0], (f1[0])[1], (f1[2])[0], (f1[2])[1];
! four | height | width
! ------+--------+-------
! | 2 | 2
! | 1 | 0
! | 2 | 2
! | 0 | 0
! (4 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/path.out 2016-04-02 21:48:12.926284943 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/path.out 2016-04-04 03:18:30.917215850 +0000
***************
*** 1,79 ****
! --
! -- PATH
! --
! --DROP TABLE PATH_TBL;
! CREATE TABLE PATH_TBL (ID int, f1 path);
! INSERT INTO PATH_TBL VALUES (1,'[(1,2),(3,4)]');
! INSERT INTO PATH_TBL VALUES (2,'((1,2),(3,4))');
! INSERT INTO PATH_TBL VALUES (3,'[(0,0),(3,0),(4,5),(1,6)]');
! INSERT INTO PATH_TBL VALUES (4, '((1,2),(3,4))');
! INSERT INTO PATH_TBL VALUES (5, '1,2 ,3,4');
! INSERT INTO PATH_TBL VALUES (6, '[1,2,3, 4]');
! INSERT INTO PATH_TBL VALUES (7, '[11,12,13,14]');
! INSERT INTO PATH_TBL VALUES (8, '(11,12,13,14)');
! -- bad values for parser testing
! INSERT INTO PATH_TBL VALUES (9, '[(,2),(3,4)]');
! ERROR: invalid input syntax for type path: "[(,2),(3,4)]"
! LINE 1: INSERT INTO PATH_TBL VALUES (9, '[(,2),(3,4)]');
! ^
! INSERT INTO PATH_TBL VALUES (10, '[(1,2),(3,4)');
! ERROR: invalid input syntax for type path: "[(1,2),(3,4)"
! LINE 1: INSERT INTO PATH_TBL VALUES (10, '[(1,2),(3,4)');
! ^
! SELECT f1 FROM PATH_TBL ORDER BY ID;
! f1
! ---------------------------
! [(1,2),(3,4)]
! ((1,2),(3,4))
! [(0,0),(3,0),(4,5),(1,6)]
! ((1,2),(3,4))
! ((1,2),(3,4))
! [(1,2),(3,4)]
! [(11,12),(13,14)]
! ((11,12),(13,14))
! (8 rows)
!
! SELECT '' AS count, f1 AS open_path FROM PATH_TBL WHERE isopen(f1) ORDER BY ID;
! count | open_path
! -------+---------------------------
! | [(1,2),(3,4)]
! | [(0,0),(3,0),(4,5),(1,6)]
! | [(1,2),(3,4)]
! | [(11,12),(13,14)]
! (4 rows)
!
! SELECT '' AS count, f1 AS closed_path FROM PATH_TBL WHERE isclosed(f1) ORDER BY ID;
! count | closed_path
! -------+-------------------
! | ((1,2),(3,4))
! | ((1,2),(3,4))
! | ((1,2),(3,4))
! | ((11,12),(13,14))
! (4 rows)
!
! SELECT '' AS count, pclose(f1) AS closed_path FROM PATH_TBL ORDER BY ID;
! count | closed_path
! -------+---------------------------
! | ((1,2),(3,4))
! | ((1,2),(3,4))
! | ((0,0),(3,0),(4,5),(1,6))
! | ((1,2),(3,4))
! | ((1,2),(3,4))
! | ((1,2),(3,4))
! | ((11,12),(13,14))
! | ((11,12),(13,14))
! (8 rows)
!
! SELECT '' AS count, popen(f1) AS open_path FROM PATH_TBL ORDER BY ID;
! count | open_path
! -------+---------------------------
! | [(1,2),(3,4)]
! | [(1,2),(3,4)]
! | [(0,0),(3,0),(4,5),(1,6)]
! | [(1,2),(3,4)]
! | [(1,2),(3,4)]
! | [(1,2),(3,4)]
! | [(11,12),(13,14)]
! | [(11,12),(13,14)]
! (8 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/polygon.out 2016-04-02 21:48:12.928621568 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/polygon.out 2016-04-04 03:18:30.953610303 +0000
***************
*** 1,229 ****
! --
! -- POLYGON
! --
! -- polygon logic
! --
! CREATE TABLE POLYGON_TBL(ID int, f1 polygon);
! INSERT INTO POLYGON_TBL(ID,f1) VALUES (1, '(2.0,0.0),(2.0,4.0),(0.0,0.0)');
! INSERT INTO POLYGON_TBL(ID,f1) VALUES (2, '(3.0,1.0),(3.0,3.0),(1.0,0.0)');
! -- degenerate polygons
! INSERT INTO POLYGON_TBL(ID,f1) VALUES (3, '(0.0,0.0)');
! INSERT INTO POLYGON_TBL(ID,f1) VALUES (4, '(0.0,1.0),(0.0,1.0)');
! -- bad polygon input strings
! INSERT INTO POLYGON_TBL(ID,f1) VALUES (5, '0.0');
! ERROR: invalid input syntax for type polygon: "0.0"
! LINE 1: INSERT INTO POLYGON_TBL(ID,f1) VALUES (5, '0.0');
! ^
! INSERT INTO POLYGON_TBL(ID,f1) VALUES (6, '(0.0 0.0');
! ERROR: invalid input syntax for type polygon: "(0.0 0.0"
! LINE 1: INSERT INTO POLYGON_TBL(ID,f1) VALUES (6, '(0.0 0.0');
! ^
! INSERT INTO POLYGON_TBL(ID,f1) VALUES (7, '(0,1,2)');
! ERROR: invalid input syntax for type polygon: "(0,1,2)"
! LINE 1: INSERT INTO POLYGON_TBL(ID,f1) VALUES (7, '(0,1,2)');
! ^
! INSERT INTO POLYGON_TBL(ID,f1) VALUES (8, '(0,1,2,3');
! ERROR: invalid input syntax for type polygon: "(0,1,2,3"
! LINE 1: INSERT INTO POLYGON_TBL(ID,f1) VALUES (8, '(0,1,2,3');
! ^
! INSERT INTO POLYGON_TBL(ID,f1) VALUES (9, 'asdf');
! ERROR: invalid input syntax for type polygon: "asdf"
! LINE 1: INSERT INTO POLYGON_TBL(ID,f1) VALUES (9, 'asdf');
! ^
! SELECT '' AS four, * FROM POLYGON_TBL ORDER BY ID;
! four | id | f1
! ------+----+---------------------
! | 1 | ((2,0),(2,4),(0,0))
! | 2 | ((3,1),(3,3),(1,0))
! | 3 | ((0,0))
! | 4 | ((0,1),(0,1))
! (4 rows)
!
! -- overlap
! SELECT '' AS three, p.*
! FROM POLYGON_TBL p
! WHERE p.f1 && '(3.0,1.0),(3.0,3.0),(1.0,0.0)' ORDER BY ID;
! three | id | f1
! -------+----+---------------------
! | 1 | ((2,0),(2,4),(0,0))
! | 2 | ((3,1),(3,3),(1,0))
! (2 rows)
!
! -- left overlap
! SELECT '' AS four, p.*
! FROM POLYGON_TBL p
! WHERE p.f1 &< '(3.0,1.0),(3.0,3.0),(1.0,0.0)' ORDER BY ID;
! four | id | f1
! ------+----+---------------------
! | 1 | ((2,0),(2,4),(0,0))
! | 2 | ((3,1),(3,3),(1,0))
! | 3 | ((0,0))
! | 4 | ((0,1),(0,1))
! (4 rows)
!
! -- right overlap
! SELECT '' AS two, p.*
! FROM POLYGON_TBL p
! WHERE p.f1 &> '(3.0,1.0),(3.0,3.0),(1.0,0.0)' ORDER BY ID;
! two | id | f1
! -----+----+---------------------
! | 2 | ((3,1),(3,3),(1,0))
! (1 row)
!
! -- left of
! SELECT '' AS one, p.*
! FROM POLYGON_TBL p
! WHERE p.f1 << '(3.0,1.0),(3.0,3.0),(1.0,0.0)' ORDER BY ID;
! one | id | f1
! -----+----+---------------
! | 3 | ((0,0))
! | 4 | ((0,1),(0,1))
! (2 rows)
!
! -- right of
! SELECT '' AS zero, p.*
! FROM POLYGON_TBL p
! WHERE p.f1 >> '(3.0,1.0),(3.0,3.0),(1.0,0.0)' ORDER BY ID;
! zero | id | f1
! ------+----+----
! (0 rows)
!
! -- contained
! SELECT '' AS one, p.*
! FROM POLYGON_TBL p
! WHERE p.f1 <@ polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' ORDER BY ID;
! one | id | f1
! -----+----+---------------------
! | 2 | ((3,1),(3,3),(1,0))
! (1 row)
!
! -- same
! SELECT '' AS one, p.*
! FROM POLYGON_TBL p
! WHERE p.f1 ~= polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' ORDER BY ID;
! one | id | f1
! -----+----+---------------------
! | 2 | ((3,1),(3,3),(1,0))
! (1 row)
!
! -- contains
! SELECT '' AS one, p.*
! FROM POLYGON_TBL p
! WHERE p.f1 @> polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' ORDER BY ID;
! one | id | f1
! -----+----+---------------------
! | 2 | ((3,1),(3,3),(1,0))
! (1 row)
!
! --
! -- polygon logic
! --
! -- left of
! SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' << polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
! false
! -------
! f
! (1 row)
!
! -- left overlap
! SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' << polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS true;
! true
! ------
! f
! (1 row)
!
! -- right overlap
! SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' &> polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
! false
! -------
! f
! (1 row)
!
! -- right of
! SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' >> polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
! false
! -------
! f
! (1 row)
!
! -- contained in
! SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' <@ polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
! false
! -------
! f
! (1 row)
!
! -- contains
! SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' @> polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
! false
! -------
! f
! (1 row)
!
! SELECT '((0,4),(6,4),(1,2),(6,0),(0,0))'::polygon @> '((2,1),(2,3),(3,3),(3,1))'::polygon AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT '((0,4),(6,4),(3,2),(6,0),(0,0))'::polygon @> '((2,1),(2,3),(3,3),(3,1))'::polygon AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT '((1,1),(1,4),(5,4),(5,3),(2,3),(2,2),(5,2),(5,1))'::polygon @> '((3,2),(3,3),(4,3),(4,2))'::polygon AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT '((0,0),(0,3),(3,3),(3,0))'::polygon @> '((2,1),(2,2),(3,2),(3,1))'::polygon AS "true";
! true
! ------
! t
! (1 row)
!
! -- same
! SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' ~= polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
! false
! -------
! f
! (1 row)
!
! -- overlap
! SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' && polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS true;
! true
! ------
! t
! (1 row)
!
! SELECT '((0,4),(6,4),(1,2),(6,0),(0,0))'::polygon && '((2,1),(2,3),(3,3),(3,1))'::polygon AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT '((1,4),(1,1),(4,1),(4,2),(2,2),(2,4),(1,4))'::polygon && '((3,3),(4,3),(4,4),(3,4),(3,3))'::polygon AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT '((200,800),(800,800),(800,200),(200,200))' && '(1000,1000,0,0)'::polygon AS "true";
! true
! ------
! t
! (1 row)
!
! -- distance from a point
! SELECT '(0,0)'::point <-> '((0,0),(1,2),(2,1))'::polygon as on_corner,
! '(1,1)'::point <-> '((0,0),(2,2),(1,3))'::polygon as on_segment,
! '(2,2)'::point <-> '((0,0),(1,4),(3,1))'::polygon as inside,
! '(3,3)'::point <-> '((0,2),(2,0),(2,2))'::polygon as near_corner,
! '(4,4)'::point <-> '((0,0),(0,3),(4,0))'::polygon as near_segment;
! on_corner | on_segment | inside | near_corner | near_segment
! -----------+------------+--------+-----------------+--------------
! 0 | 0 | 0 | 1.4142135623731 | 3.2
! (1 row)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/circle.out 2016-04-02 21:48:12.912879252 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/circle.out 2016-04-04 03:18:30.973742886 +0000
***************
*** 1,99 ****
! --
! -- CIRCLE
! --
! CREATE TABLE CIRCLE_TBL (f1 circle);
! INSERT INTO CIRCLE_TBL VALUES ('<(5,1),3>');
! INSERT INTO CIRCLE_TBL VALUES ('<(1,2),100>');
! INSERT INTO CIRCLE_TBL VALUES ('1,3,5');
! INSERT INTO CIRCLE_TBL VALUES ('((1,2),3)');
! INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10>');
! INSERT INTO CIRCLE_TBL VALUES ('<(100,1),115>');
! -- bad values
! INSERT INTO CIRCLE_TBL VALUES ('<(-100,0),-100>');
! ERROR: invalid input syntax for type circle: "<(-100,0),-100>"
! LINE 1: INSERT INTO CIRCLE_TBL VALUES ('<(-100,0),-100>');
! ^
! INSERT INTO CIRCLE_TBL VALUES ('1abc,3,5');
! ERROR: invalid input syntax for type circle: "1abc,3,5"
! LINE 1: INSERT INTO CIRCLE_TBL VALUES ('1abc,3,5');
! ^
! INSERT INTO CIRCLE_TBL VALUES ('(3,(1,2),3)');
! ERROR: invalid input syntax for type circle: "(3,(1,2),3)"
! LINE 1: INSERT INTO CIRCLE_TBL VALUES ('(3,(1,2),3)');
! ^
! SELECT * FROM CIRCLE_TBL ORDER BY (point(f1))[0], (point(f1))[0], radius(f1);
! f1
! ----------------
! <(1,2),3>
! <(1,3),5>
! <(1,2),100>
! <(5,1),3>
! <(100,200),10>
! <(100,1),115>
! (6 rows)
!
! SELECT '' AS six, center(f1) AS center
! FROM CIRCLE_TBL ORDER BY (point(f1))[0], (point(f1))[0], radius(f1);
! six | center
! -----+-----------
! | (1,2)
! | (1,3)
! | (1,2)
! | (5,1)
! | (100,200)
! | (100,1)
! (6 rows)
!
! SELECT '' AS six, radius(f1) AS radius
! FROM CIRCLE_TBL ORDER BY (point(f1))[0], (point(f1))[0], radius(f1);
! six | radius
! -----+--------
! | 3
! | 5
! | 100
! | 3
! | 10
! | 115
! (6 rows)
!
! SELECT '' AS six, diameter(f1) AS diameter
! FROM CIRCLE_TBL ORDER BY (point(f1))[0], (point(f1))[0], radius(f1);
! six | diameter
! -----+----------
! | 6
! | 10
! | 200
! | 6
! | 20
! | 230
! (6 rows)
!
! SELECT '' AS two, f1 FROM CIRCLE_TBL WHERE radius(f1) < 5 ORDER BY (point(f1))[0], (point(f1))[0], radius(f1);
! two | f1
! -----+-----------
! | <(1,2),3>
! | <(5,1),3>
! (2 rows)
!
! SELECT '' AS four, f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10 ORDER BY (point(f1))[0], (point(f1))[0], radius(f1);
! four | f1
! ------+----------------
! | <(1,3),5>
! | <(1,2),100>
! | <(100,200),10>
! | <(100,1),115>
! (4 rows)
!
! SELECT '' as five, c1.f1 AS one, c2.f1 AS two, (c1.f1 <-> c2.f1) AS distance
! FROM CIRCLE_TBL c1, CIRCLE_TBL c2
! WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0)
! ORDER BY distance, area(c1.f1), area(c2.f1);
! five | one | two | distance
! ------+----------------+----------------+------------------
! | <(100,200),10> | <(100,1),115> | 74
! | <(100,200),10> | <(1,2),100> | 111.370729772479
! | <(1,3),5> | <(100,200),10> | 205.476756144497
! | <(5,1),3> | <(100,200),10> | 207.51303816328
! | <(1,2),3> | <(100,200),10> | 208.370729772479
! (5 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/date.out 2016-04-02 21:48:12.915175773 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/date.out 2016-04-04 03:18:30.993861715 +0000
***************
*** 1,1212 ****
! --
! -- DATE
! --
! CREATE TABLE DATE_TBL (f1 date);
! INSERT INTO DATE_TBL VALUES ('1957-04-09');
! INSERT INTO DATE_TBL VALUES ('1957-06-13');
! INSERT INTO DATE_TBL VALUES ('1996-02-28');
! INSERT INTO DATE_TBL VALUES ('1996-02-29');
! INSERT INTO DATE_TBL VALUES ('1996-03-01');
! INSERT INTO DATE_TBL VALUES ('1996-03-02');
! INSERT INTO DATE_TBL VALUES ('1997-02-28');
! INSERT INTO DATE_TBL VALUES ('1997-02-29');
! ERROR: date/time field value out of range: "1997-02-29"
! LINE 1: INSERT INTO DATE_TBL VALUES ('1997-02-29');
! ^
! INSERT INTO DATE_TBL VALUES ('1997-03-01');
! INSERT INTO DATE_TBL VALUES ('1997-03-02');
! INSERT INTO DATE_TBL VALUES ('2000-04-01');
! INSERT INTO DATE_TBL VALUES ('2000-04-02');
! INSERT INTO DATE_TBL VALUES ('2000-04-03');
! INSERT INTO DATE_TBL VALUES ('2038-04-08');
! INSERT INTO DATE_TBL VALUES ('2039-04-09');
! INSERT INTO DATE_TBL VALUES ('2040-04-10');
! SELECT f1 AS "Fifteen" FROM DATE_TBL ORDER BY f1;
! Fifteen
! ------------
! 04-09-1957
! 06-13-1957
! 02-28-1996
! 02-29-1996
! 03-01-1996
! 03-02-1996
! 02-28-1997
! 03-01-1997
! 03-02-1997
! 04-01-2000
! 04-02-2000
! 04-03-2000
! 04-08-2038
! 04-09-2039
! 04-10-2040
! (15 rows)
!
! SELECT f1 AS "Nine" FROM DATE_TBL WHERE f1 < '2000-01-01' ORDER BY f1;
! Nine
! ------------
! 04-09-1957
! 06-13-1957
! 02-28-1996
! 02-29-1996
! 03-01-1996
! 03-02-1996
! 02-28-1997
! 03-01-1997
! 03-02-1997
! (9 rows)
!
! SELECT f1 AS "Three" FROM DATE_TBL
! WHERE f1 BETWEEN '2000-01-01' AND '2001-01-01' ORDER BY f1;
! Three
! ------------
! 04-01-2000
! 04-02-2000
! 04-03-2000
! (3 rows)
!
! --
! -- Check all the documented input formats
! --
! SET datestyle TO iso; -- display results in ISO
! SET datestyle TO ymd;
! SELECT date 'January 8, 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999-01-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999-01-18';
! date
! ------------
! 1999-01-18
! (1 row)
!
! SELECT date '1/8/1999';
! ERROR: date/time field value out of range: "1/8/1999"
! LINE 1: SELECT date '1/8/1999';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1/18/1999';
! ERROR: date/time field value out of range: "1/18/1999"
! LINE 1: SELECT date '1/18/1999';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '18/1/1999';
! ERROR: date/time field value out of range: "18/1/1999"
! LINE 1: SELECT date '18/1/1999';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '01/02/03';
! date
! ------------
! 2001-02-03
! (1 row)
!
! SELECT date '19990108';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '990108';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999.008';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'J2451187';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'January 8, 99 BC';
! ERROR: date/time field value out of range: "January 8, 99 BC"
! LINE 1: SELECT date 'January 8, 99 BC';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '99-Jan-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999-Jan-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08-Jan-99';
! ERROR: date/time field value out of range: "08-Jan-99"
! LINE 1: SELECT date '08-Jan-99';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '08-Jan-1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'Jan-08-99';
! ERROR: date/time field value out of range: "Jan-08-99"
! LINE 1: SELECT date 'Jan-08-99';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date 'Jan-08-1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99-08-Jan';
! ERROR: invalid input syntax for type date: "99-08-Jan"
! LINE 1: SELECT date '99-08-Jan';
! ^
! SELECT date '1999-08-Jan';
! ERROR: invalid input syntax for type date: "1999-08-Jan"
! LINE 1: SELECT date '1999-08-Jan';
! ^
! SELECT date '99 Jan 08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999 Jan 08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08 Jan 99';
! ERROR: date/time field value out of range: "08 Jan 99"
! LINE 1: SELECT date '08 Jan 99';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '08 Jan 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'Jan 08 99';
! ERROR: date/time field value out of range: "Jan 08 99"
! LINE 1: SELECT date 'Jan 08 99';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date 'Jan 08 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99 08 Jan';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999 08 Jan';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99-01-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999-01-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08-01-99';
! ERROR: date/time field value out of range: "08-01-99"
! LINE 1: SELECT date '08-01-99';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '08-01-1999';
! ERROR: date/time field value out of range: "08-01-1999"
! LINE 1: SELECT date '08-01-1999';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '01-08-99';
! ERROR: date/time field value out of range: "01-08-99"
! LINE 1: SELECT date '01-08-99';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '01-08-1999';
! ERROR: date/time field value out of range: "01-08-1999"
! LINE 1: SELECT date '01-08-1999';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '99-08-01';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '1999-08-01';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '99 01 08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999 01 08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08 01 99';
! ERROR: date/time field value out of range: "08 01 99"
! LINE 1: SELECT date '08 01 99';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '08 01 1999';
! ERROR: date/time field value out of range: "08 01 1999"
! LINE 1: SELECT date '08 01 1999';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '01 08 99';
! ERROR: date/time field value out of range: "01 08 99"
! LINE 1: SELECT date '01 08 99';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '01 08 1999';
! ERROR: date/time field value out of range: "01 08 1999"
! LINE 1: SELECT date '01 08 1999';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '99 08 01';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '1999 08 01';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SET datestyle TO dmy;
! SELECT date 'January 8, 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999-01-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999-01-18';
! date
! ------------
! 1999-01-18
! (1 row)
!
! SELECT date '1/8/1999';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '1/18/1999';
! ERROR: date/time field value out of range: "1/18/1999"
! LINE 1: SELECT date '1/18/1999';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '18/1/1999';
! date
! ------------
! 1999-01-18
! (1 row)
!
! SELECT date '01/02/03';
! date
! ------------
! 2003-02-01
! (1 row)
!
! SELECT date '19990108';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '990108';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999.008';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'J2451187';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'January 8, 99 BC';
! date
! ---------------
! 0099-01-08 BC
! (1 row)
!
! SELECT date '99-Jan-08';
! ERROR: date/time field value out of range: "99-Jan-08"
! LINE 1: SELECT date '99-Jan-08';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999-Jan-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08-Jan-99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08-Jan-1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'Jan-08-99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'Jan-08-1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99-08-Jan';
! ERROR: invalid input syntax for type date: "99-08-Jan"
! LINE 1: SELECT date '99-08-Jan';
! ^
! SELECT date '1999-08-Jan';
! ERROR: invalid input syntax for type date: "1999-08-Jan"
! LINE 1: SELECT date '1999-08-Jan';
! ^
! SELECT date '99 Jan 08';
! ERROR: date/time field value out of range: "99 Jan 08"
! LINE 1: SELECT date '99 Jan 08';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999 Jan 08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08 Jan 99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08 Jan 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'Jan 08 99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'Jan 08 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99 08 Jan';
! ERROR: invalid input syntax for type date: "99 08 Jan"
! LINE 1: SELECT date '99 08 Jan';
! ^
! SELECT date '1999 08 Jan';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99-01-08';
! ERROR: date/time field value out of range: "99-01-08"
! LINE 1: SELECT date '99-01-08';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999-01-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08-01-99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08-01-1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '01-08-99';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '01-08-1999';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '99-08-01';
! ERROR: date/time field value out of range: "99-08-01"
! LINE 1: SELECT date '99-08-01';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999-08-01';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '99 01 08';
! ERROR: date/time field value out of range: "99 01 08"
! LINE 1: SELECT date '99 01 08';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999 01 08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08 01 99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08 01 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '01 08 99';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '01 08 1999';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '99 08 01';
! ERROR: date/time field value out of range: "99 08 01"
! LINE 1: SELECT date '99 08 01';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999 08 01';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SET datestyle TO mdy;
! SELECT date 'January 8, 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999-01-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999-01-18';
! date
! ------------
! 1999-01-18
! (1 row)
!
! SELECT date '1/8/1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1/18/1999';
! date
! ------------
! 1999-01-18
! (1 row)
!
! SELECT date '18/1/1999';
! ERROR: date/time field value out of range: "18/1/1999"
! LINE 1: SELECT date '18/1/1999';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '01/02/03';
! date
! ------------
! 2003-01-02
! (1 row)
!
! SELECT date '19990108';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '990108';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '1999.008';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'J2451187';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'January 8, 99 BC';
! date
! ---------------
! 0099-01-08 BC
! (1 row)
!
! SELECT date '99-Jan-08';
! ERROR: date/time field value out of range: "99-Jan-08"
! LINE 1: SELECT date '99-Jan-08';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999-Jan-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08-Jan-99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08-Jan-1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'Jan-08-99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'Jan-08-1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99-08-Jan';
! ERROR: invalid input syntax for type date: "99-08-Jan"
! LINE 1: SELECT date '99-08-Jan';
! ^
! SELECT date '1999-08-Jan';
! ERROR: invalid input syntax for type date: "1999-08-Jan"
! LINE 1: SELECT date '1999-08-Jan';
! ^
! SELECT date '99 Jan 08';
! ERROR: invalid input syntax for type date: "99 Jan 08"
! LINE 1: SELECT date '99 Jan 08';
! ^
! SELECT date '1999 Jan 08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08 Jan 99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08 Jan 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'Jan 08 99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date 'Jan 08 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99 08 Jan';
! ERROR: invalid input syntax for type date: "99 08 Jan"
! LINE 1: SELECT date '99 08 Jan';
! ^
! SELECT date '1999 08 Jan';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99-01-08';
! ERROR: date/time field value out of range: "99-01-08"
! LINE 1: SELECT date '99-01-08';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999-01-08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08-01-99';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '08-01-1999';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '01-08-99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '01-08-1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99-08-01';
! ERROR: date/time field value out of range: "99-08-01"
! LINE 1: SELECT date '99-08-01';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999-08-01';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '99 01 08';
! ERROR: date/time field value out of range: "99 01 08"
! LINE 1: SELECT date '99 01 08';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999 01 08';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '08 01 99';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '08 01 1999';
! date
! ------------
! 1999-08-01
! (1 row)
!
! SELECT date '01 08 99';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '01 08 1999';
! date
! ------------
! 1999-01-08
! (1 row)
!
! SELECT date '99 08 01';
! ERROR: date/time field value out of range: "99 08 01"
! LINE 1: SELECT date '99 08 01';
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! SELECT date '1999 08 01';
! date
! ------------
! 1999-08-01
! (1 row)
!
! RESET datestyle;
! --
! -- Simple math
! -- Leave most of it for the horology tests
! --
! SELECT f1 - date '2000-01-01' AS "Days From 2K" FROM DATE_TBL ORDER BY f1;
! Days From 2K
! --------------
! -15607
! -15542
! -1403
! -1402
! -1401
! -1400
! -1037
! -1036
! -1035
! 91
! 92
! 93
! 13977
! 14343
! 14710
! (15 rows)
!
! SELECT f1 - date 'epoch' AS "Days From Epoch" FROM DATE_TBL ORDER BY f1;
! Days From Epoch
! -----------------
! -4650
! -4585
! 9554
! 9555
! 9556
! 9557
! 9920
! 9921
! 9922
! 11048
! 11049
! 11050
! 24934
! 25300
! 25667
! (15 rows)
!
! SELECT date 'yesterday' - date 'today' AS "One day";
! One day
! ---------
! -1
! (1 row)
!
! SELECT date 'today' - date 'tomorrow' AS "One day";
! One day
! ---------
! -1
! (1 row)
!
! SELECT date 'yesterday' - date 'tomorrow' AS "Two days";
! Two days
! ----------
! -2
! (1 row)
!
! SELECT date 'tomorrow' - date 'today' AS "One day";
! One day
! ---------
! 1
! (1 row)
!
! SELECT date 'today' - date 'yesterday' AS "One day";
! One day
! ---------
! 1
! (1 row)
!
! SELECT date 'tomorrow' - date 'yesterday' AS "Two days";
! Two days
! ----------
! 2
! (1 row)
!
! --
! -- test extract!
! --
! -- century
! --
! SELECT EXTRACT(CENTURY FROM DATE '0101-12-31 BC'); -- -2
! date_part
! -----------
! -2
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM DATE '0100-12-31 BC'); -- -1
! date_part
! -----------
! -1
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM DATE '0001-12-31 BC'); -- -1
! date_part
! -----------
! -1
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM DATE '0001-01-01'); -- 1
! date_part
! -----------
! 1
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM DATE '0001-01-01 AD'); -- 1
! date_part
! -----------
! 1
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM DATE '1900-12-31'); -- 19
! date_part
! -----------
! 19
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM DATE '1901-01-01'); -- 20
! date_part
! -----------
! 20
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM DATE '2000-12-31'); -- 20
! date_part
! -----------
! 20
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM DATE '2001-01-01'); -- 21
! date_part
! -----------
! 21
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM CURRENT_DATE)>=21 AS True; -- true
! true
! ------
! t
! (1 row)
!
! --
! -- millennium
! --
! SELECT EXTRACT(MILLENNIUM FROM DATE '0001-12-31 BC'); -- -1
! date_part
! -----------
! -1
! (1 row)
!
! SELECT EXTRACT(MILLENNIUM FROM DATE '0001-01-01 AD'); -- 1
! date_part
! -----------
! 1
! (1 row)
!
! SELECT EXTRACT(MILLENNIUM FROM DATE '1000-12-31'); -- 1
! date_part
! -----------
! 1
! (1 row)
!
! SELECT EXTRACT(MILLENNIUM FROM DATE '1001-01-01'); -- 2
! date_part
! -----------
! 2
! (1 row)
!
! SELECT EXTRACT(MILLENNIUM FROM DATE '2000-12-31'); -- 2
! date_part
! -----------
! 2
! (1 row)
!
! SELECT EXTRACT(MILLENNIUM FROM DATE '2001-01-01'); -- 3
! date_part
! -----------
! 3
! (1 row)
!
! -- next test to be fixed on the turn of the next millennium;-)
! SELECT EXTRACT(MILLENNIUM FROM CURRENT_DATE); -- 3
! date_part
! -----------
! 3
! (1 row)
!
! --
! -- decade
! --
! SELECT EXTRACT(DECADE FROM DATE '1994-12-25'); -- 199
! date_part
! -----------
! 199
! (1 row)
!
! SELECT EXTRACT(DECADE FROM DATE '0010-01-01'); -- 1
! date_part
! -----------
! 1
! (1 row)
!
! SELECT EXTRACT(DECADE FROM DATE '0009-12-31'); -- 0
! date_part
! -----------
! 0
! (1 row)
!
! SELECT EXTRACT(DECADE FROM DATE '0001-01-01 BC'); -- 0
! date_part
! -----------
! 0
! (1 row)
!
! SELECT EXTRACT(DECADE FROM DATE '0002-12-31 BC'); -- -1
! date_part
! -----------
! -1
! (1 row)
!
! SELECT EXTRACT(DECADE FROM DATE '0011-01-01 BC'); -- -1
! date_part
! -----------
! -1
! (1 row)
!
! SELECT EXTRACT(DECADE FROM DATE '0012-12-31 BC'); -- -2
! date_part
! -----------
! -2
! (1 row)
!
! --
! -- some other types:
! --
! -- on a timestamp.
! SELECT EXTRACT(CENTURY FROM NOW())>=21 AS True; -- true
! true
! ------
! t
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM TIMESTAMP '1970-03-20 04:30:00.00000'); -- 20
! date_part
! -----------
! 20
! (1 row)
!
! -- on an interval
! SELECT EXTRACT(CENTURY FROM INTERVAL '100 y'); -- 1
! date_part
! -----------
! 1
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM INTERVAL '99 y'); -- 0
! date_part
! -----------
! 0
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM INTERVAL '-99 y'); -- 0
! date_part
! -----------
! 0
! (1 row)
!
! SELECT EXTRACT(CENTURY FROM INTERVAL '-100 y'); -- -1
! date_part
! -----------
! -1
! (1 row)
!
! --
! -- test trunc function!
! --
! SELECT DATE_TRUNC('MILLENNIUM', TIMESTAMP '1970-03-20 04:30:00.00000'); -- 1001
! date_trunc
! --------------------------
! Thu Jan 01 00:00:00 1001
! (1 row)
!
! SELECT DATE_TRUNC('MILLENNIUM', DATE '1970-03-20'); -- 1001-01-01
! date_trunc
! ------------------------------
! Thu Jan 01 00:00:00 1001 PST
! (1 row)
!
! SELECT DATE_TRUNC('CENTURY', TIMESTAMP '1970-03-20 04:30:00.00000'); -- 1901
! date_trunc
! --------------------------
! Tue Jan 01 00:00:00 1901
! (1 row)
!
! SELECT DATE_TRUNC('CENTURY', DATE '1970-03-20'); -- 1901
! date_trunc
! ------------------------------
! Tue Jan 01 00:00:00 1901 PST
! (1 row)
!
! SELECT DATE_TRUNC('CENTURY', DATE '2004-08-10'); -- 2001-01-01
! date_trunc
! ------------------------------
! Mon Jan 01 00:00:00 2001 PST
! (1 row)
!
! SELECT DATE_TRUNC('CENTURY', DATE '0002-02-04'); -- 0001-01-01
! date_trunc
! ------------------------------
! Mon Jan 01 00:00:00 0001 PST
! (1 row)
!
! SELECT DATE_TRUNC('CENTURY', DATE '0055-08-10 BC'); -- 0100-01-01 BC
! date_trunc
! ---------------------------------
! Tue Jan 01 00:00:00 0100 PST BC
! (1 row)
!
! SELECT DATE_TRUNC('DECADE', DATE '1993-12-25'); -- 1990-01-01
! date_trunc
! ------------------------------
! Mon Jan 01 00:00:00 1990 PST
! (1 row)
!
! SELECT DATE_TRUNC('DECADE', DATE '0004-12-25'); -- 0001-01-01 BC
! date_trunc
! ---------------------------------
! Sat Jan 01 00:00:00 0001 PST BC
! (1 row)
!
! SELECT DATE_TRUNC('DECADE', DATE '0002-12-31 BC'); -- 0011-01-01 BC
! date_trunc
! ---------------------------------
! Mon Jan 01 00:00:00 0011 PST BC
! (1 row)
!
! --
! -- test infinity
! --
! select 'infinity'::date, '-infinity'::date;
! date | date
! ----------+-----------
! infinity | -infinity
! (1 row)
!
! select 'infinity'::date > 'today'::date as t;
! t
! ---
! t
! (1 row)
!
! select '-infinity'::date < 'today'::date as t;
! t
! ---
! t
! (1 row)
!
! select isfinite('infinity'::date), isfinite('-infinity'::date), isfinite('today'::date);
! isfinite | isfinite | isfinite
! ----------+----------+----------
! f | f | t
! (1 row)
!
! -- test constructors
! select make_date(2013, 7, 15);
! make_date
! ------------
! 07-15-2013
! (1 row)
!
! select make_time(8, 20, 0.0);
! make_time
! -----------
! 08:20:00
! (1 row)
!
! -- should fail
! select make_date(2013, 2, 30);
! ERROR: date field value out of range: 2013-02-30
! select make_date(2013, 13, 1);
! ERROR: date field value out of range: 2013-13-01
! select make_date(2013, 11, -1);
! ERROR: date field value out of range: 2013-11--1
! select make_date(-44, 3, 15); -- perhaps we should allow this sometime?
! ERROR: date field value out of range: -44-03-15
! select make_time(10, 55, 100.1);
! ERROR: time field value out of range: 10:55:100.1
! select make_time(24, 0, 2.1);
! ERROR: time field value out of range: 24:00:2.1
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/time.out 2016-04-02 21:48:12.938823204 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/time.out 2016-04-04 03:18:31.015890693 +0000
***************
*** 1,88 ****
! --
! -- TIME
! --
! CREATE TABLE TIME_TBL (f1 time(2));
! INSERT INTO TIME_TBL VALUES ('00:00');
! INSERT INTO TIME_TBL VALUES ('01:00');
! -- as of 7.4, timezone spec should be accepted and ignored
! INSERT INTO TIME_TBL VALUES ('02:03 PST');
! INSERT INTO TIME_TBL VALUES ('11:59 EDT');
! INSERT INTO TIME_TBL VALUES ('12:00');
! INSERT INTO TIME_TBL VALUES ('12:01');
! INSERT INTO TIME_TBL VALUES ('23:59');
! INSERT INTO TIME_TBL VALUES ('11:59:59.99 PM');
! INSERT INTO TIME_TBL VALUES ('2003-03-07 15:36:39 America/New_York');
! INSERT INTO TIME_TBL VALUES ('2003-07-07 15:36:39 America/New_York');
! -- this should fail (the timezone offset is not known)
! INSERT INTO TIME_TBL VALUES ('15:36:39 America/New_York');
! ERROR: invalid input syntax for type time: "15:36:39 America/New_York"
! LINE 1: INSERT INTO TIME_TBL VALUES ('15:36:39 America/New_York');
! ^
! SELECT f1 AS "Time" FROM TIME_TBL ORDER BY f1;
! Time
! -------------
! 00:00:00
! 01:00:00
! 02:03:00
! 11:59:00
! 12:00:00
! 12:01:00
! 15:36:39
! 15:36:39
! 23:59:00
! 23:59:59.99
! (10 rows)
!
! SELECT f1 AS "Three" FROM TIME_TBL WHERE f1 < '05:06:07' ORDER BY f1;
! Three
! ----------
! 00:00:00
! 01:00:00
! 02:03:00
! (3 rows)
!
! SELECT f1 AS "Five" FROM TIME_TBL WHERE f1 > '05:06:07' ORDER BY f1;
! Five
! -------------
! 11:59:00
! 12:00:00
! 12:01:00
! 15:36:39
! 15:36:39
! 23:59:00
! 23:59:59.99
! (7 rows)
!
! SELECT f1 AS "None" FROM TIME_TBL WHERE f1 < '00:00' ORDER BY f1;
! None
! ------
! (0 rows)
!
! SELECT f1 AS "Eight" FROM TIME_TBL WHERE f1 >= '00:00' ORDER BY f1;
! Eight
! -------------
! 00:00:00
! 01:00:00
! 02:03:00
! 11:59:00
! 12:00:00
! 12:01:00
! 15:36:39
! 15:36:39
! 23:59:00
! 23:59:59.99
! (10 rows)
!
! --
! -- TIME simple math
! --
! -- We now make a distinction between time and intervals,
! -- and adding two times together makes no sense at all.
! -- Leave in one query to show that it is rejected,
! -- and do the rest of the testing in horology.sql
! -- where we do mixed-type arithmetic. - thomas 2000-12-02
! SELECT f1 + time '00:01' AS "Illegal" FROM TIME_TBL ORDER BY f1;
! ERROR: operator is not unique: time without time zone + time without time zone
! LINE 1: SELECT f1 + time '00:01' AS "Illegal" FROM TIME_TBL ORDER BY...
! ^
! HINT: Could not choose a best candidate operator. You might need to add explicit type casts.
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/timetz.out 2016-04-02 21:48:12.939610058 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/timetz.out 2016-04-04 03:18:31.035778473 +0000
***************
*** 1,95 ****
! --
! -- TIMETZ
! --
! CREATE TABLE TIMETZ_TBL (f1 time(2) with time zone);
! INSERT INTO TIMETZ_TBL VALUES ('00:01 PDT');
! INSERT INTO TIMETZ_TBL VALUES ('01:00 PDT');
! INSERT INTO TIMETZ_TBL VALUES ('02:03 PDT');
! INSERT INTO TIMETZ_TBL VALUES ('07:07 PST');
! INSERT INTO TIMETZ_TBL VALUES ('08:08 EDT');
! INSERT INTO TIMETZ_TBL VALUES ('11:59 PDT');
! INSERT INTO TIMETZ_TBL VALUES ('12:00 PDT');
! INSERT INTO TIMETZ_TBL VALUES ('12:01 PDT');
! INSERT INTO TIMETZ_TBL VALUES ('23:59 PDT');
! INSERT INTO TIMETZ_TBL VALUES ('11:59:59.99 PM PDT');
! INSERT INTO TIMETZ_TBL VALUES ('2003-03-07 15:36:39 America/New_York');
! INSERT INTO TIMETZ_TBL VALUES ('2003-07-07 15:36:39 America/New_York');
! -- this should fail (the timezone offset is not known)
! INSERT INTO TIMETZ_TBL VALUES ('15:36:39 America/New_York');
! ERROR: invalid input syntax for type time with time zone: "15:36:39 America/New_York"
! LINE 1: INSERT INTO TIMETZ_TBL VALUES ('15:36:39 America/New_York');
! ^
! SELECT f1 AS "Time TZ" FROM TIMETZ_TBL ORDER BY f1;
! Time TZ
! ----------------
! 00:01:00-07
! 01:00:00-07
! 02:03:00-07
! 08:08:00-04
! 07:07:00-08
! 11:59:00-07
! 12:00:00-07
! 12:01:00-07
! 15:36:39-04
! 15:36:39-05
! 23:59:00-07
! 23:59:59.99-07
! (12 rows)
!
! SELECT f1 AS "Three" FROM TIMETZ_TBL WHERE f1 < '05:06:07-07' ORDER BY f1;
! Three
! -------------
! 00:01:00-07
! 01:00:00-07
! 02:03:00-07
! (3 rows)
!
! SELECT f1 AS "Seven" FROM TIMETZ_TBL WHERE f1 > '05:06:07-07' ORDER BY f1;
! Seven
! ----------------
! 08:08:00-04
! 07:07:00-08
! 11:59:00-07
! 12:00:00-07
! 12:01:00-07
! 15:36:39-04
! 15:36:39-05
! 23:59:00-07
! 23:59:59.99-07
! (9 rows)
!
! SELECT f1 AS "None" FROM TIMETZ_TBL WHERE f1 < '00:00-07' ORDER BY f1;
! None
! ------
! (0 rows)
!
! SELECT f1 AS "Ten" FROM TIMETZ_TBL WHERE f1 >= '00:00-07' ORDER BY f1;
! Ten
! ----------------
! 00:01:00-07
! 01:00:00-07
! 02:03:00-07
! 08:08:00-04
! 07:07:00-08
! 11:59:00-07
! 12:00:00-07
! 12:01:00-07
! 15:36:39-04
! 15:36:39-05
! 23:59:00-07
! 23:59:59.99-07
! (12 rows)
!
! --
! -- TIME simple math
! --
! -- We now make a distinction between time and intervals,
! -- and adding two times together makes no sense at all.
! -- Leave in one query to show that it is rejected,
! -- and do the rest of the testing in horology.sql
! -- where we do mixed-type arithmetic. - thomas 2000-12-02
! SELECT f1 + time with time zone '00:01' AS "Illegal" FROM TIMETZ_TBL ORDER BY f1;
! ERROR: operator does not exist: time with time zone + time with time zone
! LINE 1: SELECT f1 + time with time zone '00:01' AS "Illegal" FROM TI...
! ^
! HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/timestamp.out 2016-04-02 21:48:12.939162493 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/timestamp.out 2016-04-04 03:18:31.055482758 +0000
***************
*** 1,1617 ****
! --
! -- TIMESTAMP
! --
! CREATE TABLE TIMESTAMP_TBL (d1 timestamp(2) without time zone);
! -- Test shorthand input values
! -- We can't just "select" the results since they aren't constants; test for
! -- equality instead. We can do that by running the test inside a transaction
! -- block, within which the value of 'now' shouldn't change. We also check
! -- that 'now' *does* change over a reasonable interval such as 100 msec.
! -- NOTE: it is possible for this part of the test to fail if the transaction
! -- block is entered exactly at local midnight; then 'now' and 'today' have
! -- the same values and the counts will come out different.
! INSERT INTO TIMESTAMP_TBL VALUES ('now');
! SELECT pg_sleep(0.1);
! pg_sleep
! ----------
!
! (1 row)
!
! BEGIN;
! INSERT INTO TIMESTAMP_TBL VALUES ('now');
! INSERT INTO TIMESTAMP_TBL VALUES ('today');
! INSERT INTO TIMESTAMP_TBL VALUES ('yesterday');
! INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow');
! -- time zone should be ignored by this data type
! INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow EST');
! INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow zulu');
! SELECT count(*) AS One FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone 'today';
! one
! -----
! 1
! (1 row)
!
! SELECT count(*) AS Three FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone 'tomorrow';
! three
! -------
! 3
! (1 row)
!
! SELECT count(*) AS One FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone 'yesterday';
! one
! -----
! 1
! (1 row)
!
! SELECT count(*) AS One FROM TIMESTAMP_TBL WHERE d1 = timestamp(2) without time zone 'now';
! one
! -----
! 1
! (1 row)
!
! COMMIT;
! DELETE FROM TIMESTAMP_TBL;
! -- verify uniform transaction time within transaction block
! BEGIN;
! INSERT INTO TIMESTAMP_TBL VALUES ('now');
! SELECT pg_sleep(0.1);
! pg_sleep
! ----------
!
! (1 row)
!
! INSERT INTO TIMESTAMP_TBL VALUES ('now');
! SELECT pg_sleep(0.1);
! pg_sleep
! ----------
!
! (1 row)
!
! SELECT count(*) AS two FROM TIMESTAMP_TBL WHERE d1 = timestamp(2) without time zone 'now';
! two
! -----
! 2
! (1 row)
!
! COMMIT;
! DELETE FROM TIMESTAMP_TBL;
! -- Special values
! INSERT INTO TIMESTAMP_TBL VALUES ('-infinity');
! INSERT INTO TIMESTAMP_TBL VALUES ('infinity');
! INSERT INTO TIMESTAMP_TBL VALUES ('epoch');
! -- Obsolete special values
! INSERT INTO TIMESTAMP_TBL VALUES ('invalid');
! ERROR: date/time value "invalid" is no longer supported
! LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('invalid');
! ^
! INSERT INTO TIMESTAMP_TBL VALUES ('undefined');
! ERROR: date/time value "undefined" is no longer supported
! LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('undefined');
! ^
! INSERT INTO TIMESTAMP_TBL VALUES ('current');
! ERROR: date/time value "current" is no longer supported
! LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('current');
! ^
! -- Postgres v6.0 standard output format
! INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01 1997 PST');
! -- Variations on Postgres v6.1 standard output format
! INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.000001 1997 PST');
! INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.999999 1997 PST');
! INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.4 1997 PST');
! INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.5 1997 PST');
! INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.6 1997 PST');
! -- ISO 8601 format
! INSERT INTO TIMESTAMP_TBL VALUES ('1997-01-02');
! INSERT INTO TIMESTAMP_TBL VALUES ('1997-01-02 03:04:05');
! INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01-08');
! INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01-0800');
! INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01 -08:00');
! INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 -0800');
! INSERT INTO TIMESTAMP_TBL VALUES ('1997-06-10 17:32:01 -07:00');
! INSERT INTO TIMESTAMP_TBL VALUES ('2001-09-22T18:19:20');
! -- POSIX format (note that the timezone abbrev is just decoration here)
! INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 08:14:01 GMT+8');
! INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 13:14:02 GMT-1');
! INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 12:14:03 GMT-2');
! INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 03:14:04 PST+8');
! INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 02:14:05 MST+7:00');
! -- Variations for acceptable input formats
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 17:32:01 1997 -0800');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 5:32PM 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('1997/02/10 17:32:01-0800');
! INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01 PST');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb-10-1997 17:32:01 PST');
! INSERT INTO TIMESTAMP_TBL VALUES ('02-10-1997 17:32:01 PST');
! INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 PST');
! set datestyle to ymd;
! INSERT INTO TIMESTAMP_TBL VALUES ('97FEB10 5:32:01PM UTC');
! INSERT INTO TIMESTAMP_TBL VALUES ('97/02/10 17:32:01 UTC');
! reset datestyle;
! INSERT INTO TIMESTAMP_TBL VALUES ('1997.041 17:32:01 UTC');
! INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 America/New_York');
! -- this fails (even though TZ is a no-op, we still look it up)
! INSERT INTO TIMESTAMP_TBL VALUES ('19970710 173201 America/Does_not_exist');
! ERROR: time zone "america/does_not_exist" not recognized
! LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('19970710 173201 America/D...
! ^
! -- Check date conversion and date arithmetic
! INSERT INTO TIMESTAMP_TBL VALUES ('1997-06-10 18:32:01 PDT');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 11 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 12 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 13 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 14 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 15 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 0097 BC');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 0097');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 0597');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1097');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1697');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1797');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1897');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 2097');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 28 17:32:01 1996');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1996');
! INSERT INTO TIMESTAMP_TBL VALUES ('Mar 01 17:32:01 1996');
! INSERT INTO TIMESTAMP_TBL VALUES ('Dec 30 17:32:01 1996');
! INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 1996');
! INSERT INTO TIMESTAMP_TBL VALUES ('Jan 01 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 28 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1997');
! ERROR: date/time field value out of range: "Feb 29 17:32:01 1997"
! LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1997');
! ^
! INSERT INTO TIMESTAMP_TBL VALUES ('Mar 01 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Dec 30 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 1997');
! INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 1999');
! INSERT INTO TIMESTAMP_TBL VALUES ('Jan 01 17:32:01 2000');
! INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 2000');
! INSERT INTO TIMESTAMP_TBL VALUES ('Jan 01 17:32:01 2001');
! -- Currently unsupported syntax and ranges
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 -0097');
! ERROR: time zone displacement out of range: "Feb 16 17:32:01 -0097"
! LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 -0097');
! ^
! INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC');
! ERROR: timestamp out of range: "Feb 16 17:32:01 5097 BC"
! LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC')...
! ^
! SELECT '' AS "64", d1 FROM TIMESTAMP_TBL ORDER BY d1;
! 64 | d1
! ----+-----------------------------
! | -infinity
! | Tue Feb 16 17:32:01 0097 BC
! | Sat Feb 16 17:32:01 0097
! | Thu Feb 16 17:32:01 0597
! | Tue Feb 16 17:32:01 1097
! | Sat Feb 16 17:32:01 1697
! | Thu Feb 16 17:32:01 1797
! | Tue Feb 16 17:32:01 1897
! | Thu Jan 01 00:00:00 1970
! | Wed Feb 28 17:32:01 1996
! | Thu Feb 29 17:32:01 1996
! | Fri Mar 01 17:32:01 1996
! | Mon Dec 30 17:32:01 1996
! | Tue Dec 31 17:32:01 1996
! | Wed Jan 01 17:32:01 1997
! | Thu Jan 02 00:00:00 1997
! | Thu Jan 02 03:04:05 1997
! | Mon Feb 10 17:32:00 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01.4 1997
! | Mon Feb 10 17:32:01.5 1997
! | Mon Feb 10 17:32:01.6 1997
! | Mon Feb 10 17:32:02 1997
! | Tue Feb 11 17:32:01 1997
! | Wed Feb 12 17:32:01 1997
! | Thu Feb 13 17:32:01 1997
! | Fri Feb 14 17:32:01 1997
! | Sat Feb 15 17:32:01 1997
! | Sun Feb 16 17:32:01 1997
! | Sun Feb 16 17:32:01 1997
! | Fri Feb 28 17:32:01 1997
! | Sat Mar 01 17:32:01 1997
! | Tue Jun 10 17:32:01 1997
! | Tue Jun 10 18:32:01 1997
! | Tue Dec 30 17:32:01 1997
! | Wed Dec 31 17:32:01 1997
! | Fri Dec 31 17:32:01 1999
! | Sat Jan 01 17:32:01 2000
! | Wed Mar 15 02:14:05 2000
! | Wed Mar 15 03:14:04 2000
! | Wed Mar 15 08:14:01 2000
! | Wed Mar 15 12:14:03 2000
! | Wed Mar 15 13:14:02 2000
! | Sun Dec 31 17:32:01 2000
! | Mon Jan 01 17:32:01 2001
! | Sat Sep 22 18:19:20 2001
! | Sat Feb 16 17:32:01 2097
! | infinity
! (65 rows)
!
! -- Demonstrate functions and operators
! SELECT '' AS "48", d1 FROM TIMESTAMP_TBL
! WHERE d1 > timestamp without time zone '1997-01-02' ORDER BY d1;
! 48 | d1
! ----+----------------------------
! | Thu Jan 02 03:04:05 1997
! | Mon Feb 10 17:32:00 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01.4 1997
! | Mon Feb 10 17:32:01.5 1997
! | Mon Feb 10 17:32:01.6 1997
! | Mon Feb 10 17:32:02 1997
! | Tue Feb 11 17:32:01 1997
! | Wed Feb 12 17:32:01 1997
! | Thu Feb 13 17:32:01 1997
! | Fri Feb 14 17:32:01 1997
! | Sat Feb 15 17:32:01 1997
! | Sun Feb 16 17:32:01 1997
! | Sun Feb 16 17:32:01 1997
! | Fri Feb 28 17:32:01 1997
! | Sat Mar 01 17:32:01 1997
! | Tue Jun 10 17:32:01 1997
! | Tue Jun 10 18:32:01 1997
! | Tue Dec 30 17:32:01 1997
! | Wed Dec 31 17:32:01 1997
! | Fri Dec 31 17:32:01 1999
! | Sat Jan 01 17:32:01 2000
! | Wed Mar 15 02:14:05 2000
! | Wed Mar 15 03:14:04 2000
! | Wed Mar 15 08:14:01 2000
! | Wed Mar 15 12:14:03 2000
! | Wed Mar 15 13:14:02 2000
! | Sun Dec 31 17:32:01 2000
! | Mon Jan 01 17:32:01 2001
! | Sat Sep 22 18:19:20 2001
! | Sat Feb 16 17:32:01 2097
! | infinity
! (49 rows)
!
! SELECT '' AS "15", d1 FROM TIMESTAMP_TBL
! WHERE d1 < timestamp without time zone '1997-01-02' ORDER BY d1;
! 15 | d1
! ----+-----------------------------
! | -infinity
! | Tue Feb 16 17:32:01 0097 BC
! | Sat Feb 16 17:32:01 0097
! | Thu Feb 16 17:32:01 0597
! | Tue Feb 16 17:32:01 1097
! | Sat Feb 16 17:32:01 1697
! | Thu Feb 16 17:32:01 1797
! | Tue Feb 16 17:32:01 1897
! | Thu Jan 01 00:00:00 1970
! | Wed Feb 28 17:32:01 1996
! | Thu Feb 29 17:32:01 1996
! | Fri Mar 01 17:32:01 1996
! | Mon Dec 30 17:32:01 1996
! | Tue Dec 31 17:32:01 1996
! | Wed Jan 01 17:32:01 1997
! (15 rows)
!
! SELECT '' AS one, d1 FROM TIMESTAMP_TBL
! WHERE d1 = timestamp without time zone '1997-01-02' ORDER BY d1;
! one | d1
! -----+--------------------------
! | Thu Jan 02 00:00:00 1997
! (1 row)
!
! SELECT '' AS "63", d1 FROM TIMESTAMP_TBL
! WHERE d1 != timestamp without time zone '1997-01-02' ORDER BY d1;
! 63 | d1
! ----+-----------------------------
! | -infinity
! | Tue Feb 16 17:32:01 0097 BC
! | Sat Feb 16 17:32:01 0097
! | Thu Feb 16 17:32:01 0597
! | Tue Feb 16 17:32:01 1097
! | Sat Feb 16 17:32:01 1697
! | Thu Feb 16 17:32:01 1797
! | Tue Feb 16 17:32:01 1897
! | Thu Jan 01 00:00:00 1970
! | Wed Feb 28 17:32:01 1996
! | Thu Feb 29 17:32:01 1996
! | Fri Mar 01 17:32:01 1996
! | Mon Dec 30 17:32:01 1996
! | Tue Dec 31 17:32:01 1996
! | Wed Jan 01 17:32:01 1997
! | Thu Jan 02 03:04:05 1997
! | Mon Feb 10 17:32:00 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01.4 1997
! | Mon Feb 10 17:32:01.5 1997
! | Mon Feb 10 17:32:01.6 1997
! | Mon Feb 10 17:32:02 1997
! | Tue Feb 11 17:32:01 1997
! | Wed Feb 12 17:32:01 1997
! | Thu Feb 13 17:32:01 1997
! | Fri Feb 14 17:32:01 1997
! | Sat Feb 15 17:32:01 1997
! | Sun Feb 16 17:32:01 1997
! | Sun Feb 16 17:32:01 1997
! | Fri Feb 28 17:32:01 1997
! | Sat Mar 01 17:32:01 1997
! | Tue Jun 10 17:32:01 1997
! | Tue Jun 10 18:32:01 1997
! | Tue Dec 30 17:32:01 1997
! | Wed Dec 31 17:32:01 1997
! | Fri Dec 31 17:32:01 1999
! | Sat Jan 01 17:32:01 2000
! | Wed Mar 15 02:14:05 2000
! | Wed Mar 15 03:14:04 2000
! | Wed Mar 15 08:14:01 2000
! | Wed Mar 15 12:14:03 2000
! | Wed Mar 15 13:14:02 2000
! | Sun Dec 31 17:32:01 2000
! | Mon Jan 01 17:32:01 2001
! | Sat Sep 22 18:19:20 2001
! | Sat Feb 16 17:32:01 2097
! | infinity
! (64 rows)
!
! SELECT '' AS "16", d1 FROM TIMESTAMP_TBL
! WHERE d1 <= timestamp without time zone '1997-01-02' ORDER BY d1;
! 16 | d1
! ----+-----------------------------
! | -infinity
! | Tue Feb 16 17:32:01 0097 BC
! | Sat Feb 16 17:32:01 0097
! | Thu Feb 16 17:32:01 0597
! | Tue Feb 16 17:32:01 1097
! | Sat Feb 16 17:32:01 1697
! | Thu Feb 16 17:32:01 1797
! | Tue Feb 16 17:32:01 1897
! | Thu Jan 01 00:00:00 1970
! | Wed Feb 28 17:32:01 1996
! | Thu Feb 29 17:32:01 1996
! | Fri Mar 01 17:32:01 1996
! | Mon Dec 30 17:32:01 1996
! | Tue Dec 31 17:32:01 1996
! | Wed Jan 01 17:32:01 1997
! | Thu Jan 02 00:00:00 1997
! (16 rows)
!
! SELECT '' AS "49", d1 FROM TIMESTAMP_TBL
! WHERE d1 >= timestamp without time zone '1997-01-02' ORDER BY d1;
! 49 | d1
! ----+----------------------------
! | Thu Jan 02 00:00:00 1997
! | Thu Jan 02 03:04:05 1997
! | Mon Feb 10 17:32:00 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01.4 1997
! | Mon Feb 10 17:32:01.5 1997
! | Mon Feb 10 17:32:01.6 1997
! | Mon Feb 10 17:32:02 1997
! | Tue Feb 11 17:32:01 1997
! | Wed Feb 12 17:32:01 1997
! | Thu Feb 13 17:32:01 1997
! | Fri Feb 14 17:32:01 1997
! | Sat Feb 15 17:32:01 1997
! | Sun Feb 16 17:32:01 1997
! | Sun Feb 16 17:32:01 1997
! | Fri Feb 28 17:32:01 1997
! | Sat Mar 01 17:32:01 1997
! | Tue Jun 10 17:32:01 1997
! | Tue Jun 10 18:32:01 1997
! | Tue Dec 30 17:32:01 1997
! | Wed Dec 31 17:32:01 1997
! | Fri Dec 31 17:32:01 1999
! | Sat Jan 01 17:32:01 2000
! | Wed Mar 15 02:14:05 2000
! | Wed Mar 15 03:14:04 2000
! | Wed Mar 15 08:14:01 2000
! | Wed Mar 15 12:14:03 2000
! | Wed Mar 15 13:14:02 2000
! | Sun Dec 31 17:32:01 2000
! | Mon Jan 01 17:32:01 2001
! | Sat Sep 22 18:19:20 2001
! | Sat Feb 16 17:32:01 2097
! | infinity
! (50 rows)
!
! SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff
! FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01' ORDER BY d1;
! 54 | diff
! ----+----------------------------------------
! | @ 9863 days ago
! | @ 308 days 6 hours 27 mins 59 secs ago
! | @ 307 days 6 hours 27 mins 59 secs ago
! | @ 306 days 6 hours 27 mins 59 secs ago
! | @ 2 days 6 hours 27 mins 59 secs ago
! | @ 1 day 6 hours 27 mins 59 secs ago
! | @ 6 hours 27 mins 59 secs ago
! | @ 0
! | @ 3 hours 4 mins 5 secs
! | @ 39 days 17 hours 32 mins
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1.4 secs
! | @ 39 days 17 hours 32 mins 1.5 secs
! | @ 39 days 17 hours 32 mins 1.6 secs
! | @ 39 days 17 hours 32 mins 2 secs
! | @ 40 days 17 hours 32 mins 1 sec
! | @ 41 days 17 hours 32 mins 1 sec
! | @ 42 days 17 hours 32 mins 1 sec
! | @ 43 days 17 hours 32 mins 1 sec
! | @ 44 days 17 hours 32 mins 1 sec
! | @ 45 days 17 hours 32 mins 1 sec
! | @ 45 days 17 hours 32 mins 1 sec
! | @ 57 days 17 hours 32 mins 1 sec
! | @ 58 days 17 hours 32 mins 1 sec
! | @ 159 days 17 hours 32 mins 1 sec
! | @ 159 days 18 hours 32 mins 1 sec
! | @ 362 days 17 hours 32 mins 1 sec
! | @ 363 days 17 hours 32 mins 1 sec
! | @ 1093 days 17 hours 32 mins 1 sec
! | @ 1094 days 17 hours 32 mins 1 sec
! | @ 1168 days 2 hours 14 mins 5 secs
! | @ 1168 days 3 hours 14 mins 4 secs
! | @ 1168 days 8 hours 14 mins 1 sec
! | @ 1168 days 12 hours 14 mins 3 secs
! | @ 1168 days 13 hours 14 mins 2 secs
! | @ 1459 days 17 hours 32 mins 1 sec
! | @ 1460 days 17 hours 32 mins 1 sec
! | @ 1724 days 18 hours 19 mins 20 secs
! (55 rows)
!
! SELECT '' AS date_trunc_week, date_trunc( 'week', timestamp '2004-02-29 15:44:17.71393' ) AS week_trunc;
! date_trunc_week | week_trunc
! -----------------+--------------------------
! | Mon Feb 23 00:00:00 2004
! (1 row)
!
! -- Test casting within a BETWEEN qualifier
! SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff
! FROM TIMESTAMP_TBL
! WHERE d1 BETWEEN timestamp without time zone '1902-01-01'
! AND timestamp without time zone '2038-01-01' ORDER BY d1;
! 54 | diff
! ----+----------------------------------------
! | @ 9863 days ago
! | @ 308 days 6 hours 27 mins 59 secs ago
! | @ 307 days 6 hours 27 mins 59 secs ago
! | @ 306 days 6 hours 27 mins 59 secs ago
! | @ 2 days 6 hours 27 mins 59 secs ago
! | @ 1 day 6 hours 27 mins 59 secs ago
! | @ 6 hours 27 mins 59 secs ago
! | @ 0
! | @ 3 hours 4 mins 5 secs
! | @ 39 days 17 hours 32 mins
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1.4 secs
! | @ 39 days 17 hours 32 mins 1.5 secs
! | @ 39 days 17 hours 32 mins 1.6 secs
! | @ 39 days 17 hours 32 mins 2 secs
! | @ 40 days 17 hours 32 mins 1 sec
! | @ 41 days 17 hours 32 mins 1 sec
! | @ 42 days 17 hours 32 mins 1 sec
! | @ 43 days 17 hours 32 mins 1 sec
! | @ 44 days 17 hours 32 mins 1 sec
! | @ 45 days 17 hours 32 mins 1 sec
! | @ 45 days 17 hours 32 mins 1 sec
! | @ 57 days 17 hours 32 mins 1 sec
! | @ 58 days 17 hours 32 mins 1 sec
! | @ 159 days 17 hours 32 mins 1 sec
! | @ 159 days 18 hours 32 mins 1 sec
! | @ 362 days 17 hours 32 mins 1 sec
! | @ 363 days 17 hours 32 mins 1 sec
! | @ 1093 days 17 hours 32 mins 1 sec
! | @ 1094 days 17 hours 32 mins 1 sec
! | @ 1168 days 2 hours 14 mins 5 secs
! | @ 1168 days 3 hours 14 mins 4 secs
! | @ 1168 days 8 hours 14 mins 1 sec
! | @ 1168 days 12 hours 14 mins 3 secs
! | @ 1168 days 13 hours 14 mins 2 secs
! | @ 1459 days 17 hours 32 mins 1 sec
! | @ 1460 days 17 hours 32 mins 1 sec
! | @ 1724 days 18 hours 19 mins 20 secs
! (55 rows)
!
! SELECT '' AS "54", d1 as "timestamp",
! date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
! date_part( 'day', d1) AS day, date_part( 'hour', d1) AS hour,
! date_part( 'minute', d1) AS minute, date_part( 'second', d1) AS second
! FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01' ORDER BY d1;
! 54 | timestamp | year | month | day | hour | minute | second
! ----+----------------------------+------+-------+-----+------+--------+--------
! | Thu Jan 01 00:00:00 1970 | 1970 | 1 | 1 | 0 | 0 | 0
! | Wed Feb 28 17:32:01 1996 | 1996 | 2 | 28 | 17 | 32 | 1
! | Thu Feb 29 17:32:01 1996 | 1996 | 2 | 29 | 17 | 32 | 1
! | Fri Mar 01 17:32:01 1996 | 1996 | 3 | 1 | 17 | 32 | 1
! | Mon Dec 30 17:32:01 1996 | 1996 | 12 | 30 | 17 | 32 | 1
! | Tue Dec 31 17:32:01 1996 | 1996 | 12 | 31 | 17 | 32 | 1
! | Wed Jan 01 17:32:01 1997 | 1997 | 1 | 1 | 17 | 32 | 1
! | Thu Jan 02 00:00:00 1997 | 1997 | 1 | 2 | 0 | 0 | 0
! | Thu Jan 02 03:04:05 1997 | 1997 | 1 | 2 | 3 | 4 | 5
! | Mon Feb 10 17:32:00 1997 | 1997 | 2 | 10 | 17 | 32 | 0
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01.4 1997 | 1997 | 2 | 10 | 17 | 32 | 1.4
! | Mon Feb 10 17:32:01.5 1997 | 1997 | 2 | 10 | 17 | 32 | 1.5
! | Mon Feb 10 17:32:01.6 1997 | 1997 | 2 | 10 | 17 | 32 | 1.6
! | Mon Feb 10 17:32:02 1997 | 1997 | 2 | 10 | 17 | 32 | 2
! | Tue Feb 11 17:32:01 1997 | 1997 | 2 | 11 | 17 | 32 | 1
! | Wed Feb 12 17:32:01 1997 | 1997 | 2 | 12 | 17 | 32 | 1
! | Thu Feb 13 17:32:01 1997 | 1997 | 2 | 13 | 17 | 32 | 1
! | Fri Feb 14 17:32:01 1997 | 1997 | 2 | 14 | 17 | 32 | 1
! | Sat Feb 15 17:32:01 1997 | 1997 | 2 | 15 | 17 | 32 | 1
! | Sun Feb 16 17:32:01 1997 | 1997 | 2 | 16 | 17 | 32 | 1
! | Sun Feb 16 17:32:01 1997 | 1997 | 2 | 16 | 17 | 32 | 1
! | Fri Feb 28 17:32:01 1997 | 1997 | 2 | 28 | 17 | 32 | 1
! | Sat Mar 01 17:32:01 1997 | 1997 | 3 | 1 | 17 | 32 | 1
! | Tue Jun 10 17:32:01 1997 | 1997 | 6 | 10 | 17 | 32 | 1
! | Tue Jun 10 18:32:01 1997 | 1997 | 6 | 10 | 18 | 32 | 1
! | Tue Dec 30 17:32:01 1997 | 1997 | 12 | 30 | 17 | 32 | 1
! | Wed Dec 31 17:32:01 1997 | 1997 | 12 | 31 | 17 | 32 | 1
! | Fri Dec 31 17:32:01 1999 | 1999 | 12 | 31 | 17 | 32 | 1
! | Sat Jan 01 17:32:01 2000 | 2000 | 1 | 1 | 17 | 32 | 1
! | Wed Mar 15 02:14:05 2000 | 2000 | 3 | 15 | 2 | 14 | 5
! | Wed Mar 15 03:14:04 2000 | 2000 | 3 | 15 | 3 | 14 | 4
! | Wed Mar 15 08:14:01 2000 | 2000 | 3 | 15 | 8 | 14 | 1
! | Wed Mar 15 12:14:03 2000 | 2000 | 3 | 15 | 12 | 14 | 3
! | Wed Mar 15 13:14:02 2000 | 2000 | 3 | 15 | 13 | 14 | 2
! | Sun Dec 31 17:32:01 2000 | 2000 | 12 | 31 | 17 | 32 | 1
! | Mon Jan 01 17:32:01 2001 | 2001 | 1 | 1 | 17 | 32 | 1
! | Sat Sep 22 18:19:20 2001 | 2001 | 9 | 22 | 18 | 19 | 20
! (55 rows)
!
! SELECT '' AS "54", d1 as "timestamp",
! date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
! date_part( 'usec', d1) AS usec
! FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01' ORDER BY d1;
! 54 | timestamp | quarter | msec | usec
! ----+----------------------------+---------+-------+----------
! | Thu Jan 01 00:00:00 1970 | 1 | 0 | 0
! | Wed Feb 28 17:32:01 1996 | 1 | 1000 | 1000000
! | Thu Feb 29 17:32:01 1996 | 1 | 1000 | 1000000
! | Fri Mar 01 17:32:01 1996 | 1 | 1000 | 1000000
! | Mon Dec 30 17:32:01 1996 | 4 | 1000 | 1000000
! | Tue Dec 31 17:32:01 1996 | 4 | 1000 | 1000000
! | Wed Jan 01 17:32:01 1997 | 1 | 1000 | 1000000
! | Thu Jan 02 00:00:00 1997 | 1 | 0 | 0
! | Thu Jan 02 03:04:05 1997 | 1 | 5000 | 5000000
! | Mon Feb 10 17:32:00 1997 | 1 | 0 | 0
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01.4 1997 | 1 | 1400 | 1400000
! | Mon Feb 10 17:32:01.5 1997 | 1 | 1500 | 1500000
! | Mon Feb 10 17:32:01.6 1997 | 1 | 1600 | 1600000
! | Mon Feb 10 17:32:02 1997 | 1 | 2000 | 2000000
! | Tue Feb 11 17:32:01 1997 | 1 | 1000 | 1000000
! | Wed Feb 12 17:32:01 1997 | 1 | 1000 | 1000000
! | Thu Feb 13 17:32:01 1997 | 1 | 1000 | 1000000
! | Fri Feb 14 17:32:01 1997 | 1 | 1000 | 1000000
! | Sat Feb 15 17:32:01 1997 | 1 | 1000 | 1000000
! | Sun Feb 16 17:32:01 1997 | 1 | 1000 | 1000000
! | Sun Feb 16 17:32:01 1997 | 1 | 1000 | 1000000
! | Fri Feb 28 17:32:01 1997 | 1 | 1000 | 1000000
! | Sat Mar 01 17:32:01 1997 | 1 | 1000 | 1000000
! | Tue Jun 10 17:32:01 1997 | 2 | 1000 | 1000000
! | Tue Jun 10 18:32:01 1997 | 2 | 1000 | 1000000
! | Tue Dec 30 17:32:01 1997 | 4 | 1000 | 1000000
! | Wed Dec 31 17:32:01 1997 | 4 | 1000 | 1000000
! | Fri Dec 31 17:32:01 1999 | 4 | 1000 | 1000000
! | Sat Jan 01 17:32:01 2000 | 1 | 1000 | 1000000
! | Wed Mar 15 02:14:05 2000 | 1 | 5000 | 5000000
! | Wed Mar 15 03:14:04 2000 | 1 | 4000 | 4000000
! | Wed Mar 15 08:14:01 2000 | 1 | 1000 | 1000000
! | Wed Mar 15 12:14:03 2000 | 1 | 3000 | 3000000
! | Wed Mar 15 13:14:02 2000 | 1 | 2000 | 2000000
! | Sun Dec 31 17:32:01 2000 | 4 | 1000 | 1000000
! | Mon Jan 01 17:32:01 2001 | 1 | 1000 | 1000000
! | Sat Sep 22 18:19:20 2001 | 3 | 20000 | 20000000
! (55 rows)
!
! SELECT '' AS "54", d1 as "timestamp",
! date_part( 'isoyear', d1) AS isoyear, date_part( 'week', d1) AS week,
! date_part( 'dow', d1) AS dow
! FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01' ORDER BY d1;
! 54 | timestamp | isoyear | week | dow
! ----+----------------------------+---------+------+-----
! | Thu Jan 01 00:00:00 1970 | 1970 | 1 | 4
! | Wed Feb 28 17:32:01 1996 | 1996 | 9 | 3
! | Thu Feb 29 17:32:01 1996 | 1996 | 9 | 4
! | Fri Mar 01 17:32:01 1996 | 1996 | 9 | 5
! | Mon Dec 30 17:32:01 1996 | 1997 | 1 | 1
! | Tue Dec 31 17:32:01 1996 | 1997 | 1 | 2
! | Wed Jan 01 17:32:01 1997 | 1997 | 1 | 3
! | Thu Jan 02 00:00:00 1997 | 1997 | 1 | 4
! | Thu Jan 02 03:04:05 1997 | 1997 | 1 | 4
! | Mon Feb 10 17:32:00 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01.4 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01.5 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:01.6 1997 | 1997 | 7 | 1
! | Mon Feb 10 17:32:02 1997 | 1997 | 7 | 1
! | Tue Feb 11 17:32:01 1997 | 1997 | 7 | 2
! | Wed Feb 12 17:32:01 1997 | 1997 | 7 | 3
! | Thu Feb 13 17:32:01 1997 | 1997 | 7 | 4
! | Fri Feb 14 17:32:01 1997 | 1997 | 7 | 5
! | Sat Feb 15 17:32:01 1997 | 1997 | 7 | 6
! | Sun Feb 16 17:32:01 1997 | 1997 | 7 | 0
! | Sun Feb 16 17:32:01 1997 | 1997 | 7 | 0
! | Fri Feb 28 17:32:01 1997 | 1997 | 9 | 5
! | Sat Mar 01 17:32:01 1997 | 1997 | 9 | 6
! | Tue Jun 10 17:32:01 1997 | 1997 | 24 | 2
! | Tue Jun 10 18:32:01 1997 | 1997 | 24 | 2
! | Tue Dec 30 17:32:01 1997 | 1998 | 1 | 2
! | Wed Dec 31 17:32:01 1997 | 1998 | 1 | 3
! | Fri Dec 31 17:32:01 1999 | 1999 | 52 | 5
! | Sat Jan 01 17:32:01 2000 | 1999 | 52 | 6
! | Wed Mar 15 02:14:05 2000 | 2000 | 11 | 3
! | Wed Mar 15 03:14:04 2000 | 2000 | 11 | 3
! | Wed Mar 15 08:14:01 2000 | 2000 | 11 | 3
! | Wed Mar 15 12:14:03 2000 | 2000 | 11 | 3
! | Wed Mar 15 13:14:02 2000 | 2000 | 11 | 3
! | Sun Dec 31 17:32:01 2000 | 2000 | 52 | 0
! | Mon Jan 01 17:32:01 2001 | 2001 | 1 | 1
! | Sat Sep 22 18:19:20 2001 | 2001 | 38 | 6
! (55 rows)
!
! -- TO_CHAR()
! SELECT '' AS to_char_1, to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_1 | to_char
! -----------+------------------------------------------------------------------------------------------
! |
! | TUESDAY Tuesday tuesday TUE Tue tue FEBRUARY February february II FEB Feb feb
! | SATURDAY Saturday saturday SAT Sat sat FEBRUARY February february II FEB Feb feb
! | THURSDAY Thursday thursday THU Thu thu FEBRUARY February february II FEB Feb feb
! | TUESDAY Tuesday tuesday TUE Tue tue FEBRUARY February february II FEB Feb feb
! | SATURDAY Saturday saturday SAT Sat sat FEBRUARY February february II FEB Feb feb
! | THURSDAY Thursday thursday THU Thu thu FEBRUARY February february II FEB Feb feb
! | TUESDAY Tuesday tuesday TUE Tue tue FEBRUARY February february II FEB Feb feb
! | THURSDAY Thursday thursday THU Thu thu JANUARY January january I JAN Jan jan
! | WEDNESDAY Wednesday wednesday WED Wed wed FEBRUARY February february II FEB Feb feb
! | THURSDAY Thursday thursday THU Thu thu FEBRUARY February february II FEB Feb feb
! | FRIDAY Friday friday FRI Fri fri MARCH March march III MAR Mar mar
! | MONDAY Monday monday MON Mon mon DECEMBER December december XII DEC Dec dec
! | TUESDAY Tuesday tuesday TUE Tue tue DECEMBER December december XII DEC Dec dec
! | WEDNESDAY Wednesday wednesday WED Wed wed JANUARY January january I JAN Jan jan
! | THURSDAY Thursday thursday THU Thu thu JANUARY January january I JAN Jan jan
! | THURSDAY Thursday thursday THU Thu thu JANUARY January january I JAN Jan jan
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | TUESDAY Tuesday tuesday TUE Tue tue FEBRUARY February february II FEB Feb feb
! | WEDNESDAY Wednesday wednesday WED Wed wed FEBRUARY February february II FEB Feb feb
! | THURSDAY Thursday thursday THU Thu thu FEBRUARY February february II FEB Feb feb
! | FRIDAY Friday friday FRI Fri fri FEBRUARY February february II FEB Feb feb
! | SATURDAY Saturday saturday SAT Sat sat FEBRUARY February february II FEB Feb feb
! | SUNDAY Sunday sunday SUN Sun sun FEBRUARY February february II FEB Feb feb
! | SUNDAY Sunday sunday SUN Sun sun FEBRUARY February february II FEB Feb feb
! | FRIDAY Friday friday FRI Fri fri FEBRUARY February february II FEB Feb feb
! | SATURDAY Saturday saturday SAT Sat sat MARCH March march III MAR Mar mar
! | TUESDAY Tuesday tuesday TUE Tue tue JUNE June june VI JUN Jun jun
! | TUESDAY Tuesday tuesday TUE Tue tue JUNE June june VI JUN Jun jun
! | TUESDAY Tuesday tuesday TUE Tue tue DECEMBER December december XII DEC Dec dec
! | WEDNESDAY Wednesday wednesday WED Wed wed DECEMBER December december XII DEC Dec dec
! | FRIDAY Friday friday FRI Fri fri DECEMBER December december XII DEC Dec dec
! | SATURDAY Saturday saturday SAT Sat sat JANUARY January january I JAN Jan jan
! | WEDNESDAY Wednesday wednesday WED Wed wed MARCH March march III MAR Mar mar
! | WEDNESDAY Wednesday wednesday WED Wed wed MARCH March march III MAR Mar mar
! | WEDNESDAY Wednesday wednesday WED Wed wed MARCH March march III MAR Mar mar
! | WEDNESDAY Wednesday wednesday WED Wed wed MARCH March march III MAR Mar mar
! | WEDNESDAY Wednesday wednesday WED Wed wed MARCH March march III MAR Mar mar
! | SUNDAY Sunday sunday SUN Sun sun DECEMBER December december XII DEC Dec dec
! | MONDAY Monday monday MON Mon mon JANUARY January january I JAN Jan jan
! | SATURDAY Saturday saturday SAT Sat sat SEPTEMBER September september IX SEP Sep sep
! | SATURDAY Saturday saturday SAT Sat sat FEBRUARY February february II FEB Feb feb
! |
! (65 rows)
!
! SELECT '' AS to_char_2, to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_2 | to_char
! -----------+--------------------------------------------------------------
! |
! | TUESDAY Tuesday tuesday FEBRUARY February february II
! | SATURDAY Saturday saturday FEBRUARY February february II
! | THURSDAY Thursday thursday FEBRUARY February february II
! | TUESDAY Tuesday tuesday FEBRUARY February february II
! | SATURDAY Saturday saturday FEBRUARY February february II
! | THURSDAY Thursday thursday FEBRUARY February february II
! | TUESDAY Tuesday tuesday FEBRUARY February february II
! | THURSDAY Thursday thursday JANUARY January january I
! | WEDNESDAY Wednesday wednesday FEBRUARY February february II
! | THURSDAY Thursday thursday FEBRUARY February february II
! | FRIDAY Friday friday MARCH March march III
! | MONDAY Monday monday DECEMBER December december XII
! | TUESDAY Tuesday tuesday DECEMBER December december XII
! | WEDNESDAY Wednesday wednesday JANUARY January january I
! | THURSDAY Thursday thursday JANUARY January january I
! | THURSDAY Thursday thursday JANUARY January january I
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | TUESDAY Tuesday tuesday FEBRUARY February february II
! | WEDNESDAY Wednesday wednesday FEBRUARY February february II
! | THURSDAY Thursday thursday FEBRUARY February february II
! | FRIDAY Friday friday FEBRUARY February february II
! | SATURDAY Saturday saturday FEBRUARY February february II
! | SUNDAY Sunday sunday FEBRUARY February february II
! | SUNDAY Sunday sunday FEBRUARY February february II
! | FRIDAY Friday friday FEBRUARY February february II
! | SATURDAY Saturday saturday MARCH March march III
! | TUESDAY Tuesday tuesday JUNE June june VI
! | TUESDAY Tuesday tuesday JUNE June june VI
! | TUESDAY Tuesday tuesday DECEMBER December december XII
! | WEDNESDAY Wednesday wednesday DECEMBER December december XII
! | FRIDAY Friday friday DECEMBER December december XII
! | SATURDAY Saturday saturday JANUARY January january I
! | WEDNESDAY Wednesday wednesday MARCH March march III
! | WEDNESDAY Wednesday wednesday MARCH March march III
! | WEDNESDAY Wednesday wednesday MARCH March march III
! | WEDNESDAY Wednesday wednesday MARCH March march III
! | WEDNESDAY Wednesday wednesday MARCH March march III
! | SUNDAY Sunday sunday DECEMBER December december XII
! | MONDAY Monday monday JANUARY January january I
! | SATURDAY Saturday saturday SEPTEMBER September september IX
! | SATURDAY Saturday saturday FEBRUARY February february II
! |
! (65 rows)
!
! SELECT '' AS to_char_3, to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_3 | to_char
! -----------+-------------------------------------------------
! |
! | 0,097 0097 097 97 7 -1 1 02 07 047 16 3 1686042
! | 0,097 0097 097 97 7 01 1 02 07 047 16 7 1756536
! | 0,597 0597 597 97 7 06 1 02 07 047 16 5 1939157
! | 1,097 1097 097 97 7 11 1 02 07 047 16 3 2121778
! | 1,697 1697 697 97 7 17 1 02 07 047 16 7 2340924
! | 1,797 1797 797 97 7 18 1 02 07 047 16 5 2377448
! | 1,897 1897 897 97 7 19 1 02 07 047 16 3 2413972
! | 1,970 1970 970 70 0 20 1 01 01 001 01 5 2440588
! | 1,996 1996 996 96 6 20 1 02 09 059 28 4 2450142
! | 1,996 1996 996 96 6 20 1 02 09 060 29 5 2450143
! | 1,996 1996 996 96 6 20 1 03 09 061 01 6 2450144
! | 1,996 1996 996 96 6 20 4 12 53 365 30 2 2450448
! | 1,996 1996 996 96 6 20 4 12 53 366 31 3 2450449
! | 1,997 1997 997 97 7 20 1 01 01 001 01 4 2450450
! | 1,997 1997 997 97 7 20 1 01 01 002 02 5 2450451
! | 1,997 1997 997 97 7 20 1 01 01 002 02 5 2450451
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 042 11 3 2450491
! | 1,997 1997 997 97 7 20 1 02 07 043 12 4 2450492
! | 1,997 1997 997 97 7 20 1 02 07 044 13 5 2450493
! | 1,997 1997 997 97 7 20 1 02 07 045 14 6 2450494
! | 1,997 1997 997 97 7 20 1 02 07 046 15 7 2450495
! | 1,997 1997 997 97 7 20 1 02 07 047 16 1 2450496
! | 1,997 1997 997 97 7 20 1 02 07 047 16 1 2450496
! | 1,997 1997 997 97 7 20 1 02 09 059 28 6 2450508
! | 1,997 1997 997 97 7 20 1 03 09 060 01 7 2450509
! | 1,997 1997 997 97 7 20 2 06 23 161 10 3 2450610
! | 1,997 1997 997 97 7 20 2 06 23 161 10 3 2450610
! | 1,997 1997 997 97 7 20 4 12 52 364 30 3 2450813
! | 1,997 1997 997 97 7 20 4 12 53 365 31 4 2450814
! | 1,999 1999 999 99 9 20 4 12 53 365 31 6 2451544
! | 2,000 2000 000 00 0 20 1 01 01 001 01 7 2451545
! | 2,000 2000 000 00 0 20 1 03 11 075 15 4 2451619
! | 2,000 2000 000 00 0 20 1 03 11 075 15 4 2451619
! | 2,000 2000 000 00 0 20 1 03 11 075 15 4 2451619
! | 2,000 2000 000 00 0 20 1 03 11 075 15 4 2451619
! | 2,000 2000 000 00 0 20 1 03 11 075 15 4 2451619
! | 2,000 2000 000 00 0 20 4 12 53 366 31 1 2451910
! | 2,001 2001 001 01 1 21 1 01 01 001 01 2 2451911
! | 2,001 2001 001 01 1 21 3 09 38 265 22 7 2452175
! | 2,097 2097 097 97 7 21 1 02 07 047 16 7 2487021
! |
! (65 rows)
!
! SELECT '' AS to_char_4, to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_4 | to_char
! -----------+-------------------------------------------------
! |
! | 0,097 97 97 97 7 -1 1 2 7 47 16 3 1686042
! | 0,097 97 97 97 7 1 1 2 7 47 16 7 1756536
! | 0,597 597 597 97 7 6 1 2 7 47 16 5 1939157
! | 1,097 1097 97 97 7 11 1 2 7 47 16 3 2121778
! | 1,697 1697 697 97 7 17 1 2 7 47 16 7 2340924
! | 1,797 1797 797 97 7 18 1 2 7 47 16 5 2377448
! | 1,897 1897 897 97 7 19 1 2 7 47 16 3 2413972
! | 1,970 1970 970 70 0 20 1 1 1 1 1 5 2440588
! | 1,996 1996 996 96 6 20 1 2 9 59 28 4 2450142
! | 1,996 1996 996 96 6 20 1 2 9 60 29 5 2450143
! | 1,996 1996 996 96 6 20 1 3 9 61 1 6 2450144
! | 1,996 1996 996 96 6 20 4 12 53 365 30 2 2450448
! | 1,996 1996 996 96 6 20 4 12 53 366 31 3 2450449
! | 1,997 1997 997 97 7 20 1 1 1 1 1 4 2450450
! | 1,997 1997 997 97 7 20 1 1 1 2 2 5 2450451
! | 1,997 1997 997 97 7 20 1 1 1 2 2 5 2450451
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 42 11 3 2450491
! | 1,997 1997 997 97 7 20 1 2 7 43 12 4 2450492
! | 1,997 1997 997 97 7 20 1 2 7 44 13 5 2450493
! | 1,997 1997 997 97 7 20 1 2 7 45 14 6 2450494
! | 1,997 1997 997 97 7 20 1 2 7 46 15 7 2450495
! | 1,997 1997 997 97 7 20 1 2 7 47 16 1 2450496
! | 1,997 1997 997 97 7 20 1 2 7 47 16 1 2450496
! | 1,997 1997 997 97 7 20 1 2 9 59 28 6 2450508
! | 1,997 1997 997 97 7 20 1 3 9 60 1 7 2450509
! | 1,997 1997 997 97 7 20 2 6 23 161 10 3 2450610
! | 1,997 1997 997 97 7 20 2 6 23 161 10 3 2450610
! | 1,997 1997 997 97 7 20 4 12 52 364 30 3 2450813
! | 1,997 1997 997 97 7 20 4 12 53 365 31 4 2450814
! | 1,999 1999 999 99 9 20 4 12 53 365 31 6 2451544
! | 2,000 2000 0 0 0 20 1 1 1 1 1 7 2451545
! | 2,000 2000 0 0 0 20 1 3 11 75 15 4 2451619
! | 2,000 2000 0 0 0 20 1 3 11 75 15 4 2451619
! | 2,000 2000 0 0 0 20 1 3 11 75 15 4 2451619
! | 2,000 2000 0 0 0 20 1 3 11 75 15 4 2451619
! | 2,000 2000 0 0 0 20 1 3 11 75 15 4 2451619
! | 2,000 2000 0 0 0 20 4 12 53 366 31 1 2451910
! | 2,001 2001 1 1 1 21 1 1 1 1 1 2 2451911
! | 2,001 2001 1 1 1 21 3 9 38 265 22 7 2452175
! | 2,097 2097 97 97 7 21 1 2 7 47 16 7 2487021
! |
! (65 rows)
!
! SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_5 | to_char
! -----------+----------------------
! |
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 12 12 00 00 00 0
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 12 12 00 00 00 0
! | 03 03 03 04 05 11045
! | 05 05 17 32 00 63120
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 02 63122
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 06 06 18 32 01 66721
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 02 02 02 14 05 8045
! | 03 03 03 14 04 11644
! | 08 08 08 14 01 29641
! | 12 12 12 14 03 44043
! | 01 01 13 14 02 47642
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 06 06 18 19 20 65960
! | 05 05 17 32 01 63121
! |
! (65 rows)
!
! SELECT '' AS to_char_6, to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_6 | to_char
! -----------+-------------------------------------------------
! |
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 12:00:00 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 12:00:00 "text between quote marks"
! | HH:MI:SS is 03:04:05 "text between quote marks"
! | HH:MI:SS is 05:32:00 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:02 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 06:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 02:14:05 "text between quote marks"
! | HH:MI:SS is 03:14:04 "text between quote marks"
! | HH:MI:SS is 08:14:01 "text between quote marks"
! | HH:MI:SS is 12:14:03 "text between quote marks"
! | HH:MI:SS is 01:14:02 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 06:19:20 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! |
! (65 rows)
!
! SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_7 | to_char
! -----------+------------------------
! |
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 00--text--00--text--00
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 00--text--00--text--00
! | 03--text--04--text--05
! | 17--text--32--text--00
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--02
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 18--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 02--text--14--text--05
! | 03--text--14--text--04
! | 08--text--14--text--01
! | 12--text--14--text--03
! | 13--text--14--text--02
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 18--text--19--text--20
! | 17--text--32--text--01
! |
! (65 rows)
!
! SELECT '' AS to_char_8, to_char(d1, 'YYYYTH YYYYth Jth')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_8 | to_char
! -----------+-------------------------
! |
! | 0097TH 0097th 1686042nd
! | 0097TH 0097th 1756536th
! | 0597TH 0597th 1939157th
! | 1097TH 1097th 2121778th
! | 1697TH 1697th 2340924th
! | 1797TH 1797th 2377448th
! | 1897TH 1897th 2413972nd
! | 1970TH 1970th 2440588th
! | 1996TH 1996th 2450142nd
! | 1996TH 1996th 2450143rd
! | 1996TH 1996th 2450144th
! | 1996TH 1996th 2450448th
! | 1996TH 1996th 2450449th
! | 1997TH 1997th 2450450th
! | 1997TH 1997th 2450451st
! | 1997TH 1997th 2450451st
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450491st
! | 1997TH 1997th 2450492nd
! | 1997TH 1997th 2450493rd
! | 1997TH 1997th 2450494th
! | 1997TH 1997th 2450495th
! | 1997TH 1997th 2450496th
! | 1997TH 1997th 2450496th
! | 1997TH 1997th 2450508th
! | 1997TH 1997th 2450509th
! | 1997TH 1997th 2450610th
! | 1997TH 1997th 2450610th
! | 1997TH 1997th 2450813th
! | 1997TH 1997th 2450814th
! | 1999TH 1999th 2451544th
! | 2000TH 2000th 2451545th
! | 2000TH 2000th 2451619th
! | 2000TH 2000th 2451619th
! | 2000TH 2000th 2451619th
! | 2000TH 2000th 2451619th
! | 2000TH 2000th 2451619th
! | 2000TH 2000th 2451910th
! | 2001ST 2001st 2451911th
! | 2001ST 2001st 2452175th
! | 2097TH 2097th 2487021st
! |
! (65 rows)
!
!
! SELECT '' AS to_char_9, 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')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_9 | to_char
! -----------+---------------------------------------------------------------------
! |
! | 0097 B.C. 0097 b.c. 0097 bc 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 0097 A.D. 0097 a.d. 0097 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 0597 A.D. 0597 a.d. 0597 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1097 A.D. 1097 a.d. 1097 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1697 A.D. 1697 a.d. 1697 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1797 A.D. 1797 a.d. 1797 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1897 A.D. 1897 a.d. 1897 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1970 A.D. 1970 a.d. 1970 ad 12:00:00 A.M. 12:00:00 a.m. 12:00:00 am
! | 1996 A.D. 1996 a.d. 1996 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1996 A.D. 1996 a.d. 1996 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1996 A.D. 1996 a.d. 1996 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1996 A.D. 1996 a.d. 1996 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1996 A.D. 1996 a.d. 1996 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 12:00:00 A.M. 12:00:00 a.m. 12:00:00 am
! | 1997 A.D. 1997 a.d. 1997 ad 03:04:05 A.M. 03:04:05 a.m. 03:04:05 am
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:00 P.M. 05:32:00 p.m. 05:32:00 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:02 P.M. 05:32:02 p.m. 05:32:02 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 06:32:01 P.M. 06:32:01 p.m. 06:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1999 A.D. 1999 a.d. 1999 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 2000 A.D. 2000 a.d. 2000 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 2000 A.D. 2000 a.d. 2000 ad 02:14:05 A.M. 02:14:05 a.m. 02:14:05 am
! | 2000 A.D. 2000 a.d. 2000 ad 03:14:04 A.M. 03:14:04 a.m. 03:14:04 am
! | 2000 A.D. 2000 a.d. 2000 ad 08:14:01 A.M. 08:14:01 a.m. 08:14:01 am
! | 2000 A.D. 2000 a.d. 2000 ad 12:14:03 P.M. 12:14:03 p.m. 12:14:03 pm
! | 2000 A.D. 2000 a.d. 2000 ad 01:14:02 P.M. 01:14:02 p.m. 01:14:02 pm
! | 2000 A.D. 2000 a.d. 2000 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 2001 A.D. 2001 a.d. 2001 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 2001 A.D. 2001 a.d. 2001 ad 06:19:20 P.M. 06:19:20 p.m. 06:19:20 pm
! | 2097 A.D. 2097 a.d. 2097 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! |
! (65 rows)
!
! SELECT '' AS to_char_10, to_char(d1, 'IYYY IYY IY I IW IDDD ID')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_10 | to_char
! ------------+------------------------
! |
! | 0097 097 97 7 07 044 2
! | 0097 097 97 7 07 048 6
! | 0597 597 97 7 07 046 4
! | 1097 097 97 7 07 044 2
! | 1697 697 97 7 07 048 6
! | 1797 797 97 7 07 046 4
! | 1897 897 97 7 07 044 2
! | 1970 970 70 0 01 004 4
! | 1996 996 96 6 09 059 3
! | 1996 996 96 6 09 060 4
! | 1996 996 96 6 09 061 5
! | 1997 997 97 7 01 001 1
! | 1997 997 97 7 01 002 2
! | 1997 997 97 7 01 003 3
! | 1997 997 97 7 01 004 4
! | 1997 997 97 7 01 004 4
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 044 2
! | 1997 997 97 7 07 045 3
! | 1997 997 97 7 07 046 4
! | 1997 997 97 7 07 047 5
! | 1997 997 97 7 07 048 6
! | 1997 997 97 7 07 049 7
! | 1997 997 97 7 07 049 7
! | 1997 997 97 7 09 061 5
! | 1997 997 97 7 09 062 6
! | 1997 997 97 7 24 163 2
! | 1997 997 97 7 24 163 2
! | 1998 998 98 8 01 002 2
! | 1998 998 98 8 01 003 3
! | 1999 999 99 9 52 362 5
! | 1999 999 99 9 52 363 6
! | 2000 000 00 0 11 073 3
! | 2000 000 00 0 11 073 3
! | 2000 000 00 0 11 073 3
! | 2000 000 00 0 11 073 3
! | 2000 000 00 0 11 073 3
! | 2000 000 00 0 52 364 7
! | 2001 001 01 1 01 001 1
! | 2001 001 01 1 38 265 6
! | 2097 097 97 7 07 048 6
! |
! (65 rows)
!
! SELECT '' AS to_char_11, to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID')
! FROM TIMESTAMP_TBL ORDER BY d1;
! to_char_11 | to_char
! ------------+------------------------
! |
! | 97 97 97 7 7 44 2
! | 97 97 97 7 7 48 6
! | 597 597 97 7 7 46 4
! | 1097 97 97 7 7 44 2
! | 1697 697 97 7 7 48 6
! | 1797 797 97 7 7 46 4
! | 1897 897 97 7 7 44 2
! | 1970 970 70 0 1 4 4
! | 1996 996 96 6 9 59 3
! | 1996 996 96 6 9 60 4
! | 1996 996 96 6 9 61 5
! | 1997 997 97 7 1 1 1
! | 1997 997 97 7 1 2 2
! | 1997 997 97 7 1 3 3
! | 1997 997 97 7 1 4 4
! | 1997 997 97 7 1 4 4
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 44 2
! | 1997 997 97 7 7 45 3
! | 1997 997 97 7 7 46 4
! | 1997 997 97 7 7 47 5
! | 1997 997 97 7 7 48 6
! | 1997 997 97 7 7 49 7
! | 1997 997 97 7 7 49 7
! | 1997 997 97 7 9 61 5
! | 1997 997 97 7 9 62 6
! | 1997 997 97 7 24 163 2
! | 1997 997 97 7 24 163 2
! | 1998 998 98 8 1 2 2
! | 1998 998 98 8 1 3 3
! | 1999 999 99 9 52 362 5
! | 1999 999 99 9 52 363 6
! | 2000 0 0 0 11 73 3
! | 2000 0 0 0 11 73 3
! | 2000 0 0 0 11 73 3
! | 2000 0 0 0 11 73 3
! | 2000 0 0 0 11 73 3
! | 2000 0 0 0 52 364 7
! | 2001 1 1 1 1 1 1
! | 2001 1 1 1 38 265 6
! | 2097 97 97 7 7 48 6
! |
! (65 rows)
!
! -- timestamp numeric fields constructor
! SELECT make_timestamp(2014,12,28,6,30,45.887);
! make_timestamp
! ------------------------------
! Sun Dec 28 06:30:45.887 2014
! (1 row)
!
! -- test if now() gives a correct timestamp and does not marely reports the
! -- value saved from the previous transaction
! CREATE TABLE testnow(t timestamp);
! INSERT INTO testnow SELECT now();
! BEGIN;
! INSERT INTO testnow SELECT now();
! SELECT COUNT(DISTINCT t) FROM testnow;
! count
! -------
! 2
! (1 row)
!
! CREATE TABLE test_now(a timestamp);
! INSERT INTO testnow SELECT now();
! SELECT COUNT(DISTINCT t) FROM testnow;
! count
! -------
! 2
! (1 row)
!
! ROLLBACK;
! DROP TABLE testnow;
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/timestamptz.out 2016-04-02 21:48:58.136563364 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/timestamptz.out 2016-04-04 03:18:31.076898577 +0000
***************
*** 1,2545 ****
! --
! -- TIMESTAMPTZ
! --
! CREATE TABLE TIMESTAMPTZ_TBL (d1 timestamp(2) with time zone);
! -- Test shorthand input values
! -- We can't just "select" the results since they aren't constants; test for
! -- equality instead. We can do that by running the test inside a transaction
! -- block, within which the value of 'now' shouldn't change. We also check
! -- that 'now' *does* change over a reasonable interval such as 100 msec.
! -- NOTE: it is possible for this part of the test to fail if the transaction
! -- block is entered exactly at local midnight; then 'now' and 'today' have
! -- the same values and the counts will come out different.
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('now');
! SELECT pg_sleep(0.1);
! pg_sleep
! ----------
!
! (1 row)
!
! BEGIN;
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('now');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('today');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('yesterday');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('tomorrow');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('tomorrow EST');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('tomorrow zulu');
! SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp with time zone 'today';
! one
! -----
! 1
! (1 row)
!
! SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp with time zone 'tomorrow';
! one
! -----
! 1
! (1 row)
!
! SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp with time zone 'yesterday';
! one
! -----
! 1
! (1 row)
!
! SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp(2) with time zone 'now';
! one
! -----
! 1
! (1 row)
!
! COMMIT;
! DELETE FROM TIMESTAMPTZ_TBL;
! -- verify uniform transaction time within transaction block
! BEGIN;
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('now');
! SELECT pg_sleep(0.1);
! pg_sleep
! ----------
!
! (1 row)
!
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('now');
! SELECT pg_sleep(0.1);
! pg_sleep
! ----------
!
! (1 row)
!
! SELECT count(*) AS two FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp(2) with time zone 'now';
! two
! -----
! 2
! (1 row)
!
! COMMIT;
! DELETE FROM TIMESTAMPTZ_TBL;
! -- Special values
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('-infinity');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('infinity');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('epoch');
! -- Obsolete special values
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('invalid');
! ERROR: date/time value "invalid" is no longer supported
! LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('invalid');
! ^
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('undefined');
! ERROR: date/time value "undefined" is no longer supported
! LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('undefined');
! ^
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('current');
! ERROR: date/time value "current" is no longer supported
! LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('current');
! ^
! -- Postgres v6.0 standard output format
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01 1997 PST');
! -- Variations on Postgres v6.1 standard output format
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01.000001 1997 PST');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01.999999 1997 PST');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01.4 1997 PST');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01.5 1997 PST');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01.6 1997 PST');
! -- ISO 8601 format
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-01-02');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-01-02 03:04:05');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-02-10 17:32:01-08');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-02-10 17:32:01-0800');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-02-10 17:32:01 -08:00');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970210 173201 -0800');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-06-10 17:32:01 -07:00');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('2001-09-22T18:19:20');
! -- POSIX format (note that the timezone abbrev is just decoration here)
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('2000-03-15 08:14:01 GMT+8');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('2000-03-15 13:14:02 GMT-1');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('2000-03-15 12:14:03 GMT-2');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('2000-03-15 03:14:04 PST+8');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('2000-03-15 02:14:05 MST+7:00');
! -- Variations for acceptable input formats
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 10 17:32:01 1997 -0800');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 10 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 10 5:32PM 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997/02/10 17:32:01-0800');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-02-10 17:32:01 PST');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb-10-1997 17:32:01 PST');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('02-10-1997 17:32:01 PST');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970210 173201 PST');
! set datestyle to ymd;
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('97FEB10 5:32:01PM UTC');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('97/02/10 17:32:01 UTC');
! reset datestyle;
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997.041 17:32:01 UTC');
! -- timestamps at different timezones
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970210 173201 America/New_York');
! SELECT '19970210 173201' AT TIME ZONE 'America/New_York';
! timezone
! --------------------------
! Mon Feb 10 20:32:01 1997
! (1 row)
!
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970710 173201 America/New_York');
! SELECT '19970710 173201' AT TIME ZONE 'America/New_York';
! timezone
! --------------------------
! Thu Jul 10 20:32:01 1997
! (1 row)
!
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970710 173201 America/Does_not_exist');
! ERROR: time zone "america/does_not_exist" not recognized
! LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970710 173201 America...
! ^
! SELECT '19970710 173201' AT TIME ZONE 'America/Does_not_exist';
! ERROR: time zone "America/Does_not_exist" not recognized
! -- Daylight saving time for timestamps beyond 32-bit time_t range.
! SELECT '20500710 173201 Europe/Helsinki'::timestamptz; -- DST
! timestamptz
! ------------------------------
! Sun Jul 10 07:32:01 2050 PDT
! (1 row)
!
! SELECT '20500110 173201 Europe/Helsinki'::timestamptz; -- non-DST
! timestamptz
! ------------------------------
! Mon Jan 10 07:32:01 2050 PST
! (1 row)
!
! SELECT '205000-07-10 17:32:01 Europe/Helsinki'::timestamptz; -- DST
! timestamptz
! --------------------------------
! Thu Jul 10 07:32:01 205000 PDT
! (1 row)
!
! SELECT '205000-01-10 17:32:01 Europe/Helsinki'::timestamptz; -- non-DST
! timestamptz
! --------------------------------
! Fri Jan 10 07:32:01 205000 PST
! (1 row)
!
! -- Check date conversion and date arithmetic
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-06-10 18:32:01 PDT');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 10 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 11 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 12 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 13 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 14 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 15 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 0097 BC');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 0097');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 0597');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1097');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1697');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1797');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1897');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 2097');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 28 17:32:01 1996');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 29 17:32:01 1996');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mar 01 17:32:01 1996');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 30 17:32:01 1996');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 31 17:32:01 1996');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Jan 01 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 28 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 29 17:32:01 1997');
! ERROR: date/time field value out of range: "Feb 29 17:32:01 1997"
! LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 29 17:32:01 1997');
! ^
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mar 01 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 30 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 31 17:32:01 1997');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 31 17:32:01 1999');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Jan 01 17:32:01 2000');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 31 17:32:01 2000');
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Jan 01 17:32:01 2001');
! -- Currently unsupported syntax and ranges
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 -0097');
! ERROR: time zone displacement out of range: "Feb 16 17:32:01 -0097"
! LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 -0097')...
! ^
! INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 5097 BC');
! ERROR: timestamp out of range: "Feb 16 17:32:01 5097 BC"
! LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 5097 BC...
! ^
! -- Alternative field order that we've historically supported (sort of)
! -- with regular and POSIXy timezone specs
! SELECT 'Wed Jul 11 10:51:14 America/New_York 2001'::timestamptz;
! timestamptz
! ------------------------------
! Wed Jul 11 07:51:14 2001 PDT
! (1 row)
!
! SELECT 'Wed Jul 11 10:51:14 GMT-4 2001'::timestamptz;
! timestamptz
! ------------------------------
! Tue Jul 10 23:51:14 2001 PDT
! (1 row)
!
! SELECT 'Wed Jul 11 10:51:14 GMT+4 2001'::timestamptz;
! timestamptz
! ------------------------------
! Wed Jul 11 07:51:14 2001 PDT
! (1 row)
!
! SELECT 'Wed Jul 11 10:51:14 PST-03:00 2001'::timestamptz;
! timestamptz
! ------------------------------
! Wed Jul 11 00:51:14 2001 PDT
! (1 row)
!
! SELECT 'Wed Jul 11 10:51:14 PST+03:00 2001'::timestamptz;
! timestamptz
! ------------------------------
! Wed Jul 11 06:51:14 2001 PDT
! (1 row)
!
! SELECT '' AS "64", d1 FROM TIMESTAMPTZ_TBL ORDER BY d1;
! 64 | d1
! ----+---------------------------------
! | -infinity
! | Tue Feb 16 17:32:01 0097 PST BC
! | Sat Feb 16 17:32:01 0097 PST
! | Thu Feb 16 17:32:01 0597 PST
! | Tue Feb 16 17:32:01 1097 PST
! | Sat Feb 16 17:32:01 1697 PST
! | Thu Feb 16 17:32:01 1797 PST
! | Tue Feb 16 17:32:01 1897 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Wed Feb 28 17:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST
! | Wed Jan 01 17:32:01 1997 PST
! | Thu Jan 02 00:00:00 1997 PST
! | Thu Jan 02 03:04:05 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 14:32:01 1997 PST
! | Mon Feb 10 17:32:00 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01.4 1997 PST
! | Mon Feb 10 17:32:01.5 1997 PST
! | Mon Feb 10 17:32:01.6 1997 PST
! | Mon Feb 10 17:32:02 1997 PST
! | Tue Feb 11 17:32:01 1997 PST
! | Wed Feb 12 17:32:01 1997 PST
! | Thu Feb 13 17:32:01 1997 PST
! | Fri Feb 14 17:32:01 1997 PST
! | Sat Feb 15 17:32:01 1997 PST
! | Sun Feb 16 17:32:01 1997 PST
! | Sun Feb 16 17:32:01 1997 PST
! | Fri Feb 28 17:32:01 1997 PST
! | Sat Mar 01 17:32:01 1997 PST
! | Tue Jun 10 17:32:01 1997 PDT
! | Tue Jun 10 18:32:01 1997 PDT
! | Thu Jul 10 14:32:01 1997 PDT
! | Tue Dec 30 17:32:01 1997 PST
! | Wed Dec 31 17:32:01 1997 PST
! | Fri Dec 31 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST
! | Wed Mar 15 01:14:05 2000 PST
! | Wed Mar 15 02:14:03 2000 PST
! | Wed Mar 15 03:14:04 2000 PST
! | Wed Mar 15 04:14:02 2000 PST
! | Wed Mar 15 08:14:01 2000 PST
! | Sun Dec 31 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST
! | Sat Sep 22 18:19:20 2001 PDT
! | Sat Feb 16 17:32:01 2097 PST
! | infinity
! (66 rows)
!
! -- Demonstrate functions and operators
! SELECT '' AS "48", d1 FROM TIMESTAMPTZ_TBL
! WHERE d1 > timestamp with time zone '1997-01-02' ORDER BY d1;
! 48 | d1
! ----+--------------------------------
! | Thu Jan 02 03:04:05 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 14:32:01 1997 PST
! | Mon Feb 10 17:32:00 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01.4 1997 PST
! | Mon Feb 10 17:32:01.5 1997 PST
! | Mon Feb 10 17:32:01.6 1997 PST
! | Mon Feb 10 17:32:02 1997 PST
! | Tue Feb 11 17:32:01 1997 PST
! | Wed Feb 12 17:32:01 1997 PST
! | Thu Feb 13 17:32:01 1997 PST
! | Fri Feb 14 17:32:01 1997 PST
! | Sat Feb 15 17:32:01 1997 PST
! | Sun Feb 16 17:32:01 1997 PST
! | Sun Feb 16 17:32:01 1997 PST
! | Fri Feb 28 17:32:01 1997 PST
! | Sat Mar 01 17:32:01 1997 PST
! | Tue Jun 10 17:32:01 1997 PDT
! | Tue Jun 10 18:32:01 1997 PDT
! | Thu Jul 10 14:32:01 1997 PDT
! | Tue Dec 30 17:32:01 1997 PST
! | Wed Dec 31 17:32:01 1997 PST
! | Fri Dec 31 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST
! | Wed Mar 15 01:14:05 2000 PST
! | Wed Mar 15 02:14:03 2000 PST
! | Wed Mar 15 03:14:04 2000 PST
! | Wed Mar 15 04:14:02 2000 PST
! | Wed Mar 15 08:14:01 2000 PST
! | Sun Dec 31 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST
! | Sat Sep 22 18:19:20 2001 PDT
! | Sat Feb 16 17:32:01 2097 PST
! | infinity
! (50 rows)
!
! SELECT '' AS "15", d1 FROM TIMESTAMPTZ_TBL
! WHERE d1 < timestamp with time zone '1997-01-02' ORDER BY d1;
! 15 | d1
! ----+---------------------------------
! | -infinity
! | Tue Feb 16 17:32:01 0097 PST BC
! | Sat Feb 16 17:32:01 0097 PST
! | Thu Feb 16 17:32:01 0597 PST
! | Tue Feb 16 17:32:01 1097 PST
! | Sat Feb 16 17:32:01 1697 PST
! | Thu Feb 16 17:32:01 1797 PST
! | Tue Feb 16 17:32:01 1897 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Wed Feb 28 17:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST
! | Wed Jan 01 17:32:01 1997 PST
! (15 rows)
!
! SELECT '' AS one, d1 FROM TIMESTAMPTZ_TBL
! WHERE d1 = timestamp with time zone '1997-01-02' ORDER BY d1;
! one | d1
! -----+------------------------------
! | Thu Jan 02 00:00:00 1997 PST
! (1 row)
!
! SELECT '' AS "63", d1 FROM TIMESTAMPTZ_TBL
! WHERE d1 != timestamp with time zone '1997-01-02' ORDER BY d1;
! 63 | d1
! ----+---------------------------------
! | -infinity
! | Tue Feb 16 17:32:01 0097 PST BC
! | Sat Feb 16 17:32:01 0097 PST
! | Thu Feb 16 17:32:01 0597 PST
! | Tue Feb 16 17:32:01 1097 PST
! | Sat Feb 16 17:32:01 1697 PST
! | Thu Feb 16 17:32:01 1797 PST
! | Tue Feb 16 17:32:01 1897 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Wed Feb 28 17:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST
! | Wed Jan 01 17:32:01 1997 PST
! | Thu Jan 02 03:04:05 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 14:32:01 1997 PST
! | Mon Feb 10 17:32:00 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01.4 1997 PST
! | Mon Feb 10 17:32:01.5 1997 PST
! | Mon Feb 10 17:32:01.6 1997 PST
! | Mon Feb 10 17:32:02 1997 PST
! | Tue Feb 11 17:32:01 1997 PST
! | Wed Feb 12 17:32:01 1997 PST
! | Thu Feb 13 17:32:01 1997 PST
! | Fri Feb 14 17:32:01 1997 PST
! | Sat Feb 15 17:32:01 1997 PST
! | Sun Feb 16 17:32:01 1997 PST
! | Sun Feb 16 17:32:01 1997 PST
! | Fri Feb 28 17:32:01 1997 PST
! | Sat Mar 01 17:32:01 1997 PST
! | Tue Jun 10 17:32:01 1997 PDT
! | Tue Jun 10 18:32:01 1997 PDT
! | Thu Jul 10 14:32:01 1997 PDT
! | Tue Dec 30 17:32:01 1997 PST
! | Wed Dec 31 17:32:01 1997 PST
! | Fri Dec 31 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST
! | Wed Mar 15 01:14:05 2000 PST
! | Wed Mar 15 02:14:03 2000 PST
! | Wed Mar 15 03:14:04 2000 PST
! | Wed Mar 15 04:14:02 2000 PST
! | Wed Mar 15 08:14:01 2000 PST
! | Sun Dec 31 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST
! | Sat Sep 22 18:19:20 2001 PDT
! | Sat Feb 16 17:32:01 2097 PST
! | infinity
! (65 rows)
!
! SELECT '' AS "16", d1 FROM TIMESTAMPTZ_TBL
! WHERE d1 <= timestamp with time zone '1997-01-02' ORDER BY d1;
! 16 | d1
! ----+---------------------------------
! | -infinity
! | Tue Feb 16 17:32:01 0097 PST BC
! | Sat Feb 16 17:32:01 0097 PST
! | Thu Feb 16 17:32:01 0597 PST
! | Tue Feb 16 17:32:01 1097 PST
! | Sat Feb 16 17:32:01 1697 PST
! | Thu Feb 16 17:32:01 1797 PST
! | Tue Feb 16 17:32:01 1897 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Wed Feb 28 17:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST
! | Wed Jan 01 17:32:01 1997 PST
! | Thu Jan 02 00:00:00 1997 PST
! (16 rows)
!
! SELECT '' AS "49", d1 FROM TIMESTAMPTZ_TBL
! WHERE d1 >= timestamp with time zone '1997-01-02' ORDER BY d1;
! 49 | d1
! ----+--------------------------------
! | Thu Jan 02 00:00:00 1997 PST
! | Thu Jan 02 03:04:05 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 14:32:01 1997 PST
! | Mon Feb 10 17:32:00 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01.4 1997 PST
! | Mon Feb 10 17:32:01.5 1997 PST
! | Mon Feb 10 17:32:01.6 1997 PST
! | Mon Feb 10 17:32:02 1997 PST
! | Tue Feb 11 17:32:01 1997 PST
! | Wed Feb 12 17:32:01 1997 PST
! | Thu Feb 13 17:32:01 1997 PST
! | Fri Feb 14 17:32:01 1997 PST
! | Sat Feb 15 17:32:01 1997 PST
! | Sun Feb 16 17:32:01 1997 PST
! | Sun Feb 16 17:32:01 1997 PST
! | Fri Feb 28 17:32:01 1997 PST
! | Sat Mar 01 17:32:01 1997 PST
! | Tue Jun 10 17:32:01 1997 PDT
! | Tue Jun 10 18:32:01 1997 PDT
! | Thu Jul 10 14:32:01 1997 PDT
! | Tue Dec 30 17:32:01 1997 PST
! | Wed Dec 31 17:32:01 1997 PST
! | Fri Dec 31 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST
! | Wed Mar 15 01:14:05 2000 PST
! | Wed Mar 15 02:14:03 2000 PST
! | Wed Mar 15 03:14:04 2000 PST
! | Wed Mar 15 04:14:02 2000 PST
! | Wed Mar 15 08:14:01 2000 PST
! | Sun Dec 31 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST
! | Sat Sep 22 18:19:20 2001 PDT
! | Sat Feb 16 17:32:01 2097 PST
! | infinity
! (51 rows)
!
! SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff
! FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01' ORDER BY d1;
! 54 | diff
! ----+----------------------------------------
! | @ 9863 days 8 hours ago
! | @ 308 days 6 hours 27 mins 59 secs ago
! | @ 307 days 6 hours 27 mins 59 secs ago
! | @ 306 days 6 hours 27 mins 59 secs ago
! | @ 2 days 6 hours 27 mins 59 secs ago
! | @ 1 day 6 hours 27 mins 59 secs ago
! | @ 6 hours 27 mins 59 secs ago
! | @ 0
! | @ 3 hours 4 mins 5 secs
! | @ 39 days 9 hours 32 mins 1 sec
! | @ 39 days 9 hours 32 mins 1 sec
! | @ 39 days 9 hours 32 mins 1 sec
! | @ 39 days 14 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1.4 secs
! | @ 39 days 17 hours 32 mins 1.5 secs
! | @ 39 days 17 hours 32 mins 1.6 secs
! | @ 39 days 17 hours 32 mins 2 secs
! | @ 40 days 17 hours 32 mins 1 sec
! | @ 41 days 17 hours 32 mins 1 sec
! | @ 42 days 17 hours 32 mins 1 sec
! | @ 43 days 17 hours 32 mins 1 sec
! | @ 44 days 17 hours 32 mins 1 sec
! | @ 45 days 17 hours 32 mins 1 sec
! | @ 45 days 17 hours 32 mins 1 sec
! | @ 57 days 17 hours 32 mins 1 sec
! | @ 58 days 17 hours 32 mins 1 sec
! | @ 159 days 16 hours 32 mins 1 sec
! | @ 159 days 17 hours 32 mins 1 sec
! | @ 189 days 13 hours 32 mins 1 sec
! | @ 362 days 17 hours 32 mins 1 sec
! | @ 363 days 17 hours 32 mins 1 sec
! | @ 1093 days 17 hours 32 mins 1 sec
! | @ 1094 days 17 hours 32 mins 1 sec
! | @ 1168 days 1 hour 14 mins 5 secs
! | @ 1168 days 2 hours 14 mins 3 secs
! | @ 1168 days 3 hours 14 mins 4 secs
! | @ 1168 days 4 hours 14 mins 2 secs
! | @ 1168 days 8 hours 14 mins 1 sec
! | @ 1459 days 17 hours 32 mins 1 sec
! | @ 1460 days 17 hours 32 mins 1 sec
! | @ 1724 days 17 hours 19 mins 20 secs
! (56 rows)
!
! SELECT '' AS date_trunc_week, date_trunc( 'week', timestamp with time zone '2004-02-29 15:44:17.71393' ) AS week_trunc;
! date_trunc_week | week_trunc
! -----------------+------------------------------
! | Mon Feb 23 00:00:00 2004 PST
! (1 row)
!
! -- Test casting within a BETWEEN qualifier
! SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff
! FROM TIMESTAMPTZ_TBL
! WHERE d1 BETWEEN timestamp with time zone '1902-01-01' AND timestamp with time zone '2038-01-01' ORDER BY d1;
! 54 | diff
! ----+----------------------------------------
! | @ 9863 days 8 hours ago
! | @ 308 days 6 hours 27 mins 59 secs ago
! | @ 307 days 6 hours 27 mins 59 secs ago
! | @ 306 days 6 hours 27 mins 59 secs ago
! | @ 2 days 6 hours 27 mins 59 secs ago
! | @ 1 day 6 hours 27 mins 59 secs ago
! | @ 6 hours 27 mins 59 secs ago
! | @ 0
! | @ 3 hours 4 mins 5 secs
! | @ 39 days 9 hours 32 mins 1 sec
! | @ 39 days 9 hours 32 mins 1 sec
! | @ 39 days 9 hours 32 mins 1 sec
! | @ 39 days 14 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1 sec
! | @ 39 days 17 hours 32 mins 1.4 secs
! | @ 39 days 17 hours 32 mins 1.5 secs
! | @ 39 days 17 hours 32 mins 1.6 secs
! | @ 39 days 17 hours 32 mins 2 secs
! | @ 40 days 17 hours 32 mins 1 sec
! | @ 41 days 17 hours 32 mins 1 sec
! | @ 42 days 17 hours 32 mins 1 sec
! | @ 43 days 17 hours 32 mins 1 sec
! | @ 44 days 17 hours 32 mins 1 sec
! | @ 45 days 17 hours 32 mins 1 sec
! | @ 45 days 17 hours 32 mins 1 sec
! | @ 57 days 17 hours 32 mins 1 sec
! | @ 58 days 17 hours 32 mins 1 sec
! | @ 159 days 16 hours 32 mins 1 sec
! | @ 159 days 17 hours 32 mins 1 sec
! | @ 189 days 13 hours 32 mins 1 sec
! | @ 362 days 17 hours 32 mins 1 sec
! | @ 363 days 17 hours 32 mins 1 sec
! | @ 1093 days 17 hours 32 mins 1 sec
! | @ 1094 days 17 hours 32 mins 1 sec
! | @ 1168 days 1 hour 14 mins 5 secs
! | @ 1168 days 2 hours 14 mins 3 secs
! | @ 1168 days 3 hours 14 mins 4 secs
! | @ 1168 days 4 hours 14 mins 2 secs
! | @ 1168 days 8 hours 14 mins 1 sec
! | @ 1459 days 17 hours 32 mins 1 sec
! | @ 1460 days 17 hours 32 mins 1 sec
! | @ 1724 days 17 hours 19 mins 20 secs
! (56 rows)
!
! SELECT '' AS "54", d1 as timestamptz,
! date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
! date_part( 'day', d1) AS day, date_part( 'hour', d1) AS hour,
! date_part( 'minute', d1) AS minute, date_part( 'second', d1) AS second
! FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01' ORDER BY d1;
! 54 | timestamptz | year | month | day | hour | minute | second
! ----+--------------------------------+------+-------+-----+------+--------+--------
! | Wed Dec 31 16:00:00 1969 PST | 1969 | 12 | 31 | 16 | 0 | 0
! | Wed Feb 28 17:32:01 1996 PST | 1996 | 2 | 28 | 17 | 32 | 1
! | Thu Feb 29 17:32:01 1996 PST | 1996 | 2 | 29 | 17 | 32 | 1
! | Fri Mar 01 17:32:01 1996 PST | 1996 | 3 | 1 | 17 | 32 | 1
! | Mon Dec 30 17:32:01 1996 PST | 1996 | 12 | 30 | 17 | 32 | 1
! | Tue Dec 31 17:32:01 1996 PST | 1996 | 12 | 31 | 17 | 32 | 1
! | Wed Jan 01 17:32:01 1997 PST | 1997 | 1 | 1 | 17 | 32 | 1
! | Thu Jan 02 00:00:00 1997 PST | 1997 | 1 | 2 | 0 | 0 | 0
! | Thu Jan 02 03:04:05 1997 PST | 1997 | 1 | 2 | 3 | 4 | 5
! | Mon Feb 10 09:32:01 1997 PST | 1997 | 2 | 10 | 9 | 32 | 1
! | Mon Feb 10 09:32:01 1997 PST | 1997 | 2 | 10 | 9 | 32 | 1
! | Mon Feb 10 09:32:01 1997 PST | 1997 | 2 | 10 | 9 | 32 | 1
! | Mon Feb 10 14:32:01 1997 PST | 1997 | 2 | 10 | 14 | 32 | 1
! | Mon Feb 10 17:32:00 1997 PST | 1997 | 2 | 10 | 17 | 32 | 0
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1
! | Mon Feb 10 17:32:01.4 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1.4
! | Mon Feb 10 17:32:01.5 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1.5
! | Mon Feb 10 17:32:01.6 1997 PST | 1997 | 2 | 10 | 17 | 32 | 1.6
! | Mon Feb 10 17:32:02 1997 PST | 1997 | 2 | 10 | 17 | 32 | 2
! | Tue Feb 11 17:32:01 1997 PST | 1997 | 2 | 11 | 17 | 32 | 1
! | Wed Feb 12 17:32:01 1997 PST | 1997 | 2 | 12 | 17 | 32 | 1
! | Thu Feb 13 17:32:01 1997 PST | 1997 | 2 | 13 | 17 | 32 | 1
! | Fri Feb 14 17:32:01 1997 PST | 1997 | 2 | 14 | 17 | 32 | 1
! | Sat Feb 15 17:32:01 1997 PST | 1997 | 2 | 15 | 17 | 32 | 1
! | Sun Feb 16 17:32:01 1997 PST | 1997 | 2 | 16 | 17 | 32 | 1
! | Sun Feb 16 17:32:01 1997 PST | 1997 | 2 | 16 | 17 | 32 | 1
! | Fri Feb 28 17:32:01 1997 PST | 1997 | 2 | 28 | 17 | 32 | 1
! | Sat Mar 01 17:32:01 1997 PST | 1997 | 3 | 1 | 17 | 32 | 1
! | Tue Jun 10 17:32:01 1997 PDT | 1997 | 6 | 10 | 17 | 32 | 1
! | Tue Jun 10 18:32:01 1997 PDT | 1997 | 6 | 10 | 18 | 32 | 1
! | Thu Jul 10 14:32:01 1997 PDT | 1997 | 7 | 10 | 14 | 32 | 1
! | Tue Dec 30 17:32:01 1997 PST | 1997 | 12 | 30 | 17 | 32 | 1
! | Wed Dec 31 17:32:01 1997 PST | 1997 | 12 | 31 | 17 | 32 | 1
! | Fri Dec 31 17:32:01 1999 PST | 1999 | 12 | 31 | 17 | 32 | 1
! | Sat Jan 01 17:32:01 2000 PST | 2000 | 1 | 1 | 17 | 32 | 1
! | Wed Mar 15 01:14:05 2000 PST | 2000 | 3 | 15 | 1 | 14 | 5
! | Wed Mar 15 02:14:03 2000 PST | 2000 | 3 | 15 | 2 | 14 | 3
! | Wed Mar 15 03:14:04 2000 PST | 2000 | 3 | 15 | 3 | 14 | 4
! | Wed Mar 15 04:14:02 2000 PST | 2000 | 3 | 15 | 4 | 14 | 2
! | Wed Mar 15 08:14:01 2000 PST | 2000 | 3 | 15 | 8 | 14 | 1
! | Sun Dec 31 17:32:01 2000 PST | 2000 | 12 | 31 | 17 | 32 | 1
! | Mon Jan 01 17:32:01 2001 PST | 2001 | 1 | 1 | 17 | 32 | 1
! | Sat Sep 22 18:19:20 2001 PDT | 2001 | 9 | 22 | 18 | 19 | 20
! (56 rows)
!
! SELECT '' AS "54", d1 as timestamptz,
! date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
! date_part( 'usec', d1) AS usec
! FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01' ORDER BY d1;
! 54 | timestamptz | quarter | msec | usec
! ----+--------------------------------+---------+-------+----------
! | Wed Dec 31 16:00:00 1969 PST | 4 | 0 | 0
! | Wed Feb 28 17:32:01 1996 PST | 1 | 1000 | 1000000
! | Thu Feb 29 17:32:01 1996 PST | 1 | 1000 | 1000000
! | Fri Mar 01 17:32:01 1996 PST | 1 | 1000 | 1000000
! | Mon Dec 30 17:32:01 1996 PST | 4 | 1000 | 1000000
! | Tue Dec 31 17:32:01 1996 PST | 4 | 1000 | 1000000
! | Wed Jan 01 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Thu Jan 02 00:00:00 1997 PST | 1 | 0 | 0
! | Thu Jan 02 03:04:05 1997 PST | 1 | 5000 | 5000000
! | Mon Feb 10 09:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 09:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 09:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 14:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:00 1997 PST | 1 | 0 | 0
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Mon Feb 10 17:32:01.4 1997 PST | 1 | 1400 | 1400000
! | Mon Feb 10 17:32:01.5 1997 PST | 1 | 1500 | 1500000
! | Mon Feb 10 17:32:01.6 1997 PST | 1 | 1600 | 1600000
! | Mon Feb 10 17:32:02 1997 PST | 1 | 2000 | 2000000
! | Tue Feb 11 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Wed Feb 12 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Thu Feb 13 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Fri Feb 14 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Sat Feb 15 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Sun Feb 16 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Sun Feb 16 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Fri Feb 28 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Sat Mar 01 17:32:01 1997 PST | 1 | 1000 | 1000000
! | Tue Jun 10 17:32:01 1997 PDT | 2 | 1000 | 1000000
! | Tue Jun 10 18:32:01 1997 PDT | 2 | 1000 | 1000000
! | Thu Jul 10 14:32:01 1997 PDT | 3 | 1000 | 1000000
! | Tue Dec 30 17:32:01 1997 PST | 4 | 1000 | 1000000
! | Wed Dec 31 17:32:01 1997 PST | 4 | 1000 | 1000000
! | Fri Dec 31 17:32:01 1999 PST | 4 | 1000 | 1000000
! | Sat Jan 01 17:32:01 2000 PST | 1 | 1000 | 1000000
! | Wed Mar 15 01:14:05 2000 PST | 1 | 5000 | 5000000
! | Wed Mar 15 02:14:03 2000 PST | 1 | 3000 | 3000000
! | Wed Mar 15 03:14:04 2000 PST | 1 | 4000 | 4000000
! | Wed Mar 15 04:14:02 2000 PST | 1 | 2000 | 2000000
! | Wed Mar 15 08:14:01 2000 PST | 1 | 1000 | 1000000
! | Sun Dec 31 17:32:01 2000 PST | 4 | 1000 | 1000000
! | Mon Jan 01 17:32:01 2001 PST | 1 | 1000 | 1000000
! | Sat Sep 22 18:19:20 2001 PDT | 3 | 20000 | 20000000
! (56 rows)
!
! SELECT '' AS "54", d1 as timestamptz,
! date_part( 'isoyear', d1) AS isoyear, date_part( 'week', d1) AS week,
! date_part( 'dow', d1) AS dow
! FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01' ORDER BY d1;
! 54 | timestamptz | isoyear | week | dow
! ----+--------------------------------+---------+------+-----
! | Wed Dec 31 16:00:00 1969 PST | 1970 | 1 | 3
! | Wed Feb 28 17:32:01 1996 PST | 1996 | 9 | 3
! | Thu Feb 29 17:32:01 1996 PST | 1996 | 9 | 4
! | Fri Mar 01 17:32:01 1996 PST | 1996 | 9 | 5
! | Mon Dec 30 17:32:01 1996 PST | 1997 | 1 | 1
! | Tue Dec 31 17:32:01 1996 PST | 1997 | 1 | 2
! | Wed Jan 01 17:32:01 1997 PST | 1997 | 1 | 3
! | Thu Jan 02 00:00:00 1997 PST | 1997 | 1 | 4
! | Thu Jan 02 03:04:05 1997 PST | 1997 | 1 | 4
! | Mon Feb 10 09:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 09:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 09:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 14:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:00 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01.4 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01.5 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:01.6 1997 PST | 1997 | 7 | 1
! | Mon Feb 10 17:32:02 1997 PST | 1997 | 7 | 1
! | Tue Feb 11 17:32:01 1997 PST | 1997 | 7 | 2
! | Wed Feb 12 17:32:01 1997 PST | 1997 | 7 | 3
! | Thu Feb 13 17:32:01 1997 PST | 1997 | 7 | 4
! | Fri Feb 14 17:32:01 1997 PST | 1997 | 7 | 5
! | Sat Feb 15 17:32:01 1997 PST | 1997 | 7 | 6
! | Sun Feb 16 17:32:01 1997 PST | 1997 | 7 | 0
! | Sun Feb 16 17:32:01 1997 PST | 1997 | 7 | 0
! | Fri Feb 28 17:32:01 1997 PST | 1997 | 9 | 5
! | Sat Mar 01 17:32:01 1997 PST | 1997 | 9 | 6
! | Tue Jun 10 17:32:01 1997 PDT | 1997 | 24 | 2
! | Tue Jun 10 18:32:01 1997 PDT | 1997 | 24 | 2
! | Thu Jul 10 14:32:01 1997 PDT | 1997 | 28 | 4
! | Tue Dec 30 17:32:01 1997 PST | 1998 | 1 | 2
! | Wed Dec 31 17:32:01 1997 PST | 1998 | 1 | 3
! | Fri Dec 31 17:32:01 1999 PST | 1999 | 52 | 5
! | Sat Jan 01 17:32:01 2000 PST | 1999 | 52 | 6
! | Wed Mar 15 01:14:05 2000 PST | 2000 | 11 | 3
! | Wed Mar 15 02:14:03 2000 PST | 2000 | 11 | 3
! | Wed Mar 15 03:14:04 2000 PST | 2000 | 11 | 3
! | Wed Mar 15 04:14:02 2000 PST | 2000 | 11 | 3
! | Wed Mar 15 08:14:01 2000 PST | 2000 | 11 | 3
! | Sun Dec 31 17:32:01 2000 PST | 2000 | 52 | 0
! | Mon Jan 01 17:32:01 2001 PST | 2001 | 1 | 1
! | Sat Sep 22 18:19:20 2001 PDT | 2001 | 38 | 6
! (56 rows)
!
! -- TO_CHAR()
! SELECT '' AS to_char_1, to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_1 | to_char
! -----------+------------------------------------------------------------------------------------------
! |
! | TUESDAY Tuesday tuesday TUE Tue tue FEBRUARY February february II FEB Feb feb
! | SATURDAY Saturday saturday SAT Sat sat FEBRUARY February february II FEB Feb feb
! | THURSDAY Thursday thursday THU Thu thu FEBRUARY February february II FEB Feb feb
! | TUESDAY Tuesday tuesday TUE Tue tue FEBRUARY February february II FEB Feb feb
! | SATURDAY Saturday saturday SAT Sat sat FEBRUARY February february II FEB Feb feb
! | THURSDAY Thursday thursday THU Thu thu FEBRUARY February february II FEB Feb feb
! | TUESDAY Tuesday tuesday TUE Tue tue FEBRUARY February february II FEB Feb feb
! | WEDNESDAY Wednesday wednesday WED Wed wed DECEMBER December december XII DEC Dec dec
! | WEDNESDAY Wednesday wednesday WED Wed wed FEBRUARY February february II FEB Feb feb
! | THURSDAY Thursday thursday THU Thu thu FEBRUARY February february II FEB Feb feb
! | FRIDAY Friday friday FRI Fri fri MARCH March march III MAR Mar mar
! | MONDAY Monday monday MON Mon mon DECEMBER December december XII DEC Dec dec
! | TUESDAY Tuesday tuesday TUE Tue tue DECEMBER December december XII DEC Dec dec
! | WEDNESDAY Wednesday wednesday WED Wed wed JANUARY January january I JAN Jan jan
! | THURSDAY Thursday thursday THU Thu thu JANUARY January january I JAN Jan jan
! | THURSDAY Thursday thursday THU Thu thu JANUARY January january I JAN Jan jan
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | MONDAY Monday monday MON Mon mon FEBRUARY February february II FEB Feb feb
! | TUESDAY Tuesday tuesday TUE Tue tue FEBRUARY February february II FEB Feb feb
! | WEDNESDAY Wednesday wednesday WED Wed wed FEBRUARY February february II FEB Feb feb
! | THURSDAY Thursday thursday THU Thu thu FEBRUARY February february II FEB Feb feb
! | FRIDAY Friday friday FRI Fri fri FEBRUARY February february II FEB Feb feb
! | SATURDAY Saturday saturday SAT Sat sat FEBRUARY February february II FEB Feb feb
! | SUNDAY Sunday sunday SUN Sun sun FEBRUARY February february II FEB Feb feb
! | SUNDAY Sunday sunday SUN Sun sun FEBRUARY February february II FEB Feb feb
! | FRIDAY Friday friday FRI Fri fri FEBRUARY February february II FEB Feb feb
! | SATURDAY Saturday saturday SAT Sat sat MARCH March march III MAR Mar mar
! | TUESDAY Tuesday tuesday TUE Tue tue JUNE June june VI JUN Jun jun
! | TUESDAY Tuesday tuesday TUE Tue tue JUNE June june VI JUN Jun jun
! | THURSDAY Thursday thursday THU Thu thu JULY July july VII JUL Jul jul
! | TUESDAY Tuesday tuesday TUE Tue tue DECEMBER December december XII DEC Dec dec
! | WEDNESDAY Wednesday wednesday WED Wed wed DECEMBER December december XII DEC Dec dec
! | FRIDAY Friday friday FRI Fri fri DECEMBER December december XII DEC Dec dec
! | SATURDAY Saturday saturday SAT Sat sat JANUARY January january I JAN Jan jan
! | WEDNESDAY Wednesday wednesday WED Wed wed MARCH March march III MAR Mar mar
! | WEDNESDAY Wednesday wednesday WED Wed wed MARCH March march III MAR Mar mar
! | WEDNESDAY Wednesday wednesday WED Wed wed MARCH March march III MAR Mar mar
! | WEDNESDAY Wednesday wednesday WED Wed wed MARCH March march III MAR Mar mar
! | WEDNESDAY Wednesday wednesday WED Wed wed MARCH March march III MAR Mar mar
! | SUNDAY Sunday sunday SUN Sun sun DECEMBER December december XII DEC Dec dec
! | MONDAY Monday monday MON Mon mon JANUARY January january I JAN Jan jan
! | SATURDAY Saturday saturday SAT Sat sat SEPTEMBER September september IX SEP Sep sep
! | SATURDAY Saturday saturday SAT Sat sat FEBRUARY February february II FEB Feb feb
! |
! (66 rows)
!
!
! SELECT '' AS to_char_2, to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_2 | to_char
! -----------+--------------------------------------------------------------
! |
! | TUESDAY Tuesday tuesday FEBRUARY February february II
! | SATURDAY Saturday saturday FEBRUARY February february II
! | THURSDAY Thursday thursday FEBRUARY February february II
! | TUESDAY Tuesday tuesday FEBRUARY February february II
! | SATURDAY Saturday saturday FEBRUARY February february II
! | THURSDAY Thursday thursday FEBRUARY February february II
! | TUESDAY Tuesday tuesday FEBRUARY February february II
! | WEDNESDAY Wednesday wednesday DECEMBER December december XII
! | WEDNESDAY Wednesday wednesday FEBRUARY February february II
! | THURSDAY Thursday thursday FEBRUARY February february II
! | FRIDAY Friday friday MARCH March march III
! | MONDAY Monday monday DECEMBER December december XII
! | TUESDAY Tuesday tuesday DECEMBER December december XII
! | WEDNESDAY Wednesday wednesday JANUARY January january I
! | THURSDAY Thursday thursday JANUARY January january I
! | THURSDAY Thursday thursday JANUARY January january I
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | MONDAY Monday monday FEBRUARY February february II
! | TUESDAY Tuesday tuesday FEBRUARY February february II
! | WEDNESDAY Wednesday wednesday FEBRUARY February february II
! | THURSDAY Thursday thursday FEBRUARY February february II
! | FRIDAY Friday friday FEBRUARY February february II
! | SATURDAY Saturday saturday FEBRUARY February february II
! | SUNDAY Sunday sunday FEBRUARY February february II
! | SUNDAY Sunday sunday FEBRUARY February february II
! | FRIDAY Friday friday FEBRUARY February february II
! | SATURDAY Saturday saturday MARCH March march III
! | TUESDAY Tuesday tuesday JUNE June june VI
! | TUESDAY Tuesday tuesday JUNE June june VI
! | THURSDAY Thursday thursday JULY July july VII
! | TUESDAY Tuesday tuesday DECEMBER December december XII
! | WEDNESDAY Wednesday wednesday DECEMBER December december XII
! | FRIDAY Friday friday DECEMBER December december XII
! | SATURDAY Saturday saturday JANUARY January january I
! | WEDNESDAY Wednesday wednesday MARCH March march III
! | WEDNESDAY Wednesday wednesday MARCH March march III
! | WEDNESDAY Wednesday wednesday MARCH March march III
! | WEDNESDAY Wednesday wednesday MARCH March march III
! | WEDNESDAY Wednesday wednesday MARCH March march III
! | SUNDAY Sunday sunday DECEMBER December december XII
! | MONDAY Monday monday JANUARY January january I
! | SATURDAY Saturday saturday SEPTEMBER September september IX
! | SATURDAY Saturday saturday FEBRUARY February february II
! |
! (66 rows)
!
! SELECT '' AS to_char_3, to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_3 | to_char
! -----------+-------------------------------------------------
! |
! | 0,097 0097 097 97 7 -1 1 02 07 047 16 3 1686042
! | 0,097 0097 097 97 7 01 1 02 07 047 16 7 1756536
! | 0,597 0597 597 97 7 06 1 02 07 047 16 5 1939157
! | 1,097 1097 097 97 7 11 1 02 07 047 16 3 2121778
! | 1,697 1697 697 97 7 17 1 02 07 047 16 7 2340924
! | 1,797 1797 797 97 7 18 1 02 07 047 16 5 2377448
! | 1,897 1897 897 97 7 19 1 02 07 047 16 3 2413972
! | 1,969 1969 969 69 9 20 4 12 53 365 31 4 2440587
! | 1,996 1996 996 96 6 20 1 02 09 059 28 4 2450142
! | 1,996 1996 996 96 6 20 1 02 09 060 29 5 2450143
! | 1,996 1996 996 96 6 20 1 03 09 061 01 6 2450144
! | 1,996 1996 996 96 6 20 4 12 53 365 30 2 2450448
! | 1,996 1996 996 96 6 20 4 12 53 366 31 3 2450449
! | 1,997 1997 997 97 7 20 1 01 01 001 01 4 2450450
! | 1,997 1997 997 97 7 20 1 01 01 002 02 5 2450451
! | 1,997 1997 997 97 7 20 1 01 01 002 02 5 2450451
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 041 10 2 2450490
! | 1,997 1997 997 97 7 20 1 02 06 042 11 3 2450491
! | 1,997 1997 997 97 7 20 1 02 07 043 12 4 2450492
! | 1,997 1997 997 97 7 20 1 02 07 044 13 5 2450493
! | 1,997 1997 997 97 7 20 1 02 07 045 14 6 2450494
! | 1,997 1997 997 97 7 20 1 02 07 046 15 7 2450495
! | 1,997 1997 997 97 7 20 1 02 07 047 16 1 2450496
! | 1,997 1997 997 97 7 20 1 02 07 047 16 1 2450496
! | 1,997 1997 997 97 7 20 1 02 09 059 28 6 2450508
! | 1,997 1997 997 97 7 20 1 03 09 060 01 7 2450509
! | 1,997 1997 997 97 7 20 2 06 23 161 10 3 2450610
! | 1,997 1997 997 97 7 20 2 06 23 161 10 3 2450610
! | 1,997 1997 997 97 7 20 3 07 28 191 10 5 2450640
! | 1,997 1997 997 97 7 20 4 12 52 364 30 3 2450813
! | 1,997 1997 997 97 7 20 4 12 53 365 31 4 2450814
! | 1,999 1999 999 99 9 20 4 12 53 365 31 6 2451544
! | 2,000 2000 000 00 0 20 1 01 01 001 01 7 2451545
! | 2,000 2000 000 00 0 20 1 03 11 075 15 4 2451619
! | 2,000 2000 000 00 0 20 1 03 11 075 15 4 2451619
! | 2,000 2000 000 00 0 20 1 03 11 075 15 4 2451619
! | 2,000 2000 000 00 0 20 1 03 11 075 15 4 2451619
! | 2,000 2000 000 00 0 20 1 03 11 075 15 4 2451619
! | 2,000 2000 000 00 0 20 4 12 53 366 31 1 2451910
! | 2,001 2001 001 01 1 21 1 01 01 001 01 2 2451911
! | 2,001 2001 001 01 1 21 3 09 38 265 22 7 2452175
! | 2,097 2097 097 97 7 21 1 02 07 047 16 7 2487021
! |
! (66 rows)
!
!
! SELECT '' AS to_char_4, to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_4 | to_char
! -----------+-------------------------------------------------
! |
! | 0,097 97 97 97 7 -1 1 2 7 47 16 3 1686042
! | 0,097 97 97 97 7 1 1 2 7 47 16 7 1756536
! | 0,597 597 597 97 7 6 1 2 7 47 16 5 1939157
! | 1,097 1097 97 97 7 11 1 2 7 47 16 3 2121778
! | 1,697 1697 697 97 7 17 1 2 7 47 16 7 2340924
! | 1,797 1797 797 97 7 18 1 2 7 47 16 5 2377448
! | 1,897 1897 897 97 7 19 1 2 7 47 16 3 2413972
! | 1,969 1969 969 69 9 20 4 12 53 365 31 4 2440587
! | 1,996 1996 996 96 6 20 1 2 9 59 28 4 2450142
! | 1,996 1996 996 96 6 20 1 2 9 60 29 5 2450143
! | 1,996 1996 996 96 6 20 1 3 9 61 1 6 2450144
! | 1,996 1996 996 96 6 20 4 12 53 365 30 2 2450448
! | 1,996 1996 996 96 6 20 4 12 53 366 31 3 2450449
! | 1,997 1997 997 97 7 20 1 1 1 1 1 4 2450450
! | 1,997 1997 997 97 7 20 1 1 1 2 2 5 2450451
! | 1,997 1997 997 97 7 20 1 1 1 2 2 5 2450451
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 41 10 2 2450490
! | 1,997 1997 997 97 7 20 1 2 6 42 11 3 2450491
! | 1,997 1997 997 97 7 20 1 2 7 43 12 4 2450492
! | 1,997 1997 997 97 7 20 1 2 7 44 13 5 2450493
! | 1,997 1997 997 97 7 20 1 2 7 45 14 6 2450494
! | 1,997 1997 997 97 7 20 1 2 7 46 15 7 2450495
! | 1,997 1997 997 97 7 20 1 2 7 47 16 1 2450496
! | 1,997 1997 997 97 7 20 1 2 7 47 16 1 2450496
! | 1,997 1997 997 97 7 20 1 2 9 59 28 6 2450508
! | 1,997 1997 997 97 7 20 1 3 9 60 1 7 2450509
! | 1,997 1997 997 97 7 20 2 6 23 161 10 3 2450610
! | 1,997 1997 997 97 7 20 2 6 23 161 10 3 2450610
! | 1,997 1997 997 97 7 20 3 7 28 191 10 5 2450640
! | 1,997 1997 997 97 7 20 4 12 52 364 30 3 2450813
! | 1,997 1997 997 97 7 20 4 12 53 365 31 4 2450814
! | 1,999 1999 999 99 9 20 4 12 53 365 31 6 2451544
! | 2,000 2000 0 0 0 20 1 1 1 1 1 7 2451545
! | 2,000 2000 0 0 0 20 1 3 11 75 15 4 2451619
! | 2,000 2000 0 0 0 20 1 3 11 75 15 4 2451619
! | 2,000 2000 0 0 0 20 1 3 11 75 15 4 2451619
! | 2,000 2000 0 0 0 20 1 3 11 75 15 4 2451619
! | 2,000 2000 0 0 0 20 1 3 11 75 15 4 2451619
! | 2,000 2000 0 0 0 20 4 12 53 366 31 1 2451910
! | 2,001 2001 1 1 1 21 1 1 1 1 1 2 2451911
! | 2,001 2001 1 1 1 21 3 9 38 265 22 7 2452175
! | 2,097 2097 97 97 7 21 1 2 7 47 16 7 2487021
! |
! (66 rows)
!
!
! SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_5 | to_char
! -----------+----------------------
! |
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 04 04 16 00 00 57600
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 12 12 00 00 00 0
! | 03 03 03 04 05 11045
! | 09 09 09 32 01 34321
! | 09 09 09 32 01 34321
! | 09 09 09 32 01 34321
! | 02 02 14 32 01 52321
! | 05 05 17 32 00 63120
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 02 63122
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 06 06 18 32 01 66721
! | 02 02 14 32 01 52321
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 01 01 01 14 05 4445
! | 02 02 02 14 03 8043
! | 03 03 03 14 04 11644
! | 04 04 04 14 02 15242
! | 08 08 08 14 01 29641
! | 05 05 17 32 01 63121
! | 05 05 17 32 01 63121
! | 06 06 18 19 20 65960
! | 05 05 17 32 01 63121
! |
! (66 rows)
!
! SELECT '' AS to_char_6, to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_6 | to_char
! -----------+-------------------------------------------------
! |
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 04:00:00 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 12:00:00 "text between quote marks"
! | HH:MI:SS is 03:04:05 "text between quote marks"
! | HH:MI:SS is 09:32:01 "text between quote marks"
! | HH:MI:SS is 09:32:01 "text between quote marks"
! | HH:MI:SS is 09:32:01 "text between quote marks"
! | HH:MI:SS is 02:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:00 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:02 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 06:32:01 "text between quote marks"
! | HH:MI:SS is 02:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 01:14:05 "text between quote marks"
! | HH:MI:SS is 02:14:03 "text between quote marks"
! | HH:MI:SS is 03:14:04 "text between quote marks"
! | HH:MI:SS is 04:14:02 "text between quote marks"
! | HH:MI:SS is 08:14:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! | HH:MI:SS is 06:19:20 "text between quote marks"
! | HH:MI:SS is 05:32:01 "text between quote marks"
! |
! (66 rows)
!
!
! SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_7 | to_char
! -----------+------------------------
! |
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 16--text--00--text--00
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 00--text--00--text--00
! | 03--text--04--text--05
! | 09--text--32--text--01
! | 09--text--32--text--01
! | 09--text--32--text--01
! | 14--text--32--text--01
! | 17--text--32--text--00
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--02
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 18--text--32--text--01
! | 14--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 01--text--14--text--05
! | 02--text--14--text--03
! | 03--text--14--text--04
! | 04--text--14--text--02
! | 08--text--14--text--01
! | 17--text--32--text--01
! | 17--text--32--text--01
! | 18--text--19--text--20
! | 17--text--32--text--01
! |
! (66 rows)
!
! SELECT '' AS to_char_8, to_char(d1, 'YYYYTH YYYYth Jth')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_8 | to_char
! -----------+-------------------------
! |
! | 0097TH 0097th 1686042nd
! | 0097TH 0097th 1756536th
! | 0597TH 0597th 1939157th
! | 1097TH 1097th 2121778th
! | 1697TH 1697th 2340924th
! | 1797TH 1797th 2377448th
! | 1897TH 1897th 2413972nd
! | 1969TH 1969th 2440587th
! | 1996TH 1996th 2450142nd
! | 1996TH 1996th 2450143rd
! | 1996TH 1996th 2450144th
! | 1996TH 1996th 2450448th
! | 1996TH 1996th 2450449th
! | 1997TH 1997th 2450450th
! | 1997TH 1997th 2450451st
! | 1997TH 1997th 2450451st
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450490th
! | 1997TH 1997th 2450491st
! | 1997TH 1997th 2450492nd
! | 1997TH 1997th 2450493rd
! | 1997TH 1997th 2450494th
! | 1997TH 1997th 2450495th
! | 1997TH 1997th 2450496th
! | 1997TH 1997th 2450496th
! | 1997TH 1997th 2450508th
! | 1997TH 1997th 2450509th
! | 1997TH 1997th 2450610th
! | 1997TH 1997th 2450610th
! | 1997TH 1997th 2450640th
! | 1997TH 1997th 2450813th
! | 1997TH 1997th 2450814th
! | 1999TH 1999th 2451544th
! | 2000TH 2000th 2451545th
! | 2000TH 2000th 2451619th
! | 2000TH 2000th 2451619th
! | 2000TH 2000th 2451619th
! | 2000TH 2000th 2451619th
! | 2000TH 2000th 2451619th
! | 2000TH 2000th 2451910th
! | 2001ST 2001st 2451911th
! | 2001ST 2001st 2452175th
! | 2097TH 2097th 2487021st
! |
! (66 rows)
!
!
! SELECT '' AS to_char_9, 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')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_9 | to_char
! -----------+---------------------------------------------------------------------
! |
! | 0097 B.C. 0097 b.c. 0097 bc 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 0097 A.D. 0097 a.d. 0097 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 0597 A.D. 0597 a.d. 0597 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1097 A.D. 1097 a.d. 1097 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1697 A.D. 1697 a.d. 1697 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1797 A.D. 1797 a.d. 1797 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1897 A.D. 1897 a.d. 1897 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1969 A.D. 1969 a.d. 1969 ad 04:00:00 P.M. 04:00:00 p.m. 04:00:00 pm
! | 1996 A.D. 1996 a.d. 1996 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1996 A.D. 1996 a.d. 1996 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1996 A.D. 1996 a.d. 1996 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1996 A.D. 1996 a.d. 1996 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1996 A.D. 1996 a.d. 1996 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 12:00:00 A.M. 12:00:00 a.m. 12:00:00 am
! | 1997 A.D. 1997 a.d. 1997 ad 03:04:05 A.M. 03:04:05 a.m. 03:04:05 am
! | 1997 A.D. 1997 a.d. 1997 ad 09:32:01 A.M. 09:32:01 a.m. 09:32:01 am
! | 1997 A.D. 1997 a.d. 1997 ad 09:32:01 A.M. 09:32:01 a.m. 09:32:01 am
! | 1997 A.D. 1997 a.d. 1997 ad 09:32:01 A.M. 09:32:01 a.m. 09:32:01 am
! | 1997 A.D. 1997 a.d. 1997 ad 02:32:01 P.M. 02:32:01 p.m. 02:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:00 P.M. 05:32:00 p.m. 05:32:00 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:02 P.M. 05:32:02 p.m. 05:32:02 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 06:32:01 P.M. 06:32:01 p.m. 06:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 02:32:01 P.M. 02:32:01 p.m. 02:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1997 A.D. 1997 a.d. 1997 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 1999 A.D. 1999 a.d. 1999 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 2000 A.D. 2000 a.d. 2000 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 2000 A.D. 2000 a.d. 2000 ad 01:14:05 A.M. 01:14:05 a.m. 01:14:05 am
! | 2000 A.D. 2000 a.d. 2000 ad 02:14:03 A.M. 02:14:03 a.m. 02:14:03 am
! | 2000 A.D. 2000 a.d. 2000 ad 03:14:04 A.M. 03:14:04 a.m. 03:14:04 am
! | 2000 A.D. 2000 a.d. 2000 ad 04:14:02 A.M. 04:14:02 a.m. 04:14:02 am
! | 2000 A.D. 2000 a.d. 2000 ad 08:14:01 A.M. 08:14:01 a.m. 08:14:01 am
! | 2000 A.D. 2000 a.d. 2000 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 2001 A.D. 2001 a.d. 2001 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! | 2001 A.D. 2001 a.d. 2001 ad 06:19:20 P.M. 06:19:20 p.m. 06:19:20 pm
! | 2097 A.D. 2097 a.d. 2097 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
! |
! (66 rows)
!
! SELECT '' AS to_char_10, to_char(d1, 'IYYY IYY IY I IW IDDD ID')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_10 | to_char
! ------------+------------------------
! |
! | 0097 097 97 7 07 044 2
! | 0097 097 97 7 07 048 6
! | 0597 597 97 7 07 046 4
! | 1097 097 97 7 07 044 2
! | 1697 697 97 7 07 048 6
! | 1797 797 97 7 07 046 4
! | 1897 897 97 7 07 044 2
! | 1970 970 70 0 01 003 3
! | 1996 996 96 6 09 059 3
! | 1996 996 96 6 09 060 4
! | 1996 996 96 6 09 061 5
! | 1997 997 97 7 01 001 1
! | 1997 997 97 7 01 002 2
! | 1997 997 97 7 01 003 3
! | 1997 997 97 7 01 004 4
! | 1997 997 97 7 01 004 4
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 043 1
! | 1997 997 97 7 07 044 2
! | 1997 997 97 7 07 045 3
! | 1997 997 97 7 07 046 4
! | 1997 997 97 7 07 047 5
! | 1997 997 97 7 07 048 6
! | 1997 997 97 7 07 049 7
! | 1997 997 97 7 07 049 7
! | 1997 997 97 7 09 061 5
! | 1997 997 97 7 09 062 6
! | 1997 997 97 7 24 163 2
! | 1997 997 97 7 24 163 2
! | 1997 997 97 7 28 193 4
! | 1998 998 98 8 01 002 2
! | 1998 998 98 8 01 003 3
! | 1999 999 99 9 52 362 5
! | 1999 999 99 9 52 363 6
! | 2000 000 00 0 11 073 3
! | 2000 000 00 0 11 073 3
! | 2000 000 00 0 11 073 3
! | 2000 000 00 0 11 073 3
! | 2000 000 00 0 11 073 3
! | 2000 000 00 0 52 364 7
! | 2001 001 01 1 01 001 1
! | 2001 001 01 1 38 265 6
! | 2097 097 97 7 07 048 6
! |
! (66 rows)
!
! SELECT '' AS to_char_11, to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID')
! FROM TIMESTAMPTZ_TBL ORDER BY d1;
! to_char_11 | to_char
! ------------+------------------------
! |
! | 97 97 97 7 7 44 2
! | 97 97 97 7 7 48 6
! | 597 597 97 7 7 46 4
! | 1097 97 97 7 7 44 2
! | 1697 697 97 7 7 48 6
! | 1797 797 97 7 7 46 4
! | 1897 897 97 7 7 44 2
! | 1970 970 70 0 1 3 3
! | 1996 996 96 6 9 59 3
! | 1996 996 96 6 9 60 4
! | 1996 996 96 6 9 61 5
! | 1997 997 97 7 1 1 1
! | 1997 997 97 7 1 2 2
! | 1997 997 97 7 1 3 3
! | 1997 997 97 7 1 4 4
! | 1997 997 97 7 1 4 4
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 43 1
! | 1997 997 97 7 7 44 2
! | 1997 997 97 7 7 45 3
! | 1997 997 97 7 7 46 4
! | 1997 997 97 7 7 47 5
! | 1997 997 97 7 7 48 6
! | 1997 997 97 7 7 49 7
! | 1997 997 97 7 7 49 7
! | 1997 997 97 7 9 61 5
! | 1997 997 97 7 9 62 6
! | 1997 997 97 7 24 163 2
! | 1997 997 97 7 24 163 2
! | 1997 997 97 7 28 193 4
! | 1998 998 98 8 1 2 2
! | 1998 998 98 8 1 3 3
! | 1999 999 99 9 52 362 5
! | 1999 999 99 9 52 363 6
! | 2000 0 0 0 11 73 3
! | 2000 0 0 0 11 73 3
! | 2000 0 0 0 11 73 3
! | 2000 0 0 0 11 73 3
! | 2000 0 0 0 11 73 3
! | 2000 0 0 0 52 364 7
! | 2001 1 1 1 1 1 1
! | 2001 1 1 1 38 265 6
! | 2097 97 97 7 7 48 6
! |
! (66 rows)
!
! -- Check OF with various zone offsets, particularly fractional hours
! SET timezone = '00:00';
! SELECT to_char(now(), 'OF');
! to_char
! ---------
! +00
! (1 row)
!
! SET timezone = '+02:00';
! SELECT to_char(now(), 'OF');
! to_char
! ---------
! -02
! (1 row)
!
! SET timezone = '-13:00';
! SELECT to_char(now(), 'OF');
! to_char
! ---------
! +13
! (1 row)
!
! SET timezone = '-00:30';
! SELECT to_char(now(), 'OF');
! to_char
! ---------
! +00:30
! (1 row)
!
! SET timezone = '00:30';
! SELECT to_char(now(), 'OF');
! to_char
! ---------
! -00:30
! (1 row)
!
! SET timezone = '-04:30';
! SELECT to_char(now(), 'OF');
! to_char
! ---------
! +04:30
! (1 row)
!
! SET timezone = '04:30';
! SELECT to_char(now(), 'OF');
! to_char
! ---------
! -04:30
! (1 row)
!
! RESET timezone;
! CREATE TABLE TIMESTAMPTZ_TST (a int , b timestamptz);
! -- Test year field value with len > 4
! INSERT INTO TIMESTAMPTZ_TST VALUES(1, 'Sat Mar 12 23:58:48 1000 IST');
! INSERT INTO TIMESTAMPTZ_TST VALUES(2, 'Sat Mar 12 23:58:48 10000 IST');
! INSERT INTO TIMESTAMPTZ_TST VALUES(3, 'Sat Mar 12 23:58:48 100000 IST');
! INSERT INTO TIMESTAMPTZ_TST VALUES(3, '10000 Mar 12 23:58:48 IST');
! INSERT INTO TIMESTAMPTZ_TST VALUES(4, '100000312 23:58:48 IST');
! INSERT INTO TIMESTAMPTZ_TST VALUES(4, '1000000312 23:58:48 IST');
! --Verify data
! SELECT * FROM TIMESTAMPTZ_TST ORDER BY a;
! a | b
! ---+--------------------------------
! 1 | Wed Mar 12 13:58:48 1000 PST
! 2 | Sun Mar 12 14:58:48 10000 PDT
! 3 | Sun Mar 12 14:58:48 100000 PDT
! 3 | Sun Mar 12 14:58:48 10000 PDT
! 4 | Sun Mar 12 14:58:48 10000 PDT
! 4 | Sun Mar 12 14:58:48 100000 PDT
! (6 rows)
!
! --Cleanup
! DROP TABLE TIMESTAMPTZ_TST;
! -- test timestamptz constructors
! set TimeZone to 'America/Santiago';
! -- numeric timezone
! SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33);
! make_timestamptz
! ---------------------------------
! Sun Jul 15 08:15:55.33 1973 CLT
! (1 row)
!
! SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '+2');
! make_timestamptz
! ---------------------------------
! Sun Jul 15 02:15:55.33 1973 CLT
! (1 row)
!
! SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '-2');
! make_timestamptz
! ---------------------------------
! Sun Jul 15 06:15:55.33 1973 CLT
! (1 row)
!
! WITH tzs (tz) AS (VALUES
! ('+1'), ('+1:'), ('+1:0'), ('+100'), ('+1:00'), ('+01:00'),
! ('+10'), ('+1000'), ('+10:'), ('+10:0'), ('+10:00'), ('+10:00:'),
! ('+10:00:1'), ('+10:00:01'),
! ('+10:00:10'))
! SELECT make_timestamptz(2010, 2, 27, 3, 45, 00, tz), tz FROM tzs;
! make_timestamptz | tz
! -------------------------------+-----------
! Fri Feb 26 23:45:00 2010 CLST | +1
! Fri Feb 26 23:45:00 2010 CLST | +1:
! Fri Feb 26 23:45:00 2010 CLST | +1:0
! Fri Feb 26 23:45:00 2010 CLST | +100
! Fri Feb 26 23:45:00 2010 CLST | +1:00
! Fri Feb 26 23:45:00 2010 CLST | +01:00
! Fri Feb 26 14:45:00 2010 CLST | +10
! Fri Feb 26 14:45:00 2010 CLST | +1000
! Fri Feb 26 14:45:00 2010 CLST | +10:
! Fri Feb 26 14:45:00 2010 CLST | +10:0
! Fri Feb 26 14:45:00 2010 CLST | +10:00
! Fri Feb 26 14:45:00 2010 CLST | +10:00:
! Fri Feb 26 14:44:59 2010 CLST | +10:00:1
! Fri Feb 26 14:44:59 2010 CLST | +10:00:01
! Fri Feb 26 14:44:50 2010 CLST | +10:00:10
! (15 rows)
!
! -- these should fail
! SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '2');
! ERROR: invalid input syntax for numeric time zone: "2"
! HINT: Numeric time zones must have "-" or "+" as first character.
! SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, '+16');
! ERROR: numeric time zone "+16" out of range
! SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, '-16');
! ERROR: numeric time zone "-16" out of range
! -- should be true
! SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '+2') = '1973-07-15 08:15:55.33+02'::timestamptz;
! ?column?
! ----------
! t
! (1 row)
!
! -- full timezone names
! SELECT make_timestamptz(2014, 12, 10, 0, 0, 0, 'Europe/Prague') = timestamptz '2014-12-10 00:00:00 Europe/Prague';
! ?column?
! ----------
! t
! (1 row)
!
! SELECT make_timestamptz(2014, 12, 10, 0, 0, 0, 'Europe/Prague') AT TIME ZONE 'UTC';
! timezone
! --------------------------
! Tue Dec 09 23:00:00 2014
! (1 row)
!
! SELECT make_timestamptz(1846, 12, 10, 0, 0, 0, 'Asia/Manila') AT TIME ZONE 'UTC';
! timezone
! --------------------------
! Wed Dec 09 15:56:00 1846
! (1 row)
!
! SELECT make_timestamptz(1881, 12, 10, 0, 0, 0, 'Europe/Paris') AT TIME ZONE 'UTC';
! timezone
! --------------------------
! Fri Dec 09 23:50:39 1881
! (1 row)
!
! SELECT make_timestamptz(1910, 12, 24, 0, 0, 0, 'Nehwon/Lankhmar');
! ERROR: time zone "Nehwon/Lankhmar" not recognized
! -- abbreviations
! SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'CLST');
! make_timestamptz
! -------------------------------
! Wed Dec 10 10:10:10 2008 CLST
! (1 row)
!
! SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'CLT');
! make_timestamptz
! -------------------------------
! Wed Dec 10 11:10:10 2008 CLST
! (1 row)
!
! SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, 'PST8PDT');
! make_timestamptz
! -------------------------------
! Wed Dec 10 15:10:10 2014 CLST
! (1 row)
!
! RESET TimeZone;
! --
! -- Test behavior with a dynamic (time-varying) timezone abbreviation.
! -- These tests rely on the knowledge that MSK (Europe/Moscow standard time)
! -- moved forwards in Mar 2011 and that VET (America/Caracas standard time)
! -- moved backwards in Dec 2007.
! --
! SET TimeZone to 'UTC';
! SELECT '2011-03-27 00:00:00 Europe/Moscow'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 21:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 01:00:00 Europe/Moscow'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 22:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 01:59:59 Europe/Moscow'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 22:59:59 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:00:00 Europe/Moscow'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 23:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:00:01 Europe/Moscow'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 23:00:01 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:59:59 Europe/Moscow'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 23:59:59 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 03:00:00 Europe/Moscow'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 23:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 03:00:01 Europe/Moscow'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 23:00:01 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 04:00:00 Europe/Moscow'::timestamptz;
! timestamptz
! ------------------------------
! Sun Mar 27 00:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 00:00:00 MSK'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 21:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 01:00:00 MSK'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 22:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 01:59:59 MSK'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 22:59:59 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:00:00 MSK'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 22:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:00:01 MSK'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 22:00:01 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:59:59 MSK'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 22:59:59 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 03:00:00 MSK'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 23:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 03:00:01 MSK'::timestamptz;
! timestamptz
! ------------------------------
! Sat Mar 26 23:00:01 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 04:00:00 MSK'::timestamptz;
! timestamptz
! ------------------------------
! Sun Mar 27 00:00:00 2011 UTC
! (1 row)
!
! SELECT '2007-12-09 02:00:00 America/Caracas'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 06:00:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:29:59 America/Caracas'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 06:29:59 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:30:00 America/Caracas'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 07:00:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:30:01 America/Caracas'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 07:00:01 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:59:59 America/Caracas'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 07:29:59 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 03:00:00 America/Caracas'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 07:30:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 03:00:01 America/Caracas'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 07:30:01 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 04:00:00 America/Caracas'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 08:30:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:00:00 VET'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 06:00:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:29:59 VET'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 06:29:59 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:30:00 VET'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 07:00:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:30:01 VET'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 07:00:01 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:59:59 VET'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 07:29:59 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 03:00:00 VET'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 07:30:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 03:00:01 VET'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 07:30:01 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 04:00:00 VET'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 08:30:00 2007 UTC
! (1 row)
!
! SELECT '2011-03-27 00:00:00'::timestamp AT TIME ZONE 'Europe/Moscow';
! timezone
! ------------------------------
! Sat Mar 26 21:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 01:00:00'::timestamp AT TIME ZONE 'Europe/Moscow';
! timezone
! ------------------------------
! Sat Mar 26 22:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 01:59:59'::timestamp AT TIME ZONE 'Europe/Moscow';
! timezone
! ------------------------------
! Sat Mar 26 22:59:59 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:00:00'::timestamp AT TIME ZONE 'Europe/Moscow';
! timezone
! ------------------------------
! Sat Mar 26 23:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:00:01'::timestamp AT TIME ZONE 'Europe/Moscow';
! timezone
! ------------------------------
! Sat Mar 26 23:00:01 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:59:59'::timestamp AT TIME ZONE 'Europe/Moscow';
! timezone
! ------------------------------
! Sat Mar 26 23:59:59 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 03:00:00'::timestamp AT TIME ZONE 'Europe/Moscow';
! timezone
! ------------------------------
! Sat Mar 26 23:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 03:00:01'::timestamp AT TIME ZONE 'Europe/Moscow';
! timezone
! ------------------------------
! Sat Mar 26 23:00:01 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 04:00:00'::timestamp AT TIME ZONE 'Europe/Moscow';
! timezone
! ------------------------------
! Sun Mar 27 00:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 00:00:00'::timestamp AT TIME ZONE 'MSK';
! timezone
! ------------------------------
! Sat Mar 26 21:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 01:00:00'::timestamp AT TIME ZONE 'MSK';
! timezone
! ------------------------------
! Sat Mar 26 22:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 01:59:59'::timestamp AT TIME ZONE 'MSK';
! timezone
! ------------------------------
! Sat Mar 26 22:59:59 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:00:00'::timestamp AT TIME ZONE 'MSK';
! timezone
! ------------------------------
! Sat Mar 26 22:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:00:01'::timestamp AT TIME ZONE 'MSK';
! timezone
! ------------------------------
! Sat Mar 26 22:00:01 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 02:59:59'::timestamp AT TIME ZONE 'MSK';
! timezone
! ------------------------------
! Sat Mar 26 22:59:59 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 03:00:00'::timestamp AT TIME ZONE 'MSK';
! timezone
! ------------------------------
! Sat Mar 26 23:00:00 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 03:00:01'::timestamp AT TIME ZONE 'MSK';
! timezone
! ------------------------------
! Sat Mar 26 23:00:01 2011 UTC
! (1 row)
!
! SELECT '2011-03-27 04:00:00'::timestamp AT TIME ZONE 'MSK';
! timezone
! ------------------------------
! Sun Mar 27 00:00:00 2011 UTC
! (1 row)
!
! SELECT '2007-12-09 02:00:00'::timestamp AT TIME ZONE 'America/Caracas';
! timezone
! ------------------------------
! Sun Dec 09 06:00:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:29:59'::timestamp AT TIME ZONE 'America/Caracas';
! timezone
! ------------------------------
! Sun Dec 09 06:29:59 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:30:00'::timestamp AT TIME ZONE 'America/Caracas';
! timezone
! ------------------------------
! Sun Dec 09 07:00:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:30:01'::timestamp AT TIME ZONE 'America/Caracas';
! timezone
! ------------------------------
! Sun Dec 09 07:00:01 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:59:59'::timestamp AT TIME ZONE 'America/Caracas';
! timezone
! ------------------------------
! Sun Dec 09 07:29:59 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 03:00:00'::timestamp AT TIME ZONE 'America/Caracas';
! timezone
! ------------------------------
! Sun Dec 09 07:30:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 03:00:01'::timestamp AT TIME ZONE 'America/Caracas';
! timezone
! ------------------------------
! Sun Dec 09 07:30:01 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 04:00:00'::timestamp AT TIME ZONE 'America/Caracas';
! timezone
! ------------------------------
! Sun Dec 09 08:30:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:00:00'::timestamp AT TIME ZONE 'VET';
! timezone
! ------------------------------
! Sun Dec 09 06:00:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:29:59'::timestamp AT TIME ZONE 'VET';
! timezone
! ------------------------------
! Sun Dec 09 06:29:59 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:30:00'::timestamp AT TIME ZONE 'VET';
! timezone
! ------------------------------
! Sun Dec 09 07:00:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:30:01'::timestamp AT TIME ZONE 'VET';
! timezone
! ------------------------------
! Sun Dec 09 07:00:01 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 02:59:59'::timestamp AT TIME ZONE 'VET';
! timezone
! ------------------------------
! Sun Dec 09 07:29:59 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 03:00:00'::timestamp AT TIME ZONE 'VET';
! timezone
! ------------------------------
! Sun Dec 09 07:30:00 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 03:00:01'::timestamp AT TIME ZONE 'VET';
! timezone
! ------------------------------
! Sun Dec 09 07:30:01 2007 UTC
! (1 row)
!
! SELECT '2007-12-09 04:00:00'::timestamp AT TIME ZONE 'VET';
! timezone
! ------------------------------
! Sun Dec 09 08:30:00 2007 UTC
! (1 row)
!
! SELECT make_timestamptz(2007, 12, 9, 2, 0, 0, 'VET');
! make_timestamptz
! ------------------------------
! Sun Dec 09 06:00:00 2007 UTC
! (1 row)
!
! SELECT make_timestamptz(2007, 12, 9, 3, 0, 0, 'VET');
! make_timestamptz
! ------------------------------
! Sun Dec 09 07:30:00 2007 UTC
! (1 row)
!
! SET TimeZone to 'Europe/Moscow';
! SELECT '2011-03-26 21:00:00 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Mar 27 00:00:00 2011 MSK
! (1 row)
!
! SELECT '2011-03-26 22:00:00 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Mar 27 01:00:00 2011 MSK
! (1 row)
!
! SELECT '2011-03-26 22:59:59 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Mar 27 01:59:59 2011 MSK
! (1 row)
!
! SELECT '2011-03-26 23:00:00 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Mar 27 03:00:00 2011 MSK
! (1 row)
!
! SELECT '2011-03-26 23:00:01 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Mar 27 03:00:01 2011 MSK
! (1 row)
!
! SELECT '2011-03-26 23:59:59 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Mar 27 03:59:59 2011 MSK
! (1 row)
!
! SELECT '2011-03-27 00:00:00 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Mar 27 04:00:00 2011 MSK
! (1 row)
!
! SET TimeZone to 'America/Caracas';
! SELECT '2007-12-09 06:00:00 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 02:00:00 2007 VET
! (1 row)
!
! SELECT '2007-12-09 06:30:00 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 02:30:00 2007 VET
! (1 row)
!
! SELECT '2007-12-09 06:59:59 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 02:59:59 2007 VET
! (1 row)
!
! SELECT '2007-12-09 07:00:00 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 02:30:00 2007 VET
! (1 row)
!
! SELECT '2007-12-09 07:00:01 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 02:30:01 2007 VET
! (1 row)
!
! SELECT '2007-12-09 07:29:59 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 02:59:59 2007 VET
! (1 row)
!
! SELECT '2007-12-09 07:30:00 UTC'::timestamptz;
! timestamptz
! ------------------------------
! Sun Dec 09 03:00:00 2007 VET
! (1 row)
!
! RESET TimeZone;
! SELECT '2011-03-26 21:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow';
! timezone
! --------------------------
! Sun Mar 27 00:00:00 2011
! (1 row)
!
! SELECT '2011-03-26 22:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow';
! timezone
! --------------------------
! Sun Mar 27 01:00:00 2011
! (1 row)
!
! SELECT '2011-03-26 22:59:59 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow';
! timezone
! --------------------------
! Sun Mar 27 01:59:59 2011
! (1 row)
!
! SELECT '2011-03-26 23:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow';
! timezone
! --------------------------
! Sun Mar 27 03:00:00 2011
! (1 row)
!
! SELECT '2011-03-26 23:00:01 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow';
! timezone
! --------------------------
! Sun Mar 27 03:00:01 2011
! (1 row)
!
! SELECT '2011-03-26 23:59:59 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow';
! timezone
! --------------------------
! Sun Mar 27 03:59:59 2011
! (1 row)
!
! SELECT '2011-03-27 00:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow';
! timezone
! --------------------------
! Sun Mar 27 04:00:00 2011
! (1 row)
!
! SELECT '2007-12-09 06:00:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas';
! timezone
! --------------------------
! Sun Dec 09 02:00:00 2007
! (1 row)
!
! SELECT '2007-12-09 06:30:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas';
! timezone
! --------------------------
! Sun Dec 09 02:30:00 2007
! (1 row)
!
! SELECT '2007-12-09 06:59:59 UTC'::timestamptz AT TIME ZONE 'America/Caracas';
! timezone
! --------------------------
! Sun Dec 09 02:59:59 2007
! (1 row)
!
! SELECT '2007-12-09 07:00:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas';
! timezone
! --------------------------
! Sun Dec 09 02:30:00 2007
! (1 row)
!
! SELECT '2007-12-09 07:00:01 UTC'::timestamptz AT TIME ZONE 'America/Caracas';
! timezone
! --------------------------
! Sun Dec 09 02:30:01 2007
! (1 row)
!
! SELECT '2007-12-09 07:29:59 UTC'::timestamptz AT TIME ZONE 'America/Caracas';
! timezone
! --------------------------
! Sun Dec 09 02:59:59 2007
! (1 row)
!
! SELECT '2007-12-09 07:30:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas';
! timezone
! --------------------------
! Sun Dec 09 03:00:00 2007
! (1 row)
!
! SELECT '2011-03-26 21:00:00 UTC'::timestamptz AT TIME ZONE 'MSK';
! timezone
! --------------------------
! Sun Mar 27 00:00:00 2011
! (1 row)
!
! SELECT '2011-03-26 22:00:00 UTC'::timestamptz AT TIME ZONE 'MSK';
! timezone
! --------------------------
! Sun Mar 27 01:00:00 2011
! (1 row)
!
! SELECT '2011-03-26 22:59:59 UTC'::timestamptz AT TIME ZONE 'MSK';
! timezone
! --------------------------
! Sun Mar 27 01:59:59 2011
! (1 row)
!
! SELECT '2011-03-26 23:00:00 UTC'::timestamptz AT TIME ZONE 'MSK';
! timezone
! --------------------------
! Sun Mar 27 03:00:00 2011
! (1 row)
!
! SELECT '2011-03-26 23:00:01 UTC'::timestamptz AT TIME ZONE 'MSK';
! timezone
! --------------------------
! Sun Mar 27 03:00:01 2011
! (1 row)
!
! SELECT '2011-03-26 23:59:59 UTC'::timestamptz AT TIME ZONE 'MSK';
! timezone
! --------------------------
! Sun Mar 27 03:59:59 2011
! (1 row)
!
! SELECT '2011-03-27 00:00:00 UTC'::timestamptz AT TIME ZONE 'MSK';
! timezone
! --------------------------
! Sun Mar 27 04:00:00 2011
! (1 row)
!
! SELECT '2007-12-09 06:00:00 UTC'::timestamptz AT TIME ZONE 'VET';
! timezone
! --------------------------
! Sun Dec 09 02:00:00 2007
! (1 row)
!
! SELECT '2007-12-09 06:30:00 UTC'::timestamptz AT TIME ZONE 'VET';
! timezone
! --------------------------
! Sun Dec 09 02:30:00 2007
! (1 row)
!
! SELECT '2007-12-09 06:59:59 UTC'::timestamptz AT TIME ZONE 'VET';
! timezone
! --------------------------
! Sun Dec 09 02:59:59 2007
! (1 row)
!
! SELECT '2007-12-09 07:00:00 UTC'::timestamptz AT TIME ZONE 'VET';
! timezone
! --------------------------
! Sun Dec 09 02:30:00 2007
! (1 row)
!
! SELECT '2007-12-09 07:00:01 UTC'::timestamptz AT TIME ZONE 'VET';
! timezone
! --------------------------
! Sun Dec 09 02:30:01 2007
! (1 row)
!
! SELECT '2007-12-09 07:29:59 UTC'::timestamptz AT TIME ZONE 'VET';
! timezone
! --------------------------
! Sun Dec 09 02:59:59 2007
! (1 row)
!
! SELECT '2007-12-09 07:30:00 UTC'::timestamptz AT TIME ZONE 'VET';
! timezone
! --------------------------
! Sun Dec 09 03:00:00 2007
! (1 row)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/interval.out 2016-04-02 21:48:12.921169244 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/interval.out 2016-04-04 03:18:31.099295267 +0000
***************
*** 1,847 ****
! --
! -- INTERVAL
! --
! SET DATESTYLE = 'ISO';
! SET IntervalStyle to postgres;
! -- check acceptance of "time zone style"
! SELECT INTERVAL '01:00' AS "One hour";
! One hour
! ----------
! 01:00:00
! (1 row)
!
! SELECT INTERVAL '+02:00' AS "Two hours";
! Two hours
! -----------
! 02:00:00
! (1 row)
!
! SELECT INTERVAL '-08:00' AS "Eight hours";
! Eight hours
! -------------
! -08:00:00
! (1 row)
!
! SELECT INTERVAL '-1 +02:03' AS "22 hours ago...";
! 22 hours ago...
! -------------------
! -1 days +02:03:00
! (1 row)
!
! SELECT INTERVAL '-1 days +02:03' AS "22 hours ago...";
! 22 hours ago...
! -------------------
! -1 days +02:03:00
! (1 row)
!
! SELECT INTERVAL '1.5 weeks' AS "Ten days twelve hours";
! Ten days twelve hours
! -----------------------
! 10 days 12:00:00
! (1 row)
!
! SELECT INTERVAL '1.5 months' AS "One month 15 days";
! One month 15 days
! -------------------
! 1 mon 15 days
! (1 row)
!
! SELECT INTERVAL '10 years -11 month -12 days +13:14' AS "9 years...";
! 9 years...
! ----------------------------------
! 9 years 1 mon -12 days +13:14:00
! (1 row)
!
! CREATE TABLE INTERVAL_TBL (f1 interval);
! INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 1 minute');
! INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 5 hour');
! INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 10 day');
! INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 34 year');
! INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 3 months');
! INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 14 seconds ago');
! INSERT INTO INTERVAL_TBL (f1) VALUES ('1 day 2 hours 3 minutes 4 seconds');
! INSERT INTO INTERVAL_TBL (f1) VALUES ('6 years');
! INSERT INTO INTERVAL_TBL (f1) VALUES ('5 months');
! INSERT INTO INTERVAL_TBL (f1) VALUES ('5 months 12 hours');
! -- badly formatted interval
! INSERT INTO INTERVAL_TBL (f1) VALUES ('badly formatted interval');
! ERROR: invalid input syntax for type interval: "badly formatted interval"
! LINE 1: INSERT INTO INTERVAL_TBL (f1) VALUES ('badly formatted inter...
! ^
! INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago');
! ERROR: invalid input syntax for type interval: "@ 30 eons ago"
! LINE 1: INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago');
! ^
! -- test interval operators
! SELECT '' AS ten, * FROM INTERVAL_TBL ORDER BY f1;
! ten | f1
! -----+-----------------
! | -00:00:14
! | 00:01:00
! | 05:00:00
! | 1 day 02:03:04
! | 10 days
! | 3 mons
! | 5 mons
! | 5 mons 12:00:00
! | 6 years
! | 34 years
! (10 rows)
!
! SELECT '' AS nine, * FROM INTERVAL_TBL
! WHERE INTERVAL_TBL.f1 <> interval '@ 10 days' ORDER BY f1;
! nine | f1
! ------+-----------------
! | -00:00:14
! | 00:01:00
! | 05:00:00
! | 1 day 02:03:04
! | 3 mons
! | 5 mons
! | 5 mons 12:00:00
! | 6 years
! | 34 years
! (9 rows)
!
! SELECT '' AS three, * FROM INTERVAL_TBL
! WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours' ORDER BY f1;
! three | f1
! -------+-----------
! | -00:00:14
! | 00:01:00
! | 05:00:00
! (3 rows)
!
! SELECT '' AS three, * FROM INTERVAL_TBL
! WHERE INTERVAL_TBL.f1 < interval '@ 1 day' ORDER BY f1;
! three | f1
! -------+-----------
! | -00:00:14
! | 00:01:00
! | 05:00:00
! (3 rows)
!
! SELECT '' AS one, * FROM INTERVAL_TBL
! WHERE INTERVAL_TBL.f1 = interval '@ 34 years' ORDER BY f1;
! one | f1
! -----+----------
! | 34 years
! (1 row)
!
! SELECT '' AS five, * FROM INTERVAL_TBL
! WHERE INTERVAL_TBL.f1 >= interval '@ 1 month' ORDER BY f1;
! five | f1
! ------+-----------------
! | 3 mons
! | 5 mons
! | 5 mons 12:00:00
! | 6 years
! | 34 years
! (5 rows)
!
! SELECT '' AS nine, * FROM INTERVAL_TBL
! WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago' ORDER BY f1;
! nine | f1
! ------+-----------------
! | 00:01:00
! | 05:00:00
! | 1 day 02:03:04
! | 10 days
! | 3 mons
! | 5 mons
! | 5 mons 12:00:00
! | 6 years
! | 34 years
! (9 rows)
!
! SELECT '' AS fortyfive, r1.*, r2.*
! FROM INTERVAL_TBL r1, INTERVAL_TBL r2
! WHERE r1.f1 > r2.f1
! ORDER BY r1.f1, r2.f1;
! fortyfive | f1 | f1
! -----------+-----------------+-----------------
! | 00:01:00 | -00:00:14
! | 05:00:00 | -00:00:14
! | 05:00:00 | 00:01:00
! | 1 day 02:03:04 | -00:00:14
! | 1 day 02:03:04 | 00:01:00
! | 1 day 02:03:04 | 05:00:00
! | 10 days | -00:00:14
! | 10 days | 00:01:00
! | 10 days | 05:00:00
! | 10 days | 1 day 02:03:04
! | 3 mons | -00:00:14
! | 3 mons | 00:01:00
! | 3 mons | 05:00:00
! | 3 mons | 1 day 02:03:04
! | 3 mons | 10 days
! | 5 mons | -00:00:14
! | 5 mons | 00:01:00
! | 5 mons | 05:00:00
! | 5 mons | 1 day 02:03:04
! | 5 mons | 10 days
! | 5 mons | 3 mons
! | 5 mons 12:00:00 | -00:00:14
! | 5 mons 12:00:00 | 00:01:00
! | 5 mons 12:00:00 | 05:00:00
! | 5 mons 12:00:00 | 1 day 02:03:04
! | 5 mons 12:00:00 | 10 days
! | 5 mons 12:00:00 | 3 mons
! | 5 mons 12:00:00 | 5 mons
! | 6 years | -00:00:14
! | 6 years | 00:01:00
! | 6 years | 05:00:00
! | 6 years | 1 day 02:03:04
! | 6 years | 10 days
! | 6 years | 3 mons
! | 6 years | 5 mons
! | 6 years | 5 mons 12:00:00
! | 34 years | -00:00:14
! | 34 years | 00:01:00
! | 34 years | 05:00:00
! | 34 years | 1 day 02:03:04
! | 34 years | 10 days
! | 34 years | 3 mons
! | 34 years | 5 mons
! | 34 years | 5 mons 12:00:00
! | 34 years | 6 years
! (45 rows)
!
! -- Test multiplication and division with intervals.
! -- Floating point arithmetic rounding errors can lead to unexpected results,
! -- though the code attempts to do the right thing and round up to days and
! -- minutes to avoid results such as '3 days 24:00 hours' or '14:20:60'.
! -- Note that it is expected for some day components to be greater than 29 and
! -- some time components be greater than 23:59:59 due to how intervals are
! -- stored internally.
! CREATE TABLE INTERVAL_MULDIV_TBL (span interval);
! COPY INTERVAL_MULDIV_TBL FROM STDIN;
! SELECT span * 0.3 AS product
! FROM INTERVAL_MULDIV_TBL ORDER BY span;
! product
! ------------------------------------
! -1 years -12 days +93:36:00
! -10 mons +120 days 37:28:21.6567
! -3 days -14:24:00
! 1 mon 6 days
! 2 mons 13 days 01:22:28.8
! 4 mons 6 days
! 1 year 12 days 122:24:00
! 24 years 11 mons 320 days 16:48:00
! (8 rows)
!
! SELECT span * 8.2 AS product
! FROM INTERVAL_MULDIV_TBL ORDER BY span;
! product
! ---------------------------------------------
! -28 years -104 days +2942:24:00
! -24 years -7 mons +3946 days 640:15:11.9498
! -98 days -09:36:00
! 2 years 8 mons 24 days
! 6 years 1 mon -197 days +93:34:27.2
! 9 years 6 mons 24 days
! 28 years 104 days 2961:36:00
! 682 years 7 mons 8215 days 19:12:00
! (8 rows)
!
! SELECT span / 10 AS quotient
! FROM INTERVAL_MULDIV_TBL ORDER BY span;
! quotient
! ----------------------------------
! -4 mons -4 days +31:12:00
! -3 mons +30 days 12:29:27.2189
! -1 days -04:48:00
! 12 days
! 25 days -15:32:30.4
! 1 mon 12 days
! 4 mons 4 days 40:48:00
! 8 years 3 mons 126 days 21:36:00
! (8 rows)
!
! SELECT span / 100 AS quotient
! FROM INTERVAL_MULDIV_TBL ORDER BY span;
! quotient
! -------------------------
! -12 days -06:28:48
! -6 days +01:14:56.72189
! -02:52:48
! 1 day 04:48:00
! 2 days 10:26:44.96
! 4 days 04:48:00
! 12 days 13:40:48
! 9 mons 39 days 16:33:36
! (8 rows)
!
! DROP TABLE INTERVAL_MULDIV_TBL;
! SET DATESTYLE = 'postgres';
! SET IntervalStyle to postgres_verbose;
! SELECT '' AS ten, * FROM INTERVAL_TBL ORDER BY f1;
! ten | f1
! -----+-------------------------------
! | @ 14 secs ago
! | @ 1 min
! | @ 5 hours
! | @ 1 day 2 hours 3 mins 4 secs
! | @ 10 days
! | @ 3 mons
! | @ 5 mons
! | @ 5 mons 12 hours
! | @ 6 years
! | @ 34 years
! (10 rows)
!
! -- test avg(interval), which is somewhat fragile since people have been
! -- known to change the allowed input syntax for type interval without
! -- updating pg_aggregate.agginitval
! select avg(f1) from interval_tbl;
! avg
! -------------------------------------------------
! @ 4 years 1 mon 10 days 4 hours 18 mins 23 secs
! (1 row)
!
! -- test long interval input
! select '4 millenniums 5 centuries 4 decades 1 year 4 months 4 days 17 minutes 31 seconds'::interval;
! interval
! --------------------------------------------
! @ 4541 years 4 mons 4 days 17 mins 31 secs
! (1 row)
!
! -- test long interval output
! -- Note: the actual maximum length of the interval output is longer,
! -- but we need the test to work for both integer and floating-point
! -- timestamps.
! select '100000000y 10mon -1000000000d -100000h -10min -10.000001s ago'::interval;
! interval
! ---------------------------------------------------------------------------------------
! @ 100000000 years 10 mons -1000000000 days -100000 hours -10 mins -10.000001 secs ago
! (1 row)
!
! -- test justify_hours() and justify_days()
! SELECT justify_hours(interval '6 months 3 days 52 hours 3 minutes 2 seconds') as "6 mons 5 days 4 hours 3 mins 2 seconds";
! 6 mons 5 days 4 hours 3 mins 2 seconds
! ----------------------------------------
! @ 6 mons 5 days 4 hours 3 mins 2 secs
! (1 row)
!
! SELECT justify_days(interval '6 months 36 days 5 hours 4 minutes 3 seconds') as "7 mons 6 days 5 hours 4 mins 3 seconds";
! 7 mons 6 days 5 hours 4 mins 3 seconds
! ----------------------------------------
! @ 7 mons 6 days 5 hours 4 mins 3 secs
! (1 row)
!
! -- test justify_interval()
! SELECT justify_interval(interval '1 month -1 hour') as "1 month -1 hour";
! 1 month -1 hour
! --------------------
! @ 29 days 23 hours
! (1 row)
!
! -- test fractional second input, and detection of duplicate units
! SET DATESTYLE = 'ISO';
! SET IntervalStyle TO postgres;
! SELECT '1 millisecond'::interval, '1 microsecond'::interval,
! '500 seconds 99 milliseconds 51 microseconds'::interval;
! interval | interval | interval
! --------------+-----------------+-----------------
! 00:00:00.001 | 00:00:00.000001 | 00:08:20.099051
! (1 row)
!
! SELECT '3 days 5 milliseconds'::interval;
! interval
! ---------------------
! 3 days 00:00:00.005
! (1 row)
!
! SELECT '1 second 2 seconds'::interval; -- error
! ERROR: invalid input syntax for type interval: "1 second 2 seconds"
! LINE 1: SELECT '1 second 2 seconds'::interval;
! ^
! SELECT '10 milliseconds 20 milliseconds'::interval; -- error
! ERROR: invalid input syntax for type interval: "10 milliseconds 20 milliseconds"
! LINE 1: SELECT '10 milliseconds 20 milliseconds'::interval;
! ^
! SELECT '5.5 seconds 3 milliseconds'::interval; -- error
! ERROR: invalid input syntax for type interval: "5.5 seconds 3 milliseconds"
! LINE 1: SELECT '5.5 seconds 3 milliseconds'::interval;
! ^
! SELECT '1:20:05 5 microseconds'::interval; -- error
! ERROR: invalid input syntax for type interval: "1:20:05 5 microseconds"
! LINE 1: SELECT '1:20:05 5 microseconds'::interval;
! ^
! SELECT '1 day 1 day'::interval; -- error
! ERROR: invalid input syntax for type interval: "1 day 1 day"
! LINE 1: SELECT '1 day 1 day'::interval;
! ^
! SELECT interval '1-2'; -- SQL year-month literal
! interval
! ---------------
! 1 year 2 mons
! (1 row)
!
! SELECT interval '999' second; -- oversize leading field is ok
! interval
! ----------
! 00:16:39
! (1 row)
!
! SELECT interval '999' minute;
! interval
! ----------
! 16:39:00
! (1 row)
!
! SELECT interval '999' hour;
! interval
! -----------
! 999:00:00
! (1 row)
!
! SELECT interval '999' day;
! interval
! ----------
! 999 days
! (1 row)
!
! SELECT interval '999' month;
! interval
! -----------------
! 83 years 3 mons
! (1 row)
!
! -- test SQL-spec syntaxes for restricted field sets
! SELECT interval '1' year;
! interval
! ----------
! 1 year
! (1 row)
!
! SELECT interval '2' month;
! interval
! ----------
! 2 mons
! (1 row)
!
! SELECT interval '3' day;
! interval
! ----------
! 3 days
! (1 row)
!
! SELECT interval '4' hour;
! interval
! ----------
! 04:00:00
! (1 row)
!
! SELECT interval '5' minute;
! interval
! ----------
! 00:05:00
! (1 row)
!
! SELECT interval '6' second;
! interval
! ----------
! 00:00:06
! (1 row)
!
! SELECT interval '1' year to month;
! interval
! ----------
! 1 mon
! (1 row)
!
! SELECT interval '1-2' year to month;
! interval
! ---------------
! 1 year 2 mons
! (1 row)
!
! SELECT interval '1 2' day to hour;
! interval
! ----------------
! 1 day 02:00:00
! (1 row)
!
! SELECT interval '1 2:03' day to hour;
! interval
! ----------------
! 1 day 02:00:00
! (1 row)
!
! SELECT interval '1 2:03:04' day to hour;
! interval
! ----------------
! 1 day 02:00:00
! (1 row)
!
! SELECT interval '1 2' day to minute;
! ERROR: invalid input syntax for type interval: "1 2"
! LINE 1: SELECT interval '1 2' day to minute;
! ^
! SELECT interval '1 2:03' day to minute;
! interval
! ----------------
! 1 day 02:03:00
! (1 row)
!
! SELECT interval '1 2:03:04' day to minute;
! interval
! ----------------
! 1 day 02:03:00
! (1 row)
!
! SELECT interval '1 2' day to second;
! ERROR: invalid input syntax for type interval: "1 2"
! LINE 1: SELECT interval '1 2' day to second;
! ^
! SELECT interval '1 2:03' day to second;
! interval
! ----------------
! 1 day 02:03:00
! (1 row)
!
! SELECT interval '1 2:03:04' day to second;
! interval
! ----------------
! 1 day 02:03:04
! (1 row)
!
! SELECT interval '1 2' hour to minute;
! ERROR: invalid input syntax for type interval: "1 2"
! LINE 1: SELECT interval '1 2' hour to minute;
! ^
! SELECT interval '1 2:03' hour to minute;
! interval
! ----------------
! 1 day 02:03:00
! (1 row)
!
! SELECT interval '1 2:03:04' hour to minute;
! interval
! ----------------
! 1 day 02:03:00
! (1 row)
!
! SELECT interval '1 2' hour to second;
! ERROR: invalid input syntax for type interval: "1 2"
! LINE 1: SELECT interval '1 2' hour to second;
! ^
! SELECT interval '1 2:03' hour to second;
! interval
! ----------------
! 1 day 02:03:00
! (1 row)
!
! SELECT interval '1 2:03:04' hour to second;
! interval
! ----------------
! 1 day 02:03:04
! (1 row)
!
! SELECT interval '1 2' minute to second;
! ERROR: invalid input syntax for type interval: "1 2"
! LINE 1: SELECT interval '1 2' minute to second;
! ^
! SELECT interval '1 2:03' minute to second;
! interval
! ----------------
! 1 day 00:02:03
! (1 row)
!
! SELECT interval '1 2:03:04' minute to second;
! interval
! ----------------
! 1 day 02:03:04
! (1 row)
!
! SELECT interval '1 +2:03' minute to second;
! interval
! ----------------
! 1 day 00:02:03
! (1 row)
!
! SELECT interval '1 +2:03:04' minute to second;
! interval
! ----------------
! 1 day 02:03:04
! (1 row)
!
! SELECT interval '1 -2:03' minute to second;
! interval
! -----------------
! 1 day -00:02:03
! (1 row)
!
! SELECT interval '1 -2:03:04' minute to second;
! interval
! -----------------
! 1 day -02:03:04
! (1 row)
!
! SELECT interval '123 11' day to hour; -- ok
! interval
! -------------------
! 123 days 11:00:00
! (1 row)
!
! SELECT interval '123 11' day; -- not ok
! ERROR: invalid input syntax for type interval: "123 11"
! LINE 1: SELECT interval '123 11' day;
! ^
! SELECT interval '123 11'; -- not ok, too ambiguous
! ERROR: invalid input syntax for type interval: "123 11"
! LINE 1: SELECT interval '123 11';
! ^
! SELECT interval '123 2:03 -2:04'; -- not ok, redundant hh:mm fields
! ERROR: invalid input syntax for type interval: "123 2:03 -2:04"
! LINE 1: SELECT interval '123 2:03 -2:04';
! ^
! -- test syntaxes for restricted precision
! SELECT interval(0) '1 day 01:23:45.6789';
! interval
! ----------------
! 1 day 01:23:46
! (1 row)
!
! SELECT interval(2) '1 day 01:23:45.6789';
! interval
! -------------------
! 1 day 01:23:45.68
! (1 row)
!
! SELECT interval '12:34.5678' minute to second(2); -- per SQL spec
! interval
! -------------
! 00:12:34.57
! (1 row)
!
! SELECT interval '1.234' second;
! interval
! --------------
! 00:00:01.234
! (1 row)
!
! SELECT interval '1.234' second(2);
! interval
! -------------
! 00:00:01.23
! (1 row)
!
! SELECT interval '1 2.345' day to second(2);
! ERROR: invalid input syntax for type interval: "1 2.345"
! LINE 1: SELECT interval '1 2.345' day to second(2);
! ^
! SELECT interval '1 2:03' day to second(2);
! interval
! ----------------
! 1 day 02:03:00
! (1 row)
!
! SELECT interval '1 2:03.4567' day to second(2);
! interval
! -------------------
! 1 day 00:02:03.46
! (1 row)
!
! SELECT interval '1 2:03:04.5678' day to second(2);
! interval
! -------------------
! 1 day 02:03:04.57
! (1 row)
!
! SELECT interval '1 2.345' hour to second(2);
! ERROR: invalid input syntax for type interval: "1 2.345"
! LINE 1: SELECT interval '1 2.345' hour to second(2);
! ^
! SELECT interval '1 2:03.45678' hour to second(2);
! interval
! -------------------
! 1 day 00:02:03.46
! (1 row)
!
! SELECT interval '1 2:03:04.5678' hour to second(2);
! interval
! -------------------
! 1 day 02:03:04.57
! (1 row)
!
! SELECT interval '1 2.3456' minute to second(2);
! ERROR: invalid input syntax for type interval: "1 2.3456"
! LINE 1: SELECT interval '1 2.3456' minute to second(2);
! ^
! SELECT interval '1 2:03.5678' minute to second(2);
! interval
! -------------------
! 1 day 00:02:03.57
! (1 row)
!
! SELECT interval '1 2:03:04.5678' minute to second(2);
! interval
! -------------------
! 1 day 02:03:04.57
! (1 row)
!
! -- test inputting and outputting SQL standard interval literals
! SET IntervalStyle TO sql_standard;
! SELECT interval '0' AS "zero",
! interval '1-2' year to month AS "year-month",
! interval '1 2:03:04' day to second AS "day-time",
! - interval '1-2' AS "negative year-month",
! - interval '1 2:03:04' AS "negative day-time";
! zero | year-month | day-time | negative year-month | negative day-time
! ------+------------+-----------+---------------------+-------------------
! 0 | 1-2 | 1 2:03:04 | -1-2 | -1 2:03:04
! (1 row)
!
! -- test input of some not-quite-standard interval values in the sql style
! SET IntervalStyle TO postgres;
! SELECT interval '+1 -1:00:00',
! interval '-1 +1:00:00',
! interval '+1-2 -3 +4:05:06.789',
! interval '-1-2 +3 -4:05:06.789';
! interval | interval | interval | interval
! -----------------+-------------------+-------------------------------------+----------------------------------------
! 1 day -01:00:00 | -1 days +01:00:00 | 1 year 2 mons -3 days +04:05:06.789 | -1 years -2 mons +3 days -04:05:06.789
! (1 row)
!
! -- test output of couple non-standard interval values in the sql style
! SET IntervalStyle TO sql_standard;
! SELECT interval '1 day -1 hours',
! interval '-1 days +1 hours',
! interval '1 years 2 months -3 days 4 hours 5 minutes 6.789 seconds',
! - interval '1 years 2 months -3 days 4 hours 5 minutes 6.789 seconds';
! interval | interval | interval | ?column?
! ------------------+------------------+----------------------+----------------------
! +0-0 +1 -1:00:00 | +0-0 -1 +1:00:00 | +1-2 -3 +4:05:06.789 | -1-2 +3 -4:05:06.789
! (1 row)
!
! -- test outputting iso8601 intervals
! SET IntervalStyle to iso_8601;
! select interval '0' AS "zero",
! interval '1-2' AS "a year 2 months",
! interval '1 2:03:04' AS "a bit over a day",
! interval '2:03:04.45679' AS "a bit over 2 hours",
! (interval '1-2' + interval '3 4:05:06.7') AS "all fields",
! (interval '1-2' - interval '3 4:05:06.7') AS "mixed sign",
! (- interval '1-2' + interval '3 4:05:06.7') AS "negative";
! zero | a year 2 months | a bit over a day | a bit over 2 hours | all fields | mixed sign | negative
! ------+-----------------+------------------+--------------------+------------------+----------------------+--------------------
! PT0S | P1Y2M | P1DT2H3M4S | PT2H3M4.45679S | P1Y2M3DT4H5M6.7S | P1Y2M-3DT-4H-5M-6.7S | P-1Y-2M3DT4H5M6.7S
! (1 row)
!
! -- test inputting ISO 8601 4.4.2.1 "Format With Time Unit Designators"
! SET IntervalStyle to sql_standard;
! select interval 'P0Y' AS "zero",
! interval 'P1Y2M' AS "a year 2 months",
! interval 'P1W' AS "a week",
! interval 'P1DT2H3M4S' AS "a bit over a day",
! interval 'P1Y2M3DT4H5M6.7S' AS "all fields",
! interval 'P-1Y-2M-3DT-4H-5M-6.7S' AS "negative",
! interval 'PT-0.1S' AS "fractional second";
! zero | a year 2 months | a week | a bit over a day | all fields | negative | fractional second
! ------+-----------------+-----------+------------------+--------------------+--------------------+-------------------
! 0 | 1-2 | 7 0:00:00 | 1 2:03:04 | +1-2 +3 +4:05:06.7 | -1-2 -3 -4:05:06.7 | -0:00:00.1
! (1 row)
!
! -- test inputting ISO 8601 4.4.2.2 "Alternative Format"
! SET IntervalStyle to postgres;
! select interval 'P00021015T103020' AS "ISO8601 Basic Format",
! interval 'P0002-10-15T10:30:20' AS "ISO8601 Extended Format";
! ISO8601 Basic Format | ISO8601 Extended Format
! ----------------------------------+----------------------------------
! 2 years 10 mons 15 days 10:30:20 | 2 years 10 mons 15 days 10:30:20
! (1 row)
!
! -- Make sure optional ISO8601 alternative format fields are optional.
! select interval 'P0002' AS "year only",
! interval 'P0002-10' AS "year month",
! interval 'P0002-10-15' AS "year month day",
! interval 'P0002T1S' AS "year only plus time",
! interval 'P0002-10T1S' AS "year month plus time",
! interval 'P0002-10-15T1S' AS "year month day plus time",
! interval 'PT10' AS "hour only",
! interval 'PT10:30' AS "hour minute";
! year only | year month | year month day | year only plus time | year month plus time | year month day plus time | hour only | hour minute
! -----------+-----------------+-------------------------+---------------------+--------------------------+----------------------------------+-----------+-------------
! 2 years | 2 years 10 mons | 2 years 10 mons 15 days | 2 years 00:00:01 | 2 years 10 mons 00:00:01 | 2 years 10 mons 15 days 00:00:01 | 10:00:00 | 10:30:00
! (1 row)
!
! -- test a couple rounding cases that changed since 8.3 w/ HAVE_INT64_TIMESTAMP.
! SET IntervalStyle to postgres_verbose;
! select interval '-10 mons -3 days +03:55:06.70';
! interval
! --------------------------------------------------
! @ 10 mons 3 days -3 hours -55 mins -6.7 secs ago
! (1 row)
!
! select interval '1 year 2 mons 3 days 04:05:06.699999';
! interval
! -----------------------------------------------------
! @ 1 year 2 mons 3 days 4 hours 5 mins 6.699999 secs
! (1 row)
!
! select interval '0:0:0.7', interval '@ 0.70 secs', interval '0.7 seconds';
! interval | interval | interval
! ------------+------------+------------
! @ 0.7 secs | @ 0.7 secs | @ 0.7 secs
! (1 row)
!
! -- check that '30 days' equals '1 month' according to the hash function
! select '30 days'::interval = '1 month'::interval as t;
! t
! ---
! t
! (1 row)
!
! select interval_hash('30 days'::interval) = interval_hash('1 month'::interval) as t;
! t
! ---
! t
! (1 row)
!
! -- numeric constructor
! select make_interval(years := 2);
! make_interval
! ---------------
! @ 2 years
! (1 row)
!
! select make_interval(years := 1, months := 6);
! make_interval
! -----------------
! @ 1 year 6 mons
! (1 row)
!
! select make_interval(years := 1, months := -1, weeks := 5, days := -7, hours := 25, mins := -180);
! make_interval
! ----------------------------
! @ 11 mons 28 days 22 hours
! (1 row)
!
! select make_interval() = make_interval(years := 0, months := 0, weeks := 0, days := 0, mins := 0, secs := 0.0);
! ?column?
! ----------
! t
! (1 row)
!
! select make_interval(hours := -2, mins := -10, secs := -25.3);
! make_interval
! ---------------------------------
! @ 2 hours 10 mins 25.3 secs ago
! (1 row)
!
! select make_interval(years := 'inf'::float::int);
! ERROR: integer out of range
! select make_interval(months := 'NaN'::float::int);
! ERROR: integer out of range
! select make_interval(secs := 'inf');
! ERROR: interval out of range
! select make_interval(secs := 'NaN');
! ERROR: interval out of range
! select make_interval(secs := 7e12);
! make_interval
! ------------------------------------
! @ 1944444444 hours 26 mins 40 secs
! (1 row)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/abstime.out 2016-04-02 21:48:12.909907650 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/abstime.out 2016-04-04 03:18:31.119837504 +0000
***************
*** 1,136 ****
! --
! -- ABSTIME
! -- testing built-in time type abstime
! -- uses reltime and tinterval
! --
! --
! -- timezones may vary based not only on location but the operating
! -- system. the main correctness issue is that the OS may not get
! -- daylight savings time right for times prior to Unix epoch (jan 1 1970).
! --
! CREATE TABLE ABSTIME_TBL (f1 abstime);
! BEGIN;
! INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'now');
! INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'now');
! SELECT count(*) AS two FROM ABSTIME_TBL WHERE f1 = 'now' ;
! two
! -----
! 2
! (1 row)
!
! END;
! DELETE FROM ABSTIME_TBL;
! INSERT INTO ABSTIME_TBL (f1) VALUES ('Jan 14, 1973 03:14:21');
! INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'Mon May 1 00:30:30 1995');
! INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'epoch');
! INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'infinity');
! INSERT INTO ABSTIME_TBL (f1) VALUES (abstime '-infinity');
! INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'May 10, 1947 23:59:12');
! -- what happens if we specify slightly misformatted abstime?
! INSERT INTO ABSTIME_TBL (f1) VALUES ('Feb 35, 1946 10:00:00');
! ERROR: date/time field value out of range: "Feb 35, 1946 10:00:00"
! LINE 1: INSERT INTO ABSTIME_TBL (f1) VALUES ('Feb 35, 1946 10:00:00'...
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! INSERT INTO ABSTIME_TBL (f1) VALUES ('Feb 28, 1984 25:08:10');
! ERROR: date/time field value out of range: "Feb 28, 1984 25:08:10"
! LINE 1: INSERT INTO ABSTIME_TBL (f1) VALUES ('Feb 28, 1984 25:08:10'...
! ^
! -- badly formatted abstimes: these should result in invalid abstimes
! INSERT INTO ABSTIME_TBL (f1) VALUES ('bad date format');
! ERROR: invalid input syntax for type abstime: "bad date format"
! LINE 1: INSERT INTO ABSTIME_TBL (f1) VALUES ('bad date format');
! ^
! INSERT INTO ABSTIME_TBL (f1) VALUES ('Jun 10, 1843');
! -- test abstime operators
! SELECT '' AS eight, * FROM ABSTIME_TBL ORDER BY f1;
! eight | f1
! -------+------------------------------
! | -infinity
! | Sat May 10 23:59:12 1947 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! | Mon May 01 00:30:30 1995 PDT
! | infinity
! | invalid
! (7 rows)
!
! SELECT '' AS six, * FROM ABSTIME_TBL
! WHERE ABSTIME_TBL.f1 < abstime 'Jun 30, 2001' ORDER BY f1;
! six | f1
! -----+------------------------------
! | -infinity
! | Sat May 10 23:59:12 1947 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! | Mon May 01 00:30:30 1995 PDT
! (5 rows)
!
! SELECT '' AS six, * FROM ABSTIME_TBL
! WHERE ABSTIME_TBL.f1 > abstime '-infinity' ORDER BY f1;
! six | f1
! -----+------------------------------
! | Sat May 10 23:59:12 1947 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! | Mon May 01 00:30:30 1995 PDT
! | infinity
! | invalid
! (6 rows)
!
! SELECT '' AS six, * FROM ABSTIME_TBL
! WHERE abstime 'May 10, 1947 23:59:12' <> ABSTIME_TBL.f1 ORDER BY f1;
! six | f1
! -----+------------------------------
! | -infinity
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! | Mon May 01 00:30:30 1995 PDT
! | infinity
! | invalid
! (6 rows)
!
! SELECT '' AS three, * FROM ABSTIME_TBL
! WHERE abstime 'epoch' >= ABSTIME_TBL.f1 ORDER BY f1;
! three | f1
! -------+------------------------------
! | -infinity
! | Sat May 10 23:59:12 1947 PST
! | Wed Dec 31 16:00:00 1969 PST
! (3 rows)
!
! SELECT '' AS four, * FROM ABSTIME_TBL
! WHERE ABSTIME_TBL.f1 <= abstime 'Jan 14, 1973 03:14:21' ORDER BY f1;
! four | f1
! ------+------------------------------
! | -infinity
! | Sat May 10 23:59:12 1947 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! (4 rows)
!
! SELECT '' AS four, * FROM ABSTIME_TBL
! WHERE ABSTIME_TBL.f1 <?>
! tinterval '["Apr 1 1950 00:00:00" "Dec 30 1999 23:00:00"]' ORDER BY f1;
! four | f1
! ------+------------------------------
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! | Mon May 01 00:30:30 1995 PDT
! (3 rows)
!
! SELECT '' AS four, f1 AS abstime,
! date_part('year', f1) AS year, date_part('month', f1) AS month,
! date_part('day',f1) AS day, date_part('hour', f1) AS hour,
! date_part('minute', f1) AS minute, date_part('second', f1) AS second
! FROM ABSTIME_TBL
! WHERE isfinite(f1)
! ORDER BY abstime;
! four | abstime | year | month | day | hour | minute | second
! ------+------------------------------+------+-------+-----+------+--------+--------
! | Sat May 10 23:59:12 1947 PST | 1947 | 5 | 10 | 23 | 59 | 12
! | Wed Dec 31 16:00:00 1969 PST | 1969 | 12 | 31 | 16 | 0 | 0
! | Sun Jan 14 03:14:21 1973 PST | 1973 | 1 | 14 | 3 | 14 | 21
! | Mon May 01 00:30:30 1995 PDT | 1995 | 5 | 1 | 0 | 30 | 30
! (4 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/reltime.out 2016-04-02 21:48:12.931662856 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/reltime.out 2016-04-04 03:18:31.139616701 +0000
***************
*** 1,109 ****
! --
! -- RELTIME
! --
! CREATE TABLE RELTIME_TBL (f1 reltime);
! INSERT INTO RELTIME_TBL (f1) VALUES ('@ 1 minute');
! INSERT INTO RELTIME_TBL (f1) VALUES ('@ 5 hour');
! INSERT INTO RELTIME_TBL (f1) VALUES ('@ 10 day');
! INSERT INTO RELTIME_TBL (f1) VALUES ('@ 34 year');
! INSERT INTO RELTIME_TBL (f1) VALUES ('@ 3 months');
! INSERT INTO RELTIME_TBL (f1) VALUES ('@ 14 seconds ago');
! -- badly formatted reltimes
! INSERT INTO RELTIME_TBL (f1) VALUES ('badly formatted reltime');
! ERROR: invalid input syntax for type reltime: "badly formatted reltime"
! LINE 1: INSERT INTO RELTIME_TBL (f1) VALUES ('badly formatted reltim...
! ^
! INSERT INTO RELTIME_TBL (f1) VALUES ('@ 30 eons ago');
! ERROR: invalid input syntax for type reltime: "@ 30 eons ago"
! LINE 1: INSERT INTO RELTIME_TBL (f1) VALUES ('@ 30 eons ago');
! ^
! -- test reltime operators
! SELECT '' AS six, * FROM RELTIME_TBL ORDER BY f1;
! six | f1
! -----+---------------
! | @ 14 secs ago
! | @ 1 min
! | @ 5 hours
! | @ 10 days
! | @ 3 mons
! | @ 34 years
! (6 rows)
!
! SELECT '' AS five, * FROM RELTIME_TBL
! WHERE RELTIME_TBL.f1 <> reltime '@ 10 days' ORDER BY f1;
! five | f1
! ------+---------------
! | @ 14 secs ago
! | @ 1 min
! | @ 5 hours
! | @ 3 mons
! | @ 34 years
! (5 rows)
!
! SELECT '' AS three, * FROM RELTIME_TBL
! WHERE RELTIME_TBL.f1 <= reltime '@ 5 hours' ORDER BY f1;
! three | f1
! -------+---------------
! | @ 14 secs ago
! | @ 1 min
! | @ 5 hours
! (3 rows)
!
! SELECT '' AS three, * FROM RELTIME_TBL
! WHERE RELTIME_TBL.f1 < reltime '@ 1 day' ORDER BY f1;
! three | f1
! -------+---------------
! | @ 14 secs ago
! | @ 1 min
! | @ 5 hours
! (3 rows)
!
! SELECT '' AS one, * FROM RELTIME_TBL
! WHERE RELTIME_TBL.f1 = reltime '@ 34 years' ORDER BY f1;
! one | f1
! -----+------------
! | @ 34 years
! (1 row)
!
! SELECT '' AS two, * FROM RELTIME_TBL
! WHERE RELTIME_TBL.f1 >= reltime '@ 1 month' ORDER BY f1;
! two | f1
! -----+------------
! | @ 3 mons
! | @ 34 years
! (2 rows)
!
! SELECT '' AS five, * FROM RELTIME_TBL
! WHERE RELTIME_TBL.f1 > reltime '@ 3 seconds ago' ORDER BY f1;
! five | f1
! ------+------------
! | @ 1 min
! | @ 5 hours
! | @ 10 days
! | @ 3 mons
! | @ 34 years
! (5 rows)
!
! SELECT '' AS fifteen, r1.*, r2.*
! FROM RELTIME_TBL r1, RELTIME_TBL r2
! WHERE r1.f1 > r2.f1
! ORDER BY r1.f1, r2.f1;
! fifteen | f1 | f1
! ---------+------------+---------------
! | @ 1 min | @ 14 secs ago
! | @ 5 hours | @ 14 secs ago
! | @ 5 hours | @ 1 min
! | @ 10 days | @ 14 secs ago
! | @ 10 days | @ 1 min
! | @ 10 days | @ 5 hours
! | @ 3 mons | @ 14 secs ago
! | @ 3 mons | @ 1 min
! | @ 3 mons | @ 5 hours
! | @ 3 mons | @ 10 days
! | @ 34 years | @ 14 secs ago
! | @ 34 years | @ 1 min
! | @ 34 years | @ 5 hours
! | @ 34 years | @ 10 days
! | @ 34 years | @ 3 mons
! (15 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/tinterval.out 2016-04-02 21:48:12.939674202 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/tinterval.out 2016-04-04 03:18:31.159430162 +0000
***************
*** 1,172 ****
! --
! -- TINTERVAL
! --
! CREATE TABLE TINTERVAL_TBL (f1 tinterval);
! -- Should accept any abstime,
! -- so do not bother with extensive testing of values
! INSERT INTO TINTERVAL_TBL (f1)
! VALUES ('["-infinity" "infinity"]');
! INSERT INTO TINTERVAL_TBL (f1)
! VALUES ('["May 10, 1947 23:59:12" "Jan 14, 1973 03:14:21"]');
! INSERT INTO TINTERVAL_TBL (f1)
! VALUES ('["Sep 4, 1983 23:59:12" "Oct 4, 1983 23:59:12"]');
! INSERT INTO TINTERVAL_TBL (f1)
! VALUES ('["epoch" "Mon May 1 00:30:30 1995"]');
! INSERT INTO TINTERVAL_TBL (f1)
! VALUES ('["Feb 15 1990 12:15:03" "2001-09-23 11:12:13"]');
! -- badly formatted tintervals
! INSERT INTO TINTERVAL_TBL (f1)
! VALUES ('["bad time specifications" ""]');
! ERROR: invalid input syntax for type abstime: "bad time specifications"
! LINE 2: VALUES ('["bad time specifications" ""]');
! ^
! INSERT INTO TINTERVAL_TBL (f1)
! VALUES ('["" "infinity"]');
! ERROR: invalid input syntax for type abstime: ""
! LINE 2: VALUES ('["" "infinity"]');
! ^
! -- test tinterval operators
! SELECT '' AS five, * FROM TINTERVAL_TBL ORDER BY f1;
! five | f1
! ------+-----------------------------------------------------------------
! | ["-infinity" "infinity"]
! | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
! | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
! (5 rows)
!
! -- length ==
! SELECT '' AS one, t.*
! FROM TINTERVAL_TBL t
! WHERE t.f1 #= '@ 1 months' ORDER BY f1;
! one | f1
! -----+-----------------------------------------------------------------
! | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
! (1 row)
!
! -- length <>
! SELECT '' AS three, t.*
! FROM TINTERVAL_TBL t
! WHERE t.f1 #<> '@ 1 months' ORDER BY f1;
! three | f1
! -------+-----------------------------------------------------------------
! | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
! (3 rows)
!
! -- length <
! SELECT '' AS zero, t.*
! FROM TINTERVAL_TBL t
! WHERE t.f1 #< '@ 1 month' ORDER BY f1;
! zero | f1
! ------+----
! (0 rows)
!
! -- length <=
! SELECT '' AS one, t.*
! FROM TINTERVAL_TBL t
! WHERE t.f1 #<= '@ 1 month' ORDER BY f1;
! one | f1
! -----+-----------------------------------------------------------------
! | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
! (1 row)
!
! -- length >
! SELECT '' AS three, t.*
! FROM TINTERVAL_TBL t
! WHERE t.f1 #> '@ 1 year' ORDER BY f1;
! three | f1
! -------+-----------------------------------------------------------------
! | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
! (3 rows)
!
! -- length >=
! SELECT '' AS three, t.*
! FROM TINTERVAL_TBL t
! WHERE t.f1 #>= '@ 3 years' ORDER BY f1;
! three | f1
! -------+-----------------------------------------------------------------
! | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
! (3 rows)
!
! -- overlaps
! SELECT '' AS three, t1.*
! FROM TINTERVAL_TBL t1
! WHERE t1.f1 &&
! tinterval '["Aug 15 14:23:19 1983" "Sep 16 14:23:19 1983"]' ORDER BY f1;
! three | f1
! -------+-----------------------------------------------------------------
! | ["-infinity" "infinity"]
! | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! (3 rows)
!
! SELECT '' AS five, t1.f1, t2.f1
! FROM TINTERVAL_TBL t1, TINTERVAL_TBL t2
! WHERE t1.f1 && t2.f1 and
! t1.f1 = t2.f1
! ORDER BY t1.f1, t2.f1;
! five | f1 | f1
! ------+-----------------------------------------------------------------+-----------------------------------------------------------------
! | ["-infinity" "infinity"] | ["-infinity" "infinity"]
! | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"] | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
! | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"] | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"] | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"] | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
! (5 rows)
!
! SELECT '' AS fourteen, t1.f1 AS interval1, t2.f1 AS interval2
! FROM TINTERVAL_TBL t1, TINTERVAL_TBL t2
! WHERE t1.f1 && t2.f1 and not t1.f1 = t2.f1
! ORDER BY interval1, interval2;
! fourteen | interval1 | interval2
! ----------+-----------------------------------------------------------------+-----------------------------------------------------------------
! | ["-infinity" "infinity"] | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
! | ["-infinity" "infinity"] | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
! | ["-infinity" "infinity"] | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! | ["-infinity" "infinity"] | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
! | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"] | ["-infinity" "infinity"]
! | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"] | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"] | ["-infinity" "infinity"]
! | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"] | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"] | ["-infinity" "infinity"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"] | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"] | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"] | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
! | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"] | ["-infinity" "infinity"]
! | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"] | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! (14 rows)
!
! -- contains
! SELECT '' AS five, t1.f1
! FROM TINTERVAL_TBL t1
! WHERE not t1.f1 <<
! tinterval '["Aug 15 14:23:19 1980" "Sep 16 14:23:19 1990"]'
! ORDER BY t1.f1;
! five | f1
! ------+-----------------------------------------------------------------
! | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
! | ["Thu Feb 15 12:15:03 1990 PST" "Sun Sep 23 11:12:13 2001 PDT"]
! | ["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]
! (3 rows)
!
! -- make time interval
! SELECT '' AS three, t1.f1
! FROM TINTERVAL_TBL t1
! WHERE t1.f1 &&
! (abstime 'Aug 15 14:23:19 1983' <#>
! abstime 'Sep 16 14:23:19 1983')
! ORDER BY t1.f1;
! three | f1
! -------+-----------------------------------------------------------------
! | ["-infinity" "infinity"]
! | ["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]
! | ["Wed Dec 31 16:00:00 1969 PST" "Mon May 01 00:30:30 1995 PDT"]
! (3 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/inet.out 2016-04-02 21:48:12.920035716 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/inet.out 2016-04-04 03:18:31.179397159 +0000
***************
*** 1,647 ****
! --
! -- INET
! --
! -- prepare the table...
! DROP TABLE INET_TBL;
! ERROR: table "inet_tbl" does not exist
! CREATE TABLE INET_TBL (c cidr, i inet);
! INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.226/24');
! INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.0/26', '192.168.1.226');
! INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.0/24');
! INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.0/25');
! INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.255/24');
! INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.255/25');
! INSERT INTO INET_TBL (c, i) VALUES ('10', '10.1.2.3/8');
! INSERT INTO INET_TBL (c, i) VALUES ('10.0.0.0', '10.1.2.3/8');
! INSERT INTO INET_TBL (c, i) VALUES ('10.1.2.3', '10.1.2.3/32');
! INSERT INTO INET_TBL (c, i) VALUES ('10.1.2', '10.1.2.3/24');
! INSERT INTO INET_TBL (c, i) VALUES ('10.1', '10.1.2.3/16');
! INSERT INTO INET_TBL (c, i) VALUES ('10', '10.1.2.3/8');
! INSERT INTO INET_TBL (c, i) VALUES ('10', '11.1.2.3/8');
! INSERT INTO INET_TBL (c, i) VALUES ('10', '9.1.2.3/8');
! INSERT INTO INET_TBL (c, i) VALUES ('10:23::f1', '10:23::f1/64');
! INSERT INTO INET_TBL (c, i) VALUES ('10:23::8000/113', '10:23::ffff');
! INSERT INTO INET_TBL (c, i) VALUES ('::ffff:1.2.3.4', '::4.3.2.1/24');
! -- check that CIDR rejects invalid input:
! INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.2/30', '192.168.1.226');
! ERROR: invalid cidr value: "192.168.1.2/30"
! LINE 1: INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.2/30', '192.1...
! ^
! DETAIL: Value has bits set to right of mask.
! INSERT INTO INET_TBL (c, i) VALUES ('1234::1234::1234', '::1.2.3.4');
! ERROR: invalid input syntax for type cidr: "1234::1234::1234"
! LINE 1: INSERT INTO INET_TBL (c, i) VALUES ('1234::1234::1234', '::1...
! ^
! -- check that CIDR rejects invalid input when converting from text:
! INSERT INTO INET_TBL (c, i) VALUES (cidr('192.168.1.2/30'), '192.168.1.226');
! ERROR: invalid cidr value: "192.168.1.2/30"
! LINE 1: INSERT INTO INET_TBL (c, i) VALUES (cidr('192.168.1.2/30'), ...
! ^
! DETAIL: Value has bits set to right of mask.
! INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:ffff::/24'), '::192.168.1.226');
! ERROR: invalid cidr value: "ffff:ffff:ffff:ffff::/24"
! LINE 1: INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:fff...
! ^
! DETAIL: Value has bits set to right of mask.
! SELECT '' AS ten, c AS cidr, i AS inet FROM INET_TBL ORDER BY cidr, inet;
! ten | cidr | inet
! -----+--------------------+------------------
! | 10.0.0.0/8 | 9.1.2.3/8
! | 10.0.0.0/8 | 10.1.2.3/8
! | 10.0.0.0/8 | 10.1.2.3/8
! | 10.0.0.0/8 | 11.1.2.3/8
! | 10.0.0.0/32 | 10.1.2.3/8
! | 10.1.0.0/16 | 10.1.2.3/16
! | 10.1.2.0/24 | 10.1.2.3/24
! | 10.1.2.3/32 | 10.1.2.3
! | 192.168.1.0/24 | 192.168.1.0/24
! | 192.168.1.0/24 | 192.168.1.226/24
! | 192.168.1.0/24 | 192.168.1.255/24
! | 192.168.1.0/24 | 192.168.1.0/25
! | 192.168.1.0/24 | 192.168.1.255/25
! | 192.168.1.0/26 | 192.168.1.226
! | ::ffff:1.2.3.4/128 | ::4.3.2.1/24
! | 10:23::f1/128 | 10:23::f1/64
! | 10:23::8000/113 | 10:23::ffff
! (17 rows)
!
! -- now test some support functions
! SELECT '' AS ten, i AS inet, host(i), text(i), family(i) FROM INET_TBL ORDER BY i;
! ten | inet | host | text | family
! -----+------------------+---------------+------------------+--------
! | 9.1.2.3/8 | 9.1.2.3 | 9.1.2.3/8 | 4
! | 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4
! | 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4
! | 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4
! | 10.1.2.3/16 | 10.1.2.3 | 10.1.2.3/16 | 4
! | 10.1.2.3/24 | 10.1.2.3 | 10.1.2.3/24 | 4
! | 10.1.2.3 | 10.1.2.3 | 10.1.2.3/32 | 4
! | 11.1.2.3/8 | 11.1.2.3 | 11.1.2.3/8 | 4
! | 192.168.1.0/24 | 192.168.1.0 | 192.168.1.0/24 | 4
! | 192.168.1.226/24 | 192.168.1.226 | 192.168.1.226/24 | 4
! | 192.168.1.255/24 | 192.168.1.255 | 192.168.1.255/24 | 4
! | 192.168.1.0/25 | 192.168.1.0 | 192.168.1.0/25 | 4
! | 192.168.1.255/25 | 192.168.1.255 | 192.168.1.255/25 | 4
! | 192.168.1.226 | 192.168.1.226 | 192.168.1.226/32 | 4
! | ::4.3.2.1/24 | ::4.3.2.1 | ::4.3.2.1/24 | 6
! | 10:23::f1/64 | 10:23::f1 | 10:23::f1/64 | 6
! | 10:23::ffff | 10:23::ffff | 10:23::ffff/128 | 6
! (17 rows)
!
! SELECT '' AS ten, c AS cidr, broadcast(c),
! i AS inet, broadcast(i) FROM INET_TBL ORDER BY i, c;
! ten | cidr | broadcast | inet | broadcast
! -----+--------------------+------------------+------------------+---------------------------------------
! | 10.0.0.0/8 | 10.255.255.255/8 | 9.1.2.3/8 | 9.255.255.255/8
! | 10.0.0.0/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8
! | 10.0.0.0/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8
! | 10.0.0.0/32 | 10.0.0.0 | 10.1.2.3/8 | 10.255.255.255/8
! | 10.1.0.0/16 | 10.1.255.255/16 | 10.1.2.3/16 | 10.1.255.255/16
! | 10.1.2.0/24 | 10.1.2.255/24 | 10.1.2.3/24 | 10.1.2.255/24
! | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3 | 10.1.2.3
! | 10.0.0.0/8 | 10.255.255.255/8 | 11.1.2.3/8 | 11.255.255.255/8
! | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/24 | 192.168.1.255/24
! | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.226/24 | 192.168.1.255/24
! | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.255/24 | 192.168.1.255/24
! | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/25 | 192.168.1.127/25
! | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.255/25 | 192.168.1.255/25
! | 192.168.1.0/26 | 192.168.1.63/26 | 192.168.1.226 | 192.168.1.226
! | ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4 | ::4.3.2.1/24 | 0:ff:ffff:ffff:ffff:ffff:ffff:ffff/24
! | 10:23::f1/128 | 10:23::f1 | 10:23::f1/64 | 10:23::ffff:ffff:ffff:ffff/64
! | 10:23::8000/113 | 10:23::ffff/113 | 10:23::ffff | 10:23::ffff
! (17 rows)
!
! SELECT '' AS ten, c AS cidr, network(c) AS "network(cidr)",
! i AS inet, network(i) AS "network(inet)" FROM INET_TBL ORDER BY i, c;
! ten | cidr | network(cidr) | inet | network(inet)
! -----+--------------------+--------------------+------------------+------------------
! | 10.0.0.0/8 | 10.0.0.0/8 | 9.1.2.3/8 | 9.0.0.0/8
! | 10.0.0.0/8 | 10.0.0.0/8 | 10.1.2.3/8 | 10.0.0.0/8
! | 10.0.0.0/8 | 10.0.0.0/8 | 10.1.2.3/8 | 10.0.0.0/8
! | 10.0.0.0/32 | 10.0.0.0/32 | 10.1.2.3/8 | 10.0.0.0/8
! | 10.1.0.0/16 | 10.1.0.0/16 | 10.1.2.3/16 | 10.1.0.0/16
! | 10.1.2.0/24 | 10.1.2.0/24 | 10.1.2.3/24 | 10.1.2.0/24
! | 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3/32
! | 10.0.0.0/8 | 10.0.0.0/8 | 11.1.2.3/8 | 11.0.0.0/8
! | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24
! | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.226/24 | 192.168.1.0/24
! | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/24
! | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/25 | 192.168.1.0/25
! | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.255/25 | 192.168.1.128/25
! | 192.168.1.0/26 | 192.168.1.0/26 | 192.168.1.226 | 192.168.1.226/32
! | ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4/128 | ::4.3.2.1/24 | ::/24
! | 10:23::f1/128 | 10:23::f1/128 | 10:23::f1/64 | 10:23::/64
! | 10:23::8000/113 | 10:23::8000/113 | 10:23::ffff | 10:23::ffff/128
! (17 rows)
!
! SELECT '' AS ten, c AS cidr, masklen(c) AS "masklen(cidr)",
! i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL ORDER BY i, c;
! ten | cidr | masklen(cidr) | inet | masklen(inet)
! -----+--------------------+---------------+------------------+---------------
! | 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8
! | 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
! | 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
! | 10.0.0.0/32 | 32 | 10.1.2.3/8 | 8
! | 10.1.0.0/16 | 16 | 10.1.2.3/16 | 16
! | 10.1.2.0/24 | 24 | 10.1.2.3/24 | 24
! | 10.1.2.3/32 | 32 | 10.1.2.3 | 32
! | 10.0.0.0/8 | 8 | 11.1.2.3/8 | 8
! | 192.168.1.0/24 | 24 | 192.168.1.0/24 | 24
! | 192.168.1.0/24 | 24 | 192.168.1.226/24 | 24
! | 192.168.1.0/24 | 24 | 192.168.1.255/24 | 24
! | 192.168.1.0/24 | 24 | 192.168.1.0/25 | 25
! | 192.168.1.0/24 | 24 | 192.168.1.255/25 | 25
! | 192.168.1.0/26 | 26 | 192.168.1.226 | 32
! | ::ffff:1.2.3.4/128 | 128 | ::4.3.2.1/24 | 24
! | 10:23::f1/128 | 128 | 10:23::f1/64 | 64
! | 10:23::8000/113 | 113 | 10:23::ffff | 128
! (17 rows)
!
! SELECT '' AS four, c AS cidr, masklen(c) AS "masklen(cidr)",
! i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL
! WHERE masklen(c) <= 8 ORDER BY i, c;
! four | cidr | masklen(cidr) | inet | masklen(inet)
! ------+------------+---------------+------------+---------------
! | 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8
! | 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
! | 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
! | 10.0.0.0/8 | 8 | 11.1.2.3/8 | 8
! (4 rows)
!
! SELECT '' AS six, c AS cidr, i AS inet FROM INET_TBL
! WHERE c = i ORDER BY i, c;
! six | cidr | inet
! -----+----------------+----------------
! | 10.1.2.3/32 | 10.1.2.3
! | 192.168.1.0/24 | 192.168.1.0/24
! (2 rows)
!
! SELECT '' AS ten, i, c,
! i < c AS lt, i <= c AS le, i = c AS eq,
! i >= c AS ge, i > c AS gt, i <> c AS ne,
! i << c AS sb, i <<= c AS sbe,
! i >> c AS sup, i >>= c AS spe,
! i && c AS ovr
! FROM INET_TBL ORDER BY i, c;
! ten | i | c | lt | le | eq | ge | gt | ne | sb | sbe | sup | spe | ovr
! -----+------------------+--------------------+----+----+----+----+----+----+----+-----+-----+-----+-----
! | 9.1.2.3/8 | 10.0.0.0/8 | t | t | f | f | f | t | f | f | f | f | f
! | 10.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | t | f | t | t
! | 10.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | t | f | t | t
! | 10.1.2.3/8 | 10.0.0.0/32 | t | t | f | f | f | t | f | f | t | t | t
! | 10.1.2.3/16 | 10.1.0.0/16 | f | f | f | t | t | t | f | t | f | t | t
! | 10.1.2.3/24 | 10.1.2.0/24 | f | f | f | t | t | t | f | t | f | t | t
! | 10.1.2.3 | 10.1.2.3/32 | f | t | t | t | f | f | f | t | f | t | t
! | 11.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | f | f | f | f
! | 192.168.1.0/24 | 192.168.1.0/24 | f | t | t | t | f | f | f | t | f | t | t
! | 192.168.1.226/24 | 192.168.1.0/24 | f | f | f | t | t | t | f | t | f | t | t
! | 192.168.1.255/24 | 192.168.1.0/24 | f | f | f | t | t | t | f | t | f | t | t
! | 192.168.1.0/25 | 192.168.1.0/24 | f | f | f | t | t | t | t | t | f | f | t
! | 192.168.1.255/25 | 192.168.1.0/24 | f | f | f | t | t | t | t | t | f | f | t
! | 192.168.1.226 | 192.168.1.0/26 | f | f | f | t | t | t | f | f | f | f | f
! | ::4.3.2.1/24 | ::ffff:1.2.3.4/128 | t | t | f | f | f | t | f | f | t | t | t
! | 10:23::f1/64 | 10:23::f1/128 | t | t | f | f | f | t | f | f | t | t | t
! | 10:23::ffff | 10:23::8000/113 | f | f | f | t | t | t | t | t | f | f | t
! (17 rows)
!
! SELECT max(i) AS max, min(i) AS min FROM INET_TBL;
! max | min
! -------------+-----------
! 10:23::ffff | 9.1.2.3/8
! (1 row)
!
! SELECT max(c) AS max, min(c) AS min FROM INET_TBL;
! max | min
! -----------------+------------
! 10:23::8000/113 | 10.0.0.0/8
! (1 row)
!
! -- check the conversion to/from text and set_netmask
! SELECT '' AS ten, set_masklen(inet(text(i)), 24) FROM INET_TBL;
! ten | set_masklen
! -----+------------------
! | 192.168.1.226/24
! | 192.168.1.226/24
! | 192.168.1.0/24
! | 192.168.1.0/24
! | 192.168.1.255/24
! | 192.168.1.255/24
! | 10.1.2.3/24
! | 10.1.2.3/24
! | 10.1.2.3/24
! | 10.1.2.3/24
! | 10.1.2.3/24
! | 10.1.2.3/24
! | 11.1.2.3/24
! | 9.1.2.3/24
! | 10:23::f1/24
! | 10:23::ffff/24
! | ::4.3.2.1/24
! (17 rows)
!
! -- check that btree index works correctly
! CREATE INDEX inet_idx1 ON inet_tbl(i);
! SET enable_seqscan TO off;
! SELECT * FROM inet_tbl WHERE i<<'192.168.1.0/24'::cidr ORDER BY i, c;
! c | i
! ----------------+------------------
! 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.0/24 | 192.168.1.255/25
! 192.168.1.0/26 | 192.168.1.226
! (3 rows)
!
! SELECT * FROM inet_tbl WHERE i<<='192.168.1.0/24'::cidr ORDER BY i;
! c | i
! ----------------+------------------
! 192.168.1.0/24 | 192.168.1.0/24
! 192.168.1.0/24 | 192.168.1.226/24
! 192.168.1.0/24 | 192.168.1.255/24
! 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.0/24 | 192.168.1.255/25
! 192.168.1.0/26 | 192.168.1.226
! (6 rows)
!
! SET enable_seqscan TO on;
! DROP INDEX inet_idx1;
! -- check that gist index works correctly
! CREATE INDEX inet_idx2 ON inet_tbl using gist (i inet_ops);
! SET enable_seqscan TO off;
! SELECT * FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! ----------------+------------------
! 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.0/24 | 192.168.1.255/25
! 192.168.1.0/26 | 192.168.1.226
! (3 rows)
!
! SELECT * FROM inet_tbl WHERE i <<= '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! ----------------+------------------
! 192.168.1.0/24 | 192.168.1.0/24
! 192.168.1.0/24 | 192.168.1.226/24
! 192.168.1.0/24 | 192.168.1.255/24
! 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.0/24 | 192.168.1.255/25
! 192.168.1.0/26 | 192.168.1.226
! (6 rows)
!
! SELECT * FROM inet_tbl WHERE i && '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! ----------------+------------------
! 192.168.1.0/24 | 192.168.1.0/24
! 192.168.1.0/24 | 192.168.1.226/24
! 192.168.1.0/24 | 192.168.1.255/24
! 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.0/24 | 192.168.1.255/25
! 192.168.1.0/26 | 192.168.1.226
! (6 rows)
!
! SELECT * FROM inet_tbl WHERE i >>= '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! ----------------+------------------
! 192.168.1.0/24 | 192.168.1.0/24
! 192.168.1.0/24 | 192.168.1.226/24
! 192.168.1.0/24 | 192.168.1.255/24
! (3 rows)
!
! SELECT * FROM inet_tbl WHERE i >> '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! ---+---
! (0 rows)
!
! SELECT * FROM inet_tbl WHERE i < '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! -------------+-------------
! 10.0.0.0/8 | 9.1.2.3/8
! 10.0.0.0/32 | 10.1.2.3/8
! 10.0.0.0/8 | 10.1.2.3/8
! 10.0.0.0/8 | 10.1.2.3/8
! 10.1.0.0/16 | 10.1.2.3/16
! 10.1.2.0/24 | 10.1.2.3/24
! 10.1.2.3/32 | 10.1.2.3
! 10.0.0.0/8 | 11.1.2.3/8
! (8 rows)
!
! SELECT * FROM inet_tbl WHERE i <= '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! ----------------+----------------
! 10.0.0.0/8 | 9.1.2.3/8
! 10.0.0.0/8 | 10.1.2.3/8
! 10.0.0.0/32 | 10.1.2.3/8
! 10.0.0.0/8 | 10.1.2.3/8
! 10.1.0.0/16 | 10.1.2.3/16
! 10.1.2.0/24 | 10.1.2.3/24
! 10.1.2.3/32 | 10.1.2.3
! 10.0.0.0/8 | 11.1.2.3/8
! 192.168.1.0/24 | 192.168.1.0/24
! (9 rows)
!
! SELECT * FROM inet_tbl WHERE i = '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! ----------------+----------------
! 192.168.1.0/24 | 192.168.1.0/24
! (1 row)
!
! SELECT * FROM inet_tbl WHERE i >= '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! --------------------+------------------
! 192.168.1.0/24 | 192.168.1.0/24
! 192.168.1.0/24 | 192.168.1.226/24
! 192.168.1.0/24 | 192.168.1.255/24
! 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.0/24 | 192.168.1.255/25
! 192.168.1.0/26 | 192.168.1.226
! ::ffff:1.2.3.4/128 | ::4.3.2.1/24
! 10:23::f1/128 | 10:23::f1/64
! 10:23::8000/113 | 10:23::ffff
! (9 rows)
!
! SELECT * FROM inet_tbl WHERE i > '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! --------------------+------------------
! 192.168.1.0/24 | 192.168.1.226/24
! 192.168.1.0/24 | 192.168.1.255/24
! 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.0/24 | 192.168.1.255/25
! 192.168.1.0/26 | 192.168.1.226
! ::ffff:1.2.3.4/128 | ::4.3.2.1/24
! 10:23::f1/128 | 10:23::f1/64
! 10:23::8000/113 | 10:23::ffff
! (8 rows)
!
! SELECT * FROM inet_tbl WHERE i <> '192.168.1.0/24'::cidr ORDER BY i;
! c | i
! --------------------+------------------
! 10.0.0.0/8 | 9.1.2.3/8
! 10.0.0.0/8 | 10.1.2.3/8
! 10.0.0.0/32 | 10.1.2.3/8
! 10.0.0.0/8 | 10.1.2.3/8
! 10.1.0.0/16 | 10.1.2.3/16
! 10.1.2.0/24 | 10.1.2.3/24
! 10.1.2.3/32 | 10.1.2.3
! 10.0.0.0/8 | 11.1.2.3/8
! 192.168.1.0/24 | 192.168.1.226/24
! 192.168.1.0/24 | 192.168.1.255/24
! 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.0/24 | 192.168.1.255/25
! 192.168.1.0/26 | 192.168.1.226
! ::ffff:1.2.3.4/128 | ::4.3.2.1/24
! 10:23::f1/128 | 10:23::f1/64
! 10:23::8000/113 | 10:23::ffff
! (16 rows)
!
! -- test index-only scans
! EXPLAIN (COSTS OFF)
! SELECT i FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDER BY i;
! QUERY PLAN
! ---------------------------------------------------------------
! Remote Subquery Scan on all (datanode_1,datanode_2)
! -> Sort
! Sort Key: i
! -> Bitmap Heap Scan on inet_tbl
! Recheck Cond: (i << '192.168.1.0/24'::inet)
! -> Bitmap Index Scan on inet_idx2
! Index Cond: (i << '192.168.1.0/24'::inet)
! (7 rows)
!
! SELECT i FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDER BY i;
! i
! ------------------
! 192.168.1.0/25
! 192.168.1.255/25
! 192.168.1.226
! (3 rows)
!
! SET enable_seqscan TO on;
! DROP INDEX inet_idx2;
! -- simple tests of inet boolean and arithmetic operators
! SELECT i, ~i AS "~i" FROM inet_tbl ORDER BY i;
! i | ~i
! ------------------+--------------------------------------------
! 9.1.2.3/8 | 246.254.253.252/8
! 10.1.2.3/8 | 245.254.253.252/8
! 10.1.2.3/8 | 245.254.253.252/8
! 10.1.2.3/8 | 245.254.253.252/8
! 10.1.2.3/16 | 245.254.253.252/16
! 10.1.2.3/24 | 245.254.253.252/24
! 10.1.2.3 | 245.254.253.252
! 11.1.2.3/8 | 244.254.253.252/8
! 192.168.1.0/24 | 63.87.254.255/24
! 192.168.1.226/24 | 63.87.254.29/24
! 192.168.1.255/24 | 63.87.254.0/24
! 192.168.1.0/25 | 63.87.254.255/25
! 192.168.1.255/25 | 63.87.254.0/25
! 192.168.1.226 | 63.87.254.29
! ::4.3.2.1/24 | ffff:ffff:ffff:ffff:ffff:ffff:fbfc:fdfe/24
! 10:23::f1/64 | ffef:ffdc:ffff:ffff:ffff:ffff:ffff:ff0e/64
! 10:23::ffff | ffef:ffdc:ffff:ffff:ffff:ffff:ffff:0
! (17 rows)
!
! SELECT i, c, i & c AS "and" FROM inet_tbl ORDER BY i, c;
! i | c | and
! ------------------+--------------------+----------------
! 9.1.2.3/8 | 10.0.0.0/8 | 8.0.0.0/8
! 10.1.2.3/8 | 10.0.0.0/8 | 10.0.0.0/8
! 10.1.2.3/8 | 10.0.0.0/8 | 10.0.0.0/8
! 10.1.2.3/8 | 10.0.0.0/32 | 10.0.0.0
! 10.1.2.3/16 | 10.1.0.0/16 | 10.1.0.0/16
! 10.1.2.3/24 | 10.1.2.0/24 | 10.1.2.0/24
! 10.1.2.3 | 10.1.2.3/32 | 10.1.2.3
! 11.1.2.3/8 | 10.0.0.0/8 | 10.0.0.0/8
! 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24
! 192.168.1.226/24 | 192.168.1.0/24 | 192.168.1.0/24
! 192.168.1.255/24 | 192.168.1.0/24 | 192.168.1.0/24
! 192.168.1.0/25 | 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.255/25 | 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.226 | 192.168.1.0/26 | 192.168.1.0
! ::4.3.2.1/24 | ::ffff:1.2.3.4/128 | ::0.2.2.0
! 10:23::f1/64 | 10:23::f1/128 | 10:23::f1
! 10:23::ffff | 10:23::8000/113 | 10:23::8000
! (17 rows)
!
! SELECT i, c, i | c AS "or" FROM inet_tbl ORDER BY i, c;
! i | c | or
! ------------------+--------------------+------------------
! 9.1.2.3/8 | 10.0.0.0/8 | 11.1.2.3/8
! 10.1.2.3/8 | 10.0.0.0/8 | 10.1.2.3/8
! 10.1.2.3/8 | 10.0.0.0/8 | 10.1.2.3/8
! 10.1.2.3/8 | 10.0.0.0/32 | 10.1.2.3
! 10.1.2.3/16 | 10.1.0.0/16 | 10.1.2.3/16
! 10.1.2.3/24 | 10.1.2.0/24 | 10.1.2.3/24
! 10.1.2.3 | 10.1.2.3/32 | 10.1.2.3
! 11.1.2.3/8 | 10.0.0.0/8 | 11.1.2.3/8
! 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24
! 192.168.1.226/24 | 192.168.1.0/24 | 192.168.1.226/24
! 192.168.1.255/24 | 192.168.1.0/24 | 192.168.1.255/24
! 192.168.1.0/25 | 192.168.1.0/24 | 192.168.1.0/25
! 192.168.1.255/25 | 192.168.1.0/24 | 192.168.1.255/25
! 192.168.1.226 | 192.168.1.0/26 | 192.168.1.226
! ::4.3.2.1/24 | ::ffff:1.2.3.4/128 | ::ffff:5.3.3.5
! 10:23::f1/64 | 10:23::f1/128 | 10:23::f1
! 10:23::ffff | 10:23::8000/113 | 10:23::ffff
! (17 rows)
!
! SELECT i, i + 500 AS "i+500" FROM inet_tbl ORDER BY i;
! i | i+500
! ------------------+------------------
! 9.1.2.3/8 | 9.1.3.247/8
! 10.1.2.3/8 | 10.1.3.247/8
! 10.1.2.3/8 | 10.1.3.247/8
! 10.1.2.3/8 | 10.1.3.247/8
! 10.1.2.3/16 | 10.1.3.247/16
! 10.1.2.3/24 | 10.1.3.247/24
! 10.1.2.3 | 10.1.3.247
! 11.1.2.3/8 | 11.1.3.247/8
! 192.168.1.0/24 | 192.168.2.244/24
! 192.168.1.226/24 | 192.168.3.214/24
! 192.168.1.255/24 | 192.168.3.243/24
! 192.168.1.0/25 | 192.168.2.244/25
! 192.168.1.255/25 | 192.168.3.243/25
! 192.168.1.226 | 192.168.3.214
! ::4.3.2.1/24 | ::4.3.3.245/24
! 10:23::f1/64 | 10:23::2e5/64
! 10:23::ffff | 10:23::1:1f3
! (17 rows)
!
! SELECT i, i - 500 AS "i-500" FROM inet_tbl ORDER BY i;
! i | i-500
! ------------------+----------------------------------------
! 9.1.2.3/8 | 9.1.0.15/8
! 10.1.2.3/8 | 10.1.0.15/8
! 10.1.2.3/8 | 10.1.0.15/8
! 10.1.2.3/8 | 10.1.0.15/8
! 10.1.2.3/16 | 10.1.0.15/16
! 10.1.2.3/24 | 10.1.0.15/24
! 10.1.2.3 | 10.1.0.15
! 11.1.2.3/8 | 11.1.0.15/8
! 192.168.1.0/24 | 192.167.255.12/24
! 192.168.1.226/24 | 192.167.255.238/24
! 192.168.1.255/24 | 192.168.0.11/24
! 192.168.1.0/25 | 192.167.255.12/25
! 192.168.1.255/25 | 192.168.0.11/25
! 192.168.1.226 | 192.167.255.238
! ::4.3.2.1/24 | ::4.3.0.13/24
! 10:23::f1/64 | 10:22:ffff:ffff:ffff:ffff:ffff:fefd/64
! 10:23::ffff | 10:23::fe0b
! (17 rows)
!
! SELECT i, c, i - c AS "minus" FROM inet_tbl ORDER BY i, c;
! i | c | minus
! ------------------+--------------------+------------------
! 9.1.2.3/8 | 10.0.0.0/8 | -16711165
! 10.1.2.3/8 | 10.0.0.0/8 | 66051
! 10.1.2.3/8 | 10.0.0.0/8 | 66051
! 10.1.2.3/8 | 10.0.0.0/32 | 66051
! 10.1.2.3/16 | 10.1.0.0/16 | 515
! 10.1.2.3/24 | 10.1.2.0/24 | 3
! 10.1.2.3 | 10.1.2.3/32 | 0
! 11.1.2.3/8 | 10.0.0.0/8 | 16843267
! 192.168.1.0/24 | 192.168.1.0/24 | 0
! 192.168.1.226/24 | 192.168.1.0/24 | 226
! 192.168.1.255/24 | 192.168.1.0/24 | 255
! 192.168.1.0/25 | 192.168.1.0/24 | 0
! 192.168.1.255/25 | 192.168.1.0/24 | 255
! 192.168.1.226 | 192.168.1.0/26 | 226
! ::4.3.2.1/24 | ::ffff:1.2.3.4/128 | -281470631346435
! 10:23::f1/64 | 10:23::f1/128 | 0
! 10:23::ffff | 10:23::8000/113 | 32767
! (17 rows)
!
! SELECT '127.0.0.1'::inet + 257;
! ?column?
! -----------
! 127.0.1.2
! (1 row)
!
! SELECT ('127.0.0.1'::inet + 257) - 257;
! ?column?
! -----------
! 127.0.0.1
! (1 row)
!
! SELECT '127::1'::inet + 257;
! ?column?
! ----------
! 127::102
! (1 row)
!
! SELECT ('127::1'::inet + 257) - 257;
! ?column?
! ----------
! 127::1
! (1 row)
!
! SELECT '127.0.0.2'::inet - ('127.0.0.2'::inet + 500);
! ?column?
! ----------
! -500
! (1 row)
!
! SELECT '127.0.0.2'::inet - ('127.0.0.2'::inet - 500);
! ?column?
! ----------
! 500
! (1 row)
!
! SELECT '127::2'::inet - ('127::2'::inet + 500);
! ?column?
! ----------
! -500
! (1 row)
!
! SELECT '127::2'::inet - ('127::2'::inet - 500);
! ?column?
! ----------
! 500
! (1 row)
!
! -- these should give overflow errors:
! SELECT '127.0.0.1'::inet + 10000000000;
! ERROR: result is out of range
! SELECT '127.0.0.1'::inet - 10000000000;
! ERROR: result is out of range
! SELECT '126::1'::inet - '127::2'::inet;
! ERROR: result is out of range
! SELECT '127::1'::inet - '126::2'::inet;
! ERROR: result is out of range
! -- but not these
! SELECT '127::1'::inet + 10000000000;
! ?column?
! ------------------
! 127::2:540b:e401
! (1 row)
!
! SELECT '127::1'::inet - '127::2'::inet;
! ?column?
! ----------
! -1
! (1 row)
!
! -- insert one more row with addressed from different families
! INSERT INTO INET_TBL (c, i) VALUES ('10', '10::/8');
! -- now, this one should fail
! SELECT inet_merge(c, i) FROM INET_TBL;
! ERROR: cannot merge addresses from different families
! -- fix it by inet_same_family() condition
! SELECT inet_merge(c, i) FROM INET_TBL WHERE inet_same_family(c, i);
! inet_merge
! -----------------
! 192.168.1.0/24
! 192.168.1.0/24
! 192.168.1.0/24
! 192.168.1.0/24
! 192.168.1.0/24
! 192.168.1.0/24
! 10.0.0.0/8
! 10.0.0.0/8
! 10.1.2.3/32
! 10.1.2.0/24
! 10.1.0.0/16
! 10.0.0.0/8
! 10.0.0.0/7
! 8.0.0.0/6
! 10:23::/64
! 10:23::8000/113
! ::/24
! (17 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/macaddr.out 2016-04-02 21:48:12.923359620 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/macaddr.out 2016-04-04 03:18:31.199788674 +0000
***************
*** 1,161 ****
! --
! -- macaddr
! --
! CREATE TABLE macaddr_data (a int, b macaddr);
! INSERT INTO macaddr_data VALUES (1, '08:00:2b:01:02:03');
! INSERT INTO macaddr_data VALUES (2, '08-00-2b-01-02-03');
! INSERT INTO macaddr_data VALUES (3, '08002b:010203');
! INSERT INTO macaddr_data VALUES (4, '08002b-010203');
! INSERT INTO macaddr_data VALUES (5, '0800.2b01.0203');
! INSERT INTO macaddr_data VALUES (6, '0800-2b01-0203');
! INSERT INTO macaddr_data VALUES (7, '08002b010203');
! INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203'); -- invalid
! ERROR: invalid input syntax for type macaddr: "0800:2b01:0203"
! LINE 1: INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203');
! ^
! INSERT INTO macaddr_data VALUES (9, 'not even close'); -- invalid
! ERROR: invalid input syntax for type macaddr: "not even close"
! LINE 1: INSERT INTO macaddr_data VALUES (9, 'not even close');
! ^
! INSERT INTO macaddr_data VALUES (10, '08:00:2b:01:02:04');
! INSERT INTO macaddr_data VALUES (11, '08:00:2b:01:02:02');
! INSERT INTO macaddr_data VALUES (12, '08:00:2a:01:02:03');
! INSERT INTO macaddr_data VALUES (13, '08:00:2c:01:02:03');
! INSERT INTO macaddr_data VALUES (14, '08:00:2a:01:02:04');
! SELECT * FROM macaddr_data ORDER BY a;
! a | b
! ----+-------------------
! 1 | 08:00:2b:01:02:03
! 2 | 08:00:2b:01:02:03
! 3 | 08:00:2b:01:02:03
! 4 | 08:00:2b:01:02:03
! 5 | 08:00:2b:01:02:03
! 6 | 08:00:2b:01:02:03
! 7 | 08:00:2b:01:02:03
! 10 | 08:00:2b:01:02:04
! 11 | 08:00:2b:01:02:02
! 12 | 08:00:2a:01:02:03
! 13 | 08:00:2c:01:02:03
! 14 | 08:00:2a:01:02:04
! (12 rows)
!
! CREATE INDEX macaddr_data_btree ON macaddr_data USING btree (b);
! CREATE INDEX macaddr_data_hash ON macaddr_data USING hash (b);
! WARNING: hash indexes are not WAL-logged and their use is discouraged
! SELECT a, b, trunc(b) FROM macaddr_data ORDER BY 2, 1;
! a | b | trunc
! ----+-------------------+-------------------
! 12 | 08:00:2a:01:02:03 | 08:00:2a:00:00:00
! 14 | 08:00:2a:01:02:04 | 08:00:2a:00:00:00
! 11 | 08:00:2b:01:02:02 | 08:00:2b:00:00:00
! 1 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
! 2 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
! 3 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
! 4 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
! 5 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
! 6 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
! 7 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
! 10 | 08:00:2b:01:02:04 | 08:00:2b:00:00:00
! 13 | 08:00:2c:01:02:03 | 08:00:2c:00:00:00
! (12 rows)
!
! SELECT b < '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT b > '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT b > '08:00:2b:01:02:03' FROM macaddr_data WHERE a = 1; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT b <= '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT b >= '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT b = '08:00:2b:01:02:03' FROM macaddr_data WHERE a = 1; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT b <> '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true
! ?column?
! ----------
! t
! (1 row)
!
! SELECT b <> '08:00:2b:01:02:03' FROM macaddr_data WHERE a = 1; -- false
! ?column?
! ----------
! f
! (1 row)
!
! SELECT ~b FROM macaddr_data ORDER BY 1;
! ?column?
! -------------------
! f7:ff:d3:fe:fd:fc
! f7:ff:d4:fe:fd:fb
! f7:ff:d4:fe:fd:fc
! f7:ff:d4:fe:fd:fc
! f7:ff:d4:fe:fd:fc
! f7:ff:d4:fe:fd:fc
! f7:ff:d4:fe:fd:fc
! f7:ff:d4:fe:fd:fc
! f7:ff:d4:fe:fd:fc
! f7:ff:d4:fe:fd:fd
! f7:ff:d5:fe:fd:fb
! f7:ff:d5:fe:fd:fc
! (12 rows)
!
! SELECT b & '00:00:00:ff:ff:ff' FROM macaddr_data ORDER BY 1;
! ?column?
! -------------------
! 00:00:00:01:02:02
! 00:00:00:01:02:03
! 00:00:00:01:02:03
! 00:00:00:01:02:03
! 00:00:00:01:02:03
! 00:00:00:01:02:03
! 00:00:00:01:02:03
! 00:00:00:01:02:03
! 00:00:00:01:02:03
! 00:00:00:01:02:03
! 00:00:00:01:02:04
! 00:00:00:01:02:04
! (12 rows)
!
! SELECT b | '01:02:03:04:05:06' FROM macaddr_data ORDER BY 1;
! ?column?
! -------------------
! 09:02:2b:05:07:06
! 09:02:2b:05:07:06
! 09:02:2b:05:07:06
! 09:02:2b:05:07:07
! 09:02:2b:05:07:07
! 09:02:2b:05:07:07
! 09:02:2b:05:07:07
! 09:02:2b:05:07:07
! 09:02:2b:05:07:07
! 09:02:2b:05:07:07
! 09:02:2b:05:07:07
! 09:02:2f:05:07:07
! (12 rows)
!
! DROP TABLE macaddr_data;
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/tstypes.out 2016-04-02 21:48:12.941127049 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/tstypes.out 2016-04-04 03:18:31.219730190 +0000
***************
*** 1,627 ****
! --Base tsvector test
! SELECT '1'::tsvector;
! tsvector
! ----------
! '1'
! (1 row)
!
! SELECT '1 '::tsvector;
! tsvector
! ----------
! '1'
! (1 row)
!
! SELECT ' 1'::tsvector;
! tsvector
! ----------
! '1'
! (1 row)
!
! SELECT ' 1 '::tsvector;
! tsvector
! ----------
! '1'
! (1 row)
!
! SELECT '1 2'::tsvector;
! tsvector
! ----------
! '1' '2'
! (1 row)
!
! SELECT '''1 2'''::tsvector;
! tsvector
! ----------
! '1 2'
! (1 row)
!
! SELECT E'''1 \\''2'''::tsvector;
! tsvector
! ----------
! '1 ''2'
! (1 row)
!
! SELECT E'''1 \\''2''3'::tsvector;
! tsvector
! -------------
! '1 ''2' '3'
! (1 row)
!
! SELECT E'''1 \\''2'' 3'::tsvector;
! tsvector
! -------------
! '1 ''2' '3'
! (1 row)
!
! SELECT E'''1 \\''2'' '' 3'' 4 '::tsvector;
! tsvector
! ------------------
! ' 3' '1 ''2' '4'
! (1 row)
!
! SELECT $$'\\as' ab\c ab\\c AB\\\c ab\\\\c$$::tsvector;
! tsvector
! ----------------------------------------
! 'AB\\c' '\\as' 'ab\\\\c' 'ab\\c' 'abc'
! (1 row)
!
! SELECT tsvectorin(tsvectorout($$'\\as' ab\c ab\\c AB\\\c ab\\\\c$$::tsvector));
! tsvectorin
! ----------------------------------------
! 'AB\\c' '\\as' 'ab\\\\c' 'ab\\c' 'abc'
! (1 row)
!
! SELECT '''w'':4A,3B,2C,1D,5 a:8';
! ?column?
! -----------------------
! 'w':4A,3B,2C,1D,5 a:8
! (1 row)
!
! SELECT 'a:3A b:2a'::tsvector || 'ba:1234 a:1B';
! ?column?
! ----------------------------
! 'a':3A,4B 'b':2A 'ba':1237
! (1 row)
!
! SELECT setweight('w:12B w:13* w:12,5,6 a:1,3* a:3 w asd:1dc asd zxc:81,567,222A'::tsvector, 'c');
! setweight
! ----------------------------------------------------------
! 'a':1C,3C 'asd':1C 'w':5C,6C,12C,13C 'zxc':81C,222C,567C
! (1 row)
!
! SELECT strip('w:12B w:13* w:12,5,6 a:1,3* a:3 w asd:1dc asd'::tsvector);
! strip
! ---------------
! 'a' 'asd' 'w'
! (1 row)
!
! --Base tsquery test
! SELECT '1'::tsquery;
! tsquery
! ---------
! '1'
! (1 row)
!
! SELECT '1 '::tsquery;
! tsquery
! ---------
! '1'
! (1 row)
!
! SELECT ' 1'::tsquery;
! tsquery
! ---------
! '1'
! (1 row)
!
! SELECT ' 1 '::tsquery;
! tsquery
! ---------
! '1'
! (1 row)
!
! SELECT '''1 2'''::tsquery;
! tsquery
! ---------
! '1 2'
! (1 row)
!
! SELECT E'''1 \\''2'''::tsquery;
! tsquery
! ---------
! '1 ''2'
! (1 row)
!
! SELECT '!1'::tsquery;
! tsquery
! ---------
! !'1'
! (1 row)
!
! SELECT '1|2'::tsquery;
! tsquery
! -----------
! '1' | '2'
! (1 row)
!
! SELECT '1|!2'::tsquery;
! tsquery
! ------------
! '1' | !'2'
! (1 row)
!
! SELECT '!1|2'::tsquery;
! tsquery
! ------------
! !'1' | '2'
! (1 row)
!
! SELECT '!1|!2'::tsquery;
! tsquery
! -------------
! !'1' | !'2'
! (1 row)
!
! SELECT '!(!1|!2)'::tsquery;
! tsquery
! ------------------
! !( !'1' | !'2' )
! (1 row)
!
! SELECT '!(!1|2)'::tsquery;
! tsquery
! -----------------
! !( !'1' | '2' )
! (1 row)
!
! SELECT '!(1|!2)'::tsquery;
! tsquery
! -----------------
! !( '1' | !'2' )
! (1 row)
!
! SELECT '!(1|2)'::tsquery;
! tsquery
! ----------------
! !( '1' | '2' )
! (1 row)
!
! SELECT '1&2'::tsquery;
! tsquery
! -----------
! '1' & '2'
! (1 row)
!
! SELECT '!1&2'::tsquery;
! tsquery
! ------------
! !'1' & '2'
! (1 row)
!
! SELECT '1&!2'::tsquery;
! tsquery
! ------------
! '1' & !'2'
! (1 row)
!
! SELECT '!1&!2'::tsquery;
! tsquery
! -------------
! !'1' & !'2'
! (1 row)
!
! SELECT '(1&2)'::tsquery;
! tsquery
! -----------
! '1' & '2'
! (1 row)
!
! SELECT '1&(2)'::tsquery;
! tsquery
! -----------
! '1' & '2'
! (1 row)
!
! SELECT '!(1)&2'::tsquery;
! tsquery
! ------------
! !'1' & '2'
! (1 row)
!
! SELECT '!(1&2)'::tsquery;
! tsquery
! ----------------
! !( '1' & '2' )
! (1 row)
!
! SELECT '1|2&3'::tsquery;
! tsquery
! -----------------
! '1' | '2' & '3'
! (1 row)
!
! SELECT '1|(2&3)'::tsquery;
! tsquery
! -----------------
! '1' | '2' & '3'
! (1 row)
!
! SELECT '(1|2)&3'::tsquery;
! tsquery
! ---------------------
! ( '1' | '2' ) & '3'
! (1 row)
!
! SELECT '1|2&!3'::tsquery;
! tsquery
! ------------------
! '1' | '2' & !'3'
! (1 row)
!
! SELECT '1|!2&3'::tsquery;
! tsquery
! ------------------
! '1' | !'2' & '3'
! (1 row)
!
! SELECT '!1|2&3'::tsquery;
! tsquery
! ------------------
! !'1' | '2' & '3'
! (1 row)
!
! SELECT '!1|(2&3)'::tsquery;
! tsquery
! ------------------
! !'1' | '2' & '3'
! (1 row)
!
! SELECT '!(1|2)&3'::tsquery;
! tsquery
! ----------------------
! !( '1' | '2' ) & '3'
! (1 row)
!
! SELECT '(!1|2)&3'::tsquery;
! tsquery
! ----------------------
! ( !'1' | '2' ) & '3'
! (1 row)
!
! SELECT '1|(2|(4|(5|6)))'::tsquery;
! tsquery
! -----------------------------------------
! '1' | ( '2' | ( '4' | ( '5' | '6' ) ) )
! (1 row)
!
! SELECT '1|2|4|5|6'::tsquery;
! tsquery
! -----------------------------------------
! ( ( ( '1' | '2' ) | '4' ) | '5' ) | '6'
! (1 row)
!
! SELECT '1&(2&(4&(5&6)))'::tsquery;
! tsquery
! -----------------------------
! '1' & '2' & '4' & '5' & '6'
! (1 row)
!
! SELECT '1&2&4&5&6'::tsquery;
! tsquery
! -----------------------------
! '1' & '2' & '4' & '5' & '6'
! (1 row)
!
! SELECT '1&(2&(4&(5|6)))'::tsquery;
! tsquery
! ---------------------------------
! '1' & '2' & '4' & ( '5' | '6' )
! (1 row)
!
! SELECT '1&(2&(4&(5|!6)))'::tsquery;
! tsquery
! ----------------------------------
! '1' & '2' & '4' & ( '5' | !'6' )
! (1 row)
!
! SELECT E'1&(''2''&('' 4''&(\\|5 | ''6 \\'' !|&'')))'::tsquery;
! tsquery
! ------------------------------------------
! '1' & '2' & ' 4' & ( '|5' | '6 '' !|&' )
! (1 row)
!
! SELECT $$'\\as'$$::tsquery;
! tsquery
! ---------
! '\\as'
! (1 row)
!
! SELECT 'a:* & nbb:*ac | doo:a* | goo'::tsquery;
! tsquery
! ------------------------------------------
! ( 'a':* & 'nbb':*AC | 'doo':*A ) | 'goo'
! (1 row)
!
! SELECT 'a' < 'b & c'::tsquery as "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'a' > 'b & c'::tsquery as "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'a | f' < 'b & c'::tsquery as "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'a | ff' < 'b & c'::tsquery as "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'a | f | g' < 'b & c'::tsquery as "false";
! false
! -------
! f
! (1 row)
!
! SELECT numnode( 'new'::tsquery );
! numnode
! ---------
! 1
! (1 row)
!
! SELECT numnode( 'new & york'::tsquery );
! numnode
! ---------
! 3
! (1 row)
!
! SELECT numnode( 'new & york | qwery'::tsquery );
! numnode
! ---------
! 5
! (1 row)
!
! SELECT 'foo & bar'::tsquery && 'asd';
! ?column?
! -----------------------
! 'foo' & 'bar' & 'asd'
! (1 row)
!
! SELECT 'foo & bar'::tsquery || 'asd & fg';
! ?column?
! ------------------------------
! 'foo' & 'bar' | 'asd' & 'fg'
! (1 row)
!
! SELECT 'foo & bar'::tsquery || !!'asd & fg'::tsquery;
! ?column?
! -----------------------------------
! 'foo' & 'bar' | !( 'asd' & 'fg' )
! (1 row)
!
! SELECT 'foo & bar'::tsquery && 'asd | fg';
! ?column?
! ----------------------------------
! 'foo' & 'bar' & ( 'asd' | 'fg' )
! (1 row)
!
! -- tsvector-tsquery operations
! SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca' as "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:B' as "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:A' as "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:C' as "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:CB' as "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & c:*C' as "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & c:*CB' as "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'a b:89 ca:23A,64b cb:80c d:34c'::tsvector @@ 'd:AC & c:*C' as "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'a b:89 ca:23A,64c cb:80b d:34c'::tsvector @@ 'd:AC & c:*C' as "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'a b:89 ca:23A,64c cb:80b d:34c'::tsvector @@ 'd:AC & c:*B' as "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'supernova'::tsvector @@ 'super'::tsquery AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'supeanova supernova'::tsvector @@ 'super'::tsquery AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'supeznova supernova'::tsvector @@ 'super'::tsquery AS "false";
! false
! -------
! f
! (1 row)
!
! SELECT 'supernova'::tsvector @@ 'super:*'::tsquery AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'supeanova supernova'::tsvector @@ 'super:*'::tsquery AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT 'supeznova supernova'::tsvector @@ 'super:*'::tsquery AS "true";
! true
! ------
! t
! (1 row)
!
! SELECT ts_rank(' a:1 s:2C d g'::tsvector, 'a | s');
! ts_rank
! -----------
! 0.0911891
! (1 row)
!
! SELECT ts_rank(' a:1 sa:2C d g'::tsvector, 'a | s');
! ts_rank
! -----------
! 0.0303964
! (1 row)
!
! SELECT ts_rank(' a:1 sa:2C d g'::tsvector, 'a | s:*');
! ts_rank
! -----------
! 0.0911891
! (1 row)
!
! SELECT ts_rank(' a:1 sa:2C d g'::tsvector, 'a | sa:*');
! ts_rank
! -----------
! 0.0911891
! (1 row)
!
! SELECT ts_rank(' a:1 s:2B d g'::tsvector, 'a | s');
! ts_rank
! ----------
! 0.151982
! (1 row)
!
! SELECT ts_rank(' a:1 s:2 d g'::tsvector, 'a | s');
! ts_rank
! -----------
! 0.0607927
! (1 row)
!
! SELECT ts_rank(' a:1 s:2C d g'::tsvector, 'a & s');
! ts_rank
! ----------
! 0.140153
! (1 row)
!
! SELECT ts_rank(' a:1 s:2B d g'::tsvector, 'a & s');
! ts_rank
! ----------
! 0.198206
! (1 row)
!
! SELECT ts_rank(' a:1 s:2 d g'::tsvector, 'a & s');
! ts_rank
! -----------
! 0.0991032
! (1 row)
!
! SELECT ts_rank_cd(' a:1 s:2C d g'::tsvector, 'a | s');
! ts_rank_cd
! ------------
! 0.3
! (1 row)
!
! SELECT ts_rank_cd(' a:1 sa:2C d g'::tsvector, 'a | s');
! ts_rank_cd
! ------------
! 0.1
! (1 row)
!
! SELECT ts_rank_cd(' a:1 sa:2C d g'::tsvector, 'a | s:*');
! ts_rank_cd
! ------------
! 0.3
! (1 row)
!
! SELECT ts_rank_cd(' a:1 sa:2C d g'::tsvector, 'a | sa:*');
! ts_rank_cd
! ------------
! 0.3
! (1 row)
!
! SELECT ts_rank_cd(' a:1 sa:3C sab:2c d g'::tsvector, 'a | sa:*');
! ts_rank_cd
! ------------
! 0.5
! (1 row)
!
! SELECT ts_rank_cd(' a:1 s:2B d g'::tsvector, 'a | s');
! ts_rank_cd
! ------------
! 0.5
! (1 row)
!
! SELECT ts_rank_cd(' a:1 s:2 d g'::tsvector, 'a | s');
! ts_rank_cd
! ------------
! 0.2
! (1 row)
!
! SELECT ts_rank_cd(' a:1 s:2C d g'::tsvector, 'a & s');
! ts_rank_cd
! ------------
! 0.133333
! (1 row)
!
! SELECT ts_rank_cd(' a:1 s:2B d g'::tsvector, 'a & s');
! ts_rank_cd
! ------------
! 0.16
! (1 row)
!
! SELECT ts_rank_cd(' a:1 s:2 d g'::tsvector, 'a & s');
! ts_rank_cd
! ------------
! 0.1
! (1 row)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/comments.out 2016-04-02 21:48:12.913721318 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/comments.out 2016-04-04 03:18:31.239714518 +0000
***************
*** 1,65 ****
! --
! -- COMMENTS
! --
! SELECT 'trailing' AS first; -- trailing single line
! first
! ----------
! trailing
! (1 row)
!
! SELECT /* embedded single line */ 'embedded' AS second;
! second
! ----------
! embedded
! (1 row)
!
! SELECT /* both embedded and trailing single line */ 'both' AS third; -- trailing single line
! third
! -------
! both
! (1 row)
!
! SELECT 'before multi-line' AS fourth;
! fourth
! -------------------
! before multi-line
! (1 row)
!
! /* This is an example of SQL which should not execute:
! * select 'multi-line';
! */
! SELECT 'after multi-line' AS fifth;
! fifth
! ------------------
! after multi-line
! (1 row)
!
! --
! -- Nested comments
! --
! /*
! SELECT 'trailing' as x1; -- inside block comment
! */
! /* This block comment surrounds a query which itself has a block comment...
! SELECT /* embedded single line */ 'embedded' AS x2;
! */
! SELECT -- continued after the following block comments...
! /* Deeply nested comment.
! This includes a single apostrophe to make sure we aren't decoding this part as a string.
! SELECT 'deep nest' AS n1;
! /* Second level of nesting...
! SELECT 'deeper nest' as n2;
! /* Third level of nesting...
! SELECT 'deepest nest' as n3;
! */
! Hoo boy. Still two deep...
! */
! Now just one deep...
! */
! 'deeply nested example' AS sixth;
! sixth
! -----------------------
! deeply nested example
! (1 row)
!
! /* and this is the end of the file */
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/geometry.out 2016-04-02 21:48:12.918358643 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/geometry.out 2016-04-04 03:18:31.259449294 +0000
***************
*** 1,563 ****
! --
! -- GEOMETRY
! --
! -- Back off displayed precision a little bit to reduce platform-to-platform
! -- variation in results.
! SET extra_float_digits TO -3;
! --
! -- Points
! --
! SELECT '' AS four, center(f1) AS center
! FROM BOX_TBL ORDER BY (center(f1))[0], (center(f1))[1];
! four | center
! ------+---------
! | (1,1)
! | (2,2)
! | (2.5,3)
! | (3,3)
! (4 rows)
!
! SELECT '' AS four, (@@ f1) AS center
! FROM BOX_TBL ORDER BY (center(f1))[0], (center(f1))[1];
! four | center
! ------+---------
! | (1,1)
! | (2,2)
! | (2.5,3)
! | (3,3)
! (4 rows)
!
! SELECT '' AS six, point(f1) AS center
! FROM CIRCLE_TBL ORDER BY (point(f1))[0], (point(f1))[1], radius(f1);
! six | center
! -----+-----------
! | (1,2)
! | (1,2)
! | (1,3)
! | (5,1)
! | (100,1)
! | (100,200)
! (6 rows)
!
! SELECT '' AS six, (@@ f1) AS center
! FROM CIRCLE_TBL ORDER BY (point(f1))[0], (point(f1))[1], radius(f1);
! six | center
! -----+-----------
! | (1,2)
! | (1,2)
! | (1,3)
! | (5,1)
! | (100,1)
! | (100,200)
! (6 rows)
!
! SELECT '' AS two, (@@ f1) AS center
! FROM POLYGON_TBL
! WHERE (# f1) > 2 ORDER BY ID;
! two | center
! -----+-------------------------------
! | (1.33333333333,1.33333333333)
! | (2.33333333333,1.33333333333)
! (2 rows)
!
! -- "is horizontal" function
! SELECT '' AS two, p1.f1
! FROM POINT_TBL p1
! WHERE ishorizontal(p1.f1, point '(0,0)') ORDER BY f1[0], f1[1];
! two | f1
! -----+---------
! | (-10,0)
! | (0,0)
! (2 rows)
!
! -- "is horizontal" operator
! SELECT '' AS two, p1.f1
! FROM POINT_TBL p1
! WHERE p1.f1 ?- point '(0,0)' ORDER BY f1[0], f1[1];
! two | f1
! -----+---------
! | (-10,0)
! | (0,0)
! (2 rows)
!
! -- "is vertical" function
! SELECT '' AS one, p1.f1
! FROM POINT_TBL p1
! WHERE isvertical(p1.f1, point '(5.1,34.5)') ORDER BY f1[0], f1[1];
! one | f1
! -----+------------
! | (5.1,34.5)
! (1 row)
!
! -- "is vertical" operator
! SELECT '' AS one, p1.f1
! FROM POINT_TBL p1
! WHERE p1.f1 ?| point '(5.1,34.5)' ORDER BY f1[0], f1[1];
! one | f1
! -----+------------
! | (5.1,34.5)
! (1 row)
!
! --
! -- Line segments
! --
! -- intersection
! SELECT '' AS count, p.f1, l.s, l.s # p.f1 AS intersection
! FROM LSEG_TBL l, POINT_TBL p ORDER BY (l.s[0])[0], (l.s[0])[1], p.f1[0], p.f1[1];
! ERROR: operator does not exist: lseg # point
! LINE 1: SELECT '' AS count, p.f1, l.s, l.s # p.f1 AS intersection
! ^
! HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
! -- closest point
! SELECT '' AS thirty, p.f1, l.s, p.f1 ## l.s AS closest
! FROM LSEG_TBL l, POINT_TBL p ORDER BY (l.s[0])[0], (l.s[0])[1], p.f1[0], p.f1[1];
! thirty | f1 | s | closest
! --------+------------+-------------------------------+----------------------------------
! | (-10,0) | [(-1000000,200),(300000,-40)] | (-9.99715942258,15.386461014)
! | (-5,-12) | [(-1000000,200),(300000,-40)] | (-4.99494420846,15.3855375282)
! | (-3,4) | [(-1000000,200),(300000,-40)] | (-2.99789812268,15.3851688427)
! | (0,0) | [(-1000000,200),(300000,-40)] | (0.00284023658959,15.3846148603)
! | (5.1,34.5) | [(-1000000,200),(300000,-40)] | (5.09647083221,15.3836744977)
! | (10,10) | [(-1000000,200),(300000,-40)] | (10.000993742,15.3827690473)
! | (-10,0) | [(0,0),(6,6)] | (0,0)
! | (-5,-12) | [(0,0),(6,6)] | (0,0)
! | (-3,4) | [(0,0),(6,6)] | (0.5,0.5)
! | (0,0) | [(0,0),(6,6)] | (-0,0)
! | (5.1,34.5) | [(0,0),(6,6)] | (6,6)
! | (10,10) | [(0,0),(6,6)] | (6,6)
! | (-10,0) | [(1,2),(3,4)] | (1,2)
! | (-5,-12) | [(1,2),(3,4)] | (1,2)
! | (-3,4) | [(1,2),(3,4)] | (1,2)
! | (0,0) | [(1,2),(3,4)] | (1,2)
! | (5.1,34.5) | [(1,2),(3,4)] | (3,4)
! | (10,10) | [(1,2),(3,4)] | (3,4)
! | (-10,0) | [(10,-10),(-3,-4)] | (-3,-4)
! | (-5,-12) | [(10,-10),(-3,-4)] | (-1.60487804878,-4.64390243902)
! | (-3,4) | [(10,-10),(-3,-4)] | (-3,-4)
! | (0,0) | [(10,-10),(-3,-4)] | (-2.0487804878,-4.43902439024)
! | (5.1,34.5) | [(10,-10),(-3,-4)] | (-3,-4)
! | (10,10) | [(10,-10),(-3,-4)] | (2.39024390244,-6.48780487805)
! | (-10,0) | [(11,22),(33,44)] | (11,22)
! | (-5,-12) | [(11,22),(33,44)] | (11,22)
! | (-3,4) | [(11,22),(33,44)] | (11,22)
! | (0,0) | [(11,22),(33,44)] | (11,22)
! | (5.1,34.5) | [(11,22),(33,44)] | (14.3,25.3)
! | (10,10) | [(11,22),(33,44)] | (11,22)
! (30 rows)
!
! --
! -- Boxes
! --
! SELECT '' as six, box(f1) AS box FROM CIRCLE_TBL ORDER BY (point(f1))[0], (point(f1))[0], radius(f1);
! six | box
! -----+----------------------------------------------------------------
! | (3.12132034356,4.12132034356),(-1.12132034356,-0.12132034356)
! | (4.53553390593,6.53553390593),(-2.53553390593,-0.535533905933)
! | (71.7106781187,72.7106781187),(-69.7106781187,-68.7106781187)
! | (7.12132034356,3.12132034356),(2.87867965644,-1.12132034356)
! | (107.071067812,207.071067812),(92.9289321881,192.928932188)
! | (181.317279836,82.3172798365),(18.6827201635,-80.3172798365)
! (6 rows)
!
! -- translation
! SELECT '' AS twentyfour, b.f1 + p.f1 AS translation
! FROM BOX_TBL b, POINT_TBL p ORDER BY (center(b.f1))[0], (center(b.f1))[1], p.f1[0], p.f1[1];
! twentyfour | translation
! ------------+-------------------------
! | (-8,2),(-10,0)
! | (-3,-10),(-5,-12)
! | (-1,6),(-3,4)
! | (2,2),(0,0)
! | (7.1,36.5),(5.1,34.5)
! | (12,12),(10,10)
! | (-7,3),(-9,1)
! | (-2,-9),(-4,-11)
! | (0,7),(-2,5)
! | (3,3),(1,1)
! | (8.1,37.5),(6.1,35.5)
! | (13,13),(11,11)
! | (-7.5,3.5),(-7.5,2.5)
! | (-2.5,-8.5),(-2.5,-9.5)
! | (-0.5,7.5),(-0.5,6.5)
! | (2.5,3.5),(2.5,2.5)
! | (7.6,38),(7.6,37)
! | (12.5,13.5),(12.5,12.5)
! | (-7,3),(-7,3)
! | (-2,-9),(-2,-9)
! | (0,7),(0,7)
! | (3,3),(3,3)
! | (8.1,37.5),(8.1,37.5)
! | (13,13),(13,13)
! (24 rows)
!
! SELECT '' AS twentyfour, b.f1 - p.f1 AS translation
! FROM BOX_TBL b, POINT_TBL p ORDER BY (center(b.f1))[0], (center(b.f1))[1], p.f1[0], p.f1[1];
! twentyfour | translation
! ------------+---------------------------
! | (12,2),(10,0)
! | (7,14),(5,12)
! | (5,-2),(3,-4)
! | (2,2),(0,0)
! | (-3.1,-32.5),(-5.1,-34.5)
! | (-8,-8),(-10,-10)
! | (13,3),(11,1)
! | (8,15),(6,13)
! | (6,-1),(4,-3)
! | (3,3),(1,1)
! | (-2.1,-31.5),(-4.1,-33.5)
! | (-7,-7),(-9,-9)
! | (12.5,3.5),(12.5,2.5)
! | (7.5,15.5),(7.5,14.5)
! | (5.5,-0.5),(5.5,-1.5)
! | (2.5,3.5),(2.5,2.5)
! | (-2.6,-31),(-2.6,-32)
! | (-7.5,-6.5),(-7.5,-7.5)
! | (13,3),(13,3)
! | (8,15),(8,15)
! | (6,-1),(6,-1)
! | (3,3),(3,3)
! | (-2.1,-31.5),(-2.1,-31.5)
! | (-7,-7),(-7,-7)
! (24 rows)
!
! -- scaling and rotation
! SELECT '' AS twentyfour, b.f1 * p.f1 AS rotation
! FROM BOX_TBL b, POINT_TBL p ORDER BY (center(b.f1))[0], (center(b.f1))[1], p.f1[0], p.f1[1];
! twentyfour | rotation
! ------------+-----------------------------
! | (-0,0),(-20,-20)
! | (14,-0),(0,-34)
! | (-0,2),(-14,0)
! | (0,0),(0,0)
! | (0,79.2),(-58.8,0)
! | (0,40),(0,0)
! | (-10,-10),(-30,-30)
! | (21,-17),(7,-51)
! | (-7,3),(-21,1)
! | (0,0),(0,0)
! | (-29.4,118.8),(-88.2,39.6)
! | (0,60),(0,20)
! | (-25,-25),(-25,-35)
! | (29.5,-42.5),(17.5,-47.5)
! | (-17.5,2.5),(-21.5,-0.5)
! | (0,0),(0,0)
! | (-73.5,104.1),(-108,99)
! | (0,60),(-10,50)
! | (-30,-30),(-30,-30)
! | (21,-51),(21,-51)
! | (-21,3),(-21,3)
! | (0,0),(0,0)
! | (-88.2,118.8),(-88.2,118.8)
! | (0,60),(0,60)
! (24 rows)
!
! SELECT '' AS twenty, b.f1 / p.f1 AS rotation
! FROM BOX_TBL b, POINT_TBL p
! WHERE (p.f1 <-> point '(0,0)') >= 1 ORDER BY (center(b.f1))[0], (center(b.f1))[1], p.f1[0], p.f1[1];
! twenty | rotation
! --------+----------------------------------------------------------------------
! | (0,-0),(-0.2,-0.2)
! | (-0,0.0828402366864),(-0.201183431953,0)
! | (0.08,-0),(0,-0.56)
! | (0.0651176557644,0),(0,-0.0483449262493)
! | (0.2,0),(0,0)
! | (-0.1,-0.1),(-0.3,-0.3)
! | (-0.100591715976,0.12426035503),(-0.301775147929,0.0414201183432)
! | (0.12,-0.28),(0.04,-0.84)
! | (0.0976764836466,-0.0241724631247),(0.0325588278822,-0.072517389374)
! | (0.3,0),(0.1,0)
! | (-0.25,-0.25),(-0.25,-0.35)
! | (-0.251479289941,0.103550295858),(-0.322485207101,0.0739644970414)
! | (0.26,-0.7),(0.1,-0.82)
! | (0.109762715209,-0.0562379754329),(0.0813970697055,-0.0604311578117)
! | (0.3,0.05),(0.25,0)
! | (-0.3,-0.3),(-0.3,-0.3)
! | (-0.301775147929,0.12426035503),(-0.301775147929,0.12426035503)
! | (0.12,-0.84),(0.12,-0.84)
! | (0.0976764836466,-0.072517389374),(0.0976764836466,-0.072517389374)
! | (0.3,0),(0.3,0)
! (20 rows)
!
! SELECT f1::box
! FROM POINT_TBL;
! f1
! -----------------------
! (0,0),(0,0)
! (-10,0),(-10,0)
! (-3,4),(-3,4)
! (5.1,34.5),(5.1,34.5)
! (-5,-12),(-5,-12)
! (10,10),(10,10)
! (6 rows)
!
! SELECT bound_box(a.f1, b.f1)
! FROM BOX_TBL a, BOX_TBL b;
! bound_box
! ---------------------
! (2,2),(0,0)
! (3,3),(0,0)
! (2.5,3.5),(0,0)
! (3,3),(0,0)
! (3,3),(0,0)
! (3,3),(1,1)
! (3,3.5),(1,1)
! (3,3),(1,1)
! (2.5,3.5),(0,0)
! (3,3.5),(1,1)
! (2.5,3.5),(2.5,2.5)
! (3,3.5),(2.5,2.5)
! (3,3),(0,0)
! (3,3),(1,1)
! (3,3.5),(2.5,2.5)
! (3,3),(3,3)
! (16 rows)
!
! --
! -- Paths
! --
! SELECT '' AS eight, npoints(f1) AS npoints, f1 AS path FROM PATH_TBL ORDER BY ID;
! eight | npoints | path
! -------+---------+---------------------------
! | 2 | [(1,2),(3,4)]
! | 2 | ((1,2),(3,4))
! | 4 | [(0,0),(3,0),(4,5),(1,6)]
! | 2 | ((1,2),(3,4))
! | 2 | ((1,2),(3,4))
! | 2 | [(1,2),(3,4)]
! | 2 | [(11,12),(13,14)]
! | 2 | ((11,12),(13,14))
! (8 rows)
!
! SELECT '' AS four, path(f1) FROM POLYGON_TBL ORDER BY ID;
! four | path
! ------+---------------------
! | ((2,0),(2,4),(0,0))
! | ((3,1),(3,3),(1,0))
! | ((0,0))
! | ((0,1),(0,1))
! (4 rows)
!
! -- translation
! SELECT '' AS eight, p1.f1 + point '(10,10)' AS dist_add
! FROM PATH_TBL p1 ORDER BY ID;
! eight | dist_add
! -------+-----------------------------------
! | [(11,12),(13,14)]
! | ((11,12),(13,14))
! | [(10,10),(13,10),(14,15),(11,16)]
! | ((11,12),(13,14))
! | ((11,12),(13,14))
! | [(11,12),(13,14)]
! | [(21,22),(23,24)]
! | ((21,22),(23,24))
! (8 rows)
!
! -- scaling and rotation
! SELECT '' AS eight, p1.f1 * point '(2,-1)' AS dist_mul
! FROM PATH_TBL p1 ORDER BY ID;
! eight | dist_mul
! -------+------------------------------
! | [(4,3),(10,5)]
! | ((4,3),(10,5))
! | [(0,0),(6,-3),(13,6),(8,11)]
! | ((4,3),(10,5))
! | ((4,3),(10,5))
! | [(4,3),(10,5)]
! | [(34,13),(40,15)]
! | ((34,13),(40,15))
! (8 rows)
!
! --
! -- Polygons
! --
! -- containment
! SELECT '' AS twentyfour, p.f1, poly.f1, poly.f1 @> p.f1 AS contains
! FROM POLYGON_TBL poly, POINT_TBL p ORDER BY poly.ID, p.f1[0], p.f1[1];
! twentyfour | f1 | f1 | contains
! ------------+------------+---------------------+----------
! | (-10,0) | ((2,0),(2,4),(0,0)) | f
! | (-5,-12) | ((2,0),(2,4),(0,0)) | f
! | (-3,4) | ((2,0),(2,4),(0,0)) | f
! | (0,0) | ((2,0),(2,4),(0,0)) | t
! | (5.1,34.5) | ((2,0),(2,4),(0,0)) | f
! | (10,10) | ((2,0),(2,4),(0,0)) | f
! | (-10,0) | ((3,1),(3,3),(1,0)) | f
! | (-5,-12) | ((3,1),(3,3),(1,0)) | f
! | (-3,4) | ((3,1),(3,3),(1,0)) | f
! | (0,0) | ((3,1),(3,3),(1,0)) | f
! | (5.1,34.5) | ((3,1),(3,3),(1,0)) | f
! | (10,10) | ((3,1),(3,3),(1,0)) | f
! | (-10,0) | ((0,0)) | f
! | (-5,-12) | ((0,0)) | f
! | (-3,4) | ((0,0)) | f
! | (0,0) | ((0,0)) | t
! | (5.1,34.5) | ((0,0)) | f
! | (10,10) | ((0,0)) | f
! | (-10,0) | ((0,1),(0,1)) | f
! | (-5,-12) | ((0,1),(0,1)) | f
! | (-3,4) | ((0,1),(0,1)) | f
! | (0,0) | ((0,1),(0,1)) | f
! | (5.1,34.5) | ((0,1),(0,1)) | f
! | (10,10) | ((0,1),(0,1)) | f
! (24 rows)
!
! SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 <@ poly.f1 AS contained
! FROM POLYGON_TBL poly, POINT_TBL p ORDER BY poly.ID, p.f1[0], p.f1[1];
! twentyfour | f1 | f1 | contained
! ------------+------------+---------------------+-----------
! | (-10,0) | ((2,0),(2,4),(0,0)) | f
! | (-5,-12) | ((2,0),(2,4),(0,0)) | f
! | (-3,4) | ((2,0),(2,4),(0,0)) | f
! | (0,0) | ((2,0),(2,4),(0,0)) | t
! | (5.1,34.5) | ((2,0),(2,4),(0,0)) | f
! | (10,10) | ((2,0),(2,4),(0,0)) | f
! | (-10,0) | ((3,1),(3,3),(1,0)) | f
! | (-5,-12) | ((3,1),(3,3),(1,0)) | f
! | (-3,4) | ((3,1),(3,3),(1,0)) | f
! | (0,0) | ((3,1),(3,3),(1,0)) | f
! | (5.1,34.5) | ((3,1),(3,3),(1,0)) | f
! | (10,10) | ((3,1),(3,3),(1,0)) | f
! | (-10,0) | ((0,0)) | f
! | (-5,-12) | ((0,0)) | f
! | (-3,4) | ((0,0)) | f
! | (0,0) | ((0,0)) | t
! | (5.1,34.5) | ((0,0)) | f
! | (10,10) | ((0,0)) | f
! | (-10,0) | ((0,1),(0,1)) | f
! | (-5,-12) | ((0,1),(0,1)) | f
! | (-3,4) | ((0,1),(0,1)) | f
! | (0,0) | ((0,1),(0,1)) | f
! | (5.1,34.5) | ((0,1),(0,1)) | f
! | (10,10) | ((0,1),(0,1)) | f
! (24 rows)
!
! SELECT '' AS four, npoints(f1) AS npoints, f1 AS polygon
! FROM POLYGON_TBL ORDER BY ID;
! four | npoints | polygon
! ------+---------+---------------------
! | 3 | ((2,0),(2,4),(0,0))
! | 3 | ((3,1),(3,3),(1,0))
! | 1 | ((0,0))
! | 2 | ((0,1),(0,1))
! (4 rows)
!
! SELECT '' AS four, polygon(f1)
! FROM BOX_TBL ORDER BY (center(f1))[0], (center(f1))[1];
! four | polygon
! ------+-------------------------------------------
! | ((0,0),(0,2),(2,2),(2,0))
! | ((1,1),(1,3),(3,3),(3,1))
! | ((2.5,2.5),(2.5,3.5),(2.5,3.5),(2.5,2.5))
! | ((3,3),(3,3),(3,3),(3,3))
! (4 rows)
!
! SELECT '' AS four, polygon(f1)
! FROM PATH_TBL WHERE isclosed(f1) ORDER BY ID;
! four | polygon
! ------+-------------------
! | ((1,2),(3,4))
! | ((1,2),(3,4))
! | ((1,2),(3,4))
! | ((11,12),(13,14))
! (4 rows)
!
! SELECT '' AS four, f1 AS open_path, polygon( pclose(f1)) AS polygon
! FROM PATH_TBL
! WHERE isopen(f1) ORDER BY ID;
! four | open_path | polygon
! ------+---------------------------+---------------------------
! | [(1,2),(3,4)] | ((1,2),(3,4))
! | [(0,0),(3,0),(4,5),(1,6)] | ((0,0),(3,0),(4,5),(1,6))
! | [(1,2),(3,4)] | ((1,2),(3,4))
! | [(11,12),(13,14)] | ((11,12),(13,14))
! (4 rows)
!
! -- convert circles to polygons using the default number of points
! SELECT '' AS six, polygon(f1)
! FROM CIRCLE_TBL ORDER BY (point(f1))[0], (point(f1))[1], radius(f1);
! six | polygon
! -----+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
! | ((-2,2),(-1.59807621135,3.5),(-0.5,4.59807621135),(1,5),(2.5,4.59807621135),(3.59807621135,3.5),(4,2),(3.59807621135,0.5),(2.5,-0.598076211353),(1,-1),(-0.5,-0.598076211353),(-1.59807621135,0.5))
! | ((-99,2),(-85.6025403784,52),(-49,88.6025403784),(1,102),(51,88.6025403784),(87.6025403784,52),(101,2),(87.6025403784,-48),(51,-84.6025403784),(1,-98),(-49,-84.6025403784),(-85.6025403784,-48))
! | ((-4,3),(-3.33012701892,5.5),(-1.5,7.33012701892),(1,8),(3.5,7.33012701892),(5.33012701892,5.5),(6,3),(5.33012701892,0.5),(3.5,-1.33012701892),(1,-2),(-1.5,-1.33012701892),(-3.33012701892,0.5))
! | ((2,1),(2.40192378865,2.5),(3.5,3.59807621135),(5,4),(6.5,3.59807621135),(7.59807621135,2.5),(8,1),(7.59807621135,-0.5),(6.5,-1.59807621135),(5,-2),(3.5,-1.59807621135),(2.40192378865,-0.5))
! | ((-15,1),(0.40707856479,58.5),(42.5,100.592921435),(100,116),(157.5,100.592921435),(199.592921435,58.5),(215,1),(199.592921435,-56.5),(157.5,-98.5929214352),(100,-114),(42.5,-98.5929214352),(0.40707856479,-56.5))
! | ((90,200),(91.3397459622,205),(95,208.660254038),(100,210),(105,208.660254038),(108.660254038,205),(110,200),(108.660254038,195),(105,191.339745962),(100,190),(95,191.339745962),(91.3397459622,195))
! (6 rows)
!
! -- convert the circle to an 8-point polygon
! SELECT '' AS six, polygon(8, f1)
! FROM CIRCLE_TBL ORDER BY (point(f1))[0], (point(f1))[1], radius(f1);
! six | polygon
! -----+------------------------------------------------------------------------------------------------------------------------------------------------------------------
! | ((-2,2),(-1.12132034356,4.12132034356),(1,5),(3.12132034356,4.12132034356),(4,2),(3.12132034356,-0.12132034356),(1,-1),(-1.12132034356,-0.12132034356))
! | ((-99,2),(-69.7106781187,72.7106781187),(1,102),(71.7106781187,72.7106781187),(101,2),(71.7106781187,-68.7106781187),(1,-98),(-69.7106781187,-68.7106781187))
! | ((-4,3),(-2.53553390593,6.53553390593),(1,8),(4.53553390593,6.53553390593),(6,3),(4.53553390593,-0.535533905933),(1,-2),(-2.53553390593,-0.535533905933))
! | ((2,1),(2.87867965644,3.12132034356),(5,4),(7.12132034356,3.12132034356),(8,1),(7.12132034356,-1.12132034356),(5,-2),(2.87867965644,-1.12132034356))
! | ((-15,1),(18.6827201635,82.3172798365),(100,116),(181.317279836,82.3172798365),(215,1),(181.317279836,-80.3172798365),(100,-114),(18.6827201635,-80.3172798365))
! | ((90,200),(92.9289321881,207.071067812),(100,210),(107.071067812,207.071067812),(110,200),(107.071067812,192.928932188),(100,190),(92.9289321881,192.928932188))
! (6 rows)
!
! --
! -- Circles
! --
! SELECT '' AS six, circle(f1, 50.0)
! FROM POINT_TBL ORDER BY f1[0], f1[1];
! six | circle
! -----+-----------------
! | <(-10,0),50>
! | <(-5,-12),50>
! | <(-3,4),50>
! | <(0,0),50>
! | <(5.1,34.5),50>
! | <(10,10),50>
! (6 rows)
!
! SELECT '' AS four, circle(f1)
! FROM BOX_TBL ORDER BY (center(f1))[0], (center(f1))[1];
! four | circle
! ------+-----------------------
! | <(1,1),1.41421356237>
! | <(2,2),1.41421356237>
! | <(2.5,3),0.5>
! | <(3,3),0>
! (4 rows)
!
! SELECT '' AS two, circle(f1)
! FROM POLYGON_TBL
! WHERE (# f1) >= 3 ORDER BY ID;
! two | circle
! -----+-----------------------------------------------
! | <(1.33333333333,1.33333333333),2.04168905064>
! | <(2.33333333333,1.33333333333),1.47534300379>
! (2 rows)
!
! SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance
! FROM CIRCLE_TBL c1, POINT_TBL p1
! WHERE (p1.f1 <-> c1.f1) > 0
! ORDER BY distance, area(c1.f1), p1.f1[0];
! twentyfour | circle | point | distance
! ------------+----------------+------------+---------------
! | <(1,2),3> | (-3,4) | 1.472135955
! | <(5,1),3> | (0,0) | 2.09901951359
! | <(5,1),3> | (-3,4) | 5.54400374532
! | <(1,3),5> | (-10,0) | 6.40175425099
! | <(1,3),5> | (10,10) | 6.40175425099
! | <(5,1),3> | (10,10) | 7.29563014099
! | <(1,2),3> | (-10,0) | 8.1803398875
! | <(1,2),3> | (10,10) | 9.04159457879
! | <(1,3),5> | (-5,-12) | 11.1554944214
! | <(5,1),3> | (-10,0) | 12.0332963784
! | <(1,2),3> | (-5,-12) | 12.2315462117
! | <(5,1),3> | (-5,-12) | 13.4012194669
! | <(1,3),5> | (5.1,34.5) | 26.7657047773
! | <(1,2),3> | (5.1,34.5) | 29.7575945393
! | <(5,1),3> | (5.1,34.5) | 30.5001492534
! | <(100,200),10> | (5.1,34.5) | 180.778038568
! | <(100,200),10> | (10,10) | 200.237960416
! | <(100,200),10> | (-3,4) | 211.415898255
! | <(100,200),10> | (0,0) | 213.60679775
! | <(100,200),10> | (-10,0) | 218.25424421
! | <(100,200),10> | (-5,-12) | 226.577682802
! (21 rows)
!
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/horology.out 2016-04-02 21:48:12.919601682 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/horology.out 2016-04-04 03:18:31.291507090 +0000
***************
*** 1,3042 ****
! --
! -- HOROLOGY
! --
! SET DateStyle = 'Postgres, MDY';
! --
! -- Test various input formats
! --
! SELECT timestamp with time zone '20011227 040506+08';
! timestamptz
! ------------------------------
! Wed Dec 26 12:05:06 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '20011227 040506-08';
! timestamptz
! ------------------------------
! Thu Dec 27 04:05:06 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '20011227 040506.789+08';
! timestamptz
! ----------------------------------
! Wed Dec 26 12:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '20011227 040506.789-08';
! timestamptz
! ----------------------------------
! Thu Dec 27 04:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '20011227T040506+08';
! timestamptz
! ------------------------------
! Wed Dec 26 12:05:06 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '20011227T040506-08';
! timestamptz
! ------------------------------
! Thu Dec 27 04:05:06 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '20011227T040506.789+08';
! timestamptz
! ----------------------------------
! Wed Dec 26 12:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '20011227T040506.789-08';
! timestamptz
! ----------------------------------
! Thu Dec 27 04:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '2001-12-27 04:05:06.789-08';
! timestamptz
! ----------------------------------
! Thu Dec 27 04:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '2001.12.27 04:05:06.789-08';
! timestamptz
! ----------------------------------
! Thu Dec 27 04:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '2001/12/27 04:05:06.789-08';
! timestamptz
! ----------------------------------
! Thu Dec 27 04:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '12/27/2001 04:05:06.789-08';
! timestamptz
! ----------------------------------
! Thu Dec 27 04:05:06.789 2001 PST
! (1 row)
!
! -- should fail in mdy mode:
! SELECT timestamp with time zone '27/12/2001 04:05:06.789-08';
! ERROR: date/time field value out of range: "27/12/2001 04:05:06.789-08"
! LINE 1: SELECT timestamp with time zone '27/12/2001 04:05:06.789-08'...
! ^
! HINT: Perhaps you need a different "datestyle" setting.
! set datestyle to dmy;
! SELECT timestamp with time zone '27/12/2001 04:05:06.789-08';
! timestamptz
! ----------------------------------
! Thu 27 Dec 04:05:06.789 2001 PST
! (1 row)
!
! reset datestyle;
! SELECT timestamp with time zone 'Y2001M12D27H04M05S06.789+08';
! timestamptz
! ----------------------------------
! Wed Dec 26 12:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'Y2001M12D27H04M05S06.789-08';
! timestamptz
! ----------------------------------
! Thu Dec 27 04:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'Y2001M12D27H04MM05S06.789+08';
! timestamptz
! ----------------------------------
! Wed Dec 26 12:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'Y2001M12D27H04MM05S06.789-08';
! timestamptz
! ----------------------------------
! Thu Dec 27 04:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'J2452271+08';
! timestamptz
! ------------------------------
! Wed Dec 26 08:00:00 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'J2452271-08';
! timestamptz
! ------------------------------
! Thu Dec 27 00:00:00 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'J2452271.5+08';
! timestamptz
! ------------------------------
! Wed Dec 26 20:00:00 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'J2452271.5-08';
! timestamptz
! ------------------------------
! Thu Dec 27 12:00:00 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'J2452271 04:05:06+08';
! timestamptz
! ------------------------------
! Wed Dec 26 12:05:06 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'J2452271 04:05:06-08';
! timestamptz
! ------------------------------
! Thu Dec 27 04:05:06 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'J2452271T040506+08';
! timestamptz
! ------------------------------
! Wed Dec 26 12:05:06 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'J2452271T040506-08';
! timestamptz
! ------------------------------
! Thu Dec 27 04:05:06 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'J2452271T040506.789+08';
! timestamptz
! ----------------------------------
! Wed Dec 26 12:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone 'J2452271T040506.789-08';
! timestamptz
! ----------------------------------
! Thu Dec 27 04:05:06.789 2001 PST
! (1 row)
!
! -- German/European-style dates with periods as delimiters
! SELECT timestamp with time zone '12.27.2001 04:05:06.789+08';
! timestamptz
! ----------------------------------
! Wed Dec 26 12:05:06.789 2001 PST
! (1 row)
!
! SELECT timestamp with time zone '12.27.2001 04:05:06.789-08';
! timestamptz
! ----------------------------------
! Thu Dec 27 04:05:06.789 2001 PST
! (1 row)
!
! SET DateStyle = 'German';
! SELECT timestamp with time zone '27.12.2001 04:05:06.789+08';
! timestamptz
! -----------------------------
! 26.12.2001 12:05:06.789 PST
! (1 row)
!
! SELECT timestamp with time zone '27.12.2001 04:05:06.789-08';
! timestamptz
! -----------------------------
! 27.12.2001 04:05:06.789 PST
! (1 row)
!
! SET DateStyle = 'ISO';
! -- As of 7.4, allow time without time zone having a time zone specified
! SELECT time without time zone '040506.789+08';
! time
! --------------
! 04:05:06.789
! (1 row)
!
! SELECT time without time zone '040506.789-08';
! time
! --------------
! 04:05:06.789
! (1 row)
!
! SELECT time without time zone 'T040506.789+08';
! time
! --------------
! 04:05:06.789
! (1 row)
!
! SELECT time without time zone 'T040506.789-08';
! time
! --------------
! 04:05:06.789
! (1 row)
!
! SELECT time with time zone '040506.789+08';
! timetz
! -----------------
! 04:05:06.789+08
! (1 row)
!
! SELECT time with time zone '040506.789-08';
! timetz
! -----------------
! 04:05:06.789-08
! (1 row)
!
! SELECT time with time zone 'T040506.789+08';
! timetz
! -----------------
! 04:05:06.789+08
! (1 row)
!
! SELECT time with time zone 'T040506.789-08';
! timetz
! -----------------
! 04:05:06.789-08
! (1 row)
!
! SELECT time with time zone 'T040506.789 +08';
! timetz
! -----------------
! 04:05:06.789+08
! (1 row)
!
! SELECT time with time zone 'T040506.789 -08';
! timetz
! -----------------
! 04:05:06.789-08
! (1 row)
!
! SET DateStyle = 'Postgres, MDY';
! -- Check Julian dates BC
! SELECT date 'J1520447' AS "Confucius' Birthday";
! Confucius' Birthday
! ---------------------
! 09-28-0551 BC
! (1 row)
!
! SELECT date 'J0' AS "Julian Epoch";
! Julian Epoch
! ---------------
! 11-24-4714 BC
! (1 row)
!
! --
! -- date, time arithmetic
! --
! SELECT date '1981-02-03' + time '04:05:06' AS "Date + Time";
! Date + Time
! --------------------------
! Tue Feb 03 04:05:06 1981
! (1 row)
!
! SELECT date '1991-02-03' + time with time zone '04:05:06 PST' AS "Date + Time PST";
! Date + Time PST
! ------------------------------
! Sun Feb 03 04:05:06 1991 PST
! (1 row)
!
! SELECT date '2001-02-03' + time with time zone '04:05:06 UTC' AS "Date + Time UTC";
! Date + Time UTC
! ------------------------------
! Fri Feb 02 20:05:06 2001 PST
! (1 row)
!
! SELECT date '1991-02-03' + interval '2 years' AS "Add Two Years";
! Add Two Years
! --------------------------
! Wed Feb 03 00:00:00 1993
! (1 row)
!
! SELECT date '2001-12-13' - interval '2 years' AS "Subtract Two Years";
! Subtract Two Years
! --------------------------
! Mon Dec 13 00:00:00 1999
! (1 row)
!
! -- subtract time from date should not make sense; use interval instead
! SELECT date '1991-02-03' - time '04:05:06' AS "Subtract Time";
! Subtract Time
! --------------------------
! Sat Feb 02 19:54:54 1991
! (1 row)
!
! SELECT date '1991-02-03' - time with time zone '04:05:06 UTC' AS "Subtract Time UTC";
! ERROR: operator does not exist: date - time with time zone
! LINE 1: SELECT date '1991-02-03' - time with time zone '04:05:06 UTC...
! ^
! HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
! --
! -- timestamp, interval arithmetic
! --
! SELECT timestamp without time zone '1996-03-01' - interval '1 second' AS "Feb 29";
! Feb 29
! --------------------------
! Thu Feb 29 23:59:59 1996
! (1 row)
!
! SELECT timestamp without time zone '1999-03-01' - interval '1 second' AS "Feb 28";
! Feb 28
! --------------------------
! Sun Feb 28 23:59:59 1999
! (1 row)
!
! SELECT timestamp without time zone '2000-03-01' - interval '1 second' AS "Feb 29";
! Feb 29
! --------------------------
! Tue Feb 29 23:59:59 2000
! (1 row)
!
! SELECT timestamp without time zone '1999-12-01' + interval '1 month - 1 second' AS "Dec 31";
! Dec 31
! --------------------------
! Fri Dec 31 23:59:59 1999
! (1 row)
!
! SELECT timestamp without time zone 'Jan 1, 4713 BC' + interval '106000000 days' AS "Feb 23, 285506";
! Feb 23, 285506
! ----------------------------
! Fri Feb 23 00:00:00 285506
! (1 row)
!
! SELECT timestamp without time zone 'Jan 1, 4713 BC' + interval '107000000 days' AS "Jan 20, 288244";
! Jan 20, 288244
! ----------------------------
! Sat Jan 20 00:00:00 288244
! (1 row)
!
! SELECT timestamp without time zone 'Jan 1, 4713 BC' + interval '109203489 days' AS "Dec 31, 294276";
! Dec 31, 294276
! ----------------------------
! Sun Dec 31 00:00:00 294276
! (1 row)
!
! SELECT timestamp without time zone '12/31/294276' - timestamp without time zone '12/23/1999' AS "106751991 Days";
! 106751991 Days
! ------------------
! @ 106751991 days
! (1 row)
!
! -- Shorthand values
! -- Not directly usable for regression testing since these are not constants.
! -- So, just try to test parser and hope for the best - thomas 97/04/26
! SELECT (timestamp without time zone 'today' = (timestamp without time zone 'yesterday' + interval '1 day')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone 'today' = (timestamp without time zone 'tomorrow' - interval '1 day')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone 'today 10:30' = (timestamp without time zone 'yesterday' + interval '1 day 10 hr 30 min')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone '10:30 today' = (timestamp without time zone 'yesterday' + interval '1 day 10 hr 30 min')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone 'tomorrow' = (timestamp without time zone 'yesterday' + interval '2 days')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone 'tomorrow 16:00:00' = (timestamp without time zone 'today' + interval '1 day 16 hours')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone '16:00:00 tomorrow' = (timestamp without time zone 'today' + interval '1 day 16 hours')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone 'yesterday 12:34:56' = (timestamp without time zone 'tomorrow' - interval '2 days - 12:34:56')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone '12:34:56 yesterday' = (timestamp without time zone 'tomorrow' - interval '2 days - 12:34:56')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone 'tomorrow' > 'now') as "True";
! True
! ------
! t
! (1 row)
!
! -- Convert from date and time to timestamp
! -- This test used to be timestamp(date,time) but no longer allowed by grammar
! -- to enable support for SQL99 timestamp type syntax.
! SELECT date '1994-01-01' + time '11:00' AS "Jan_01_1994_11am";
! Jan_01_1994_11am
! --------------------------
! Sat Jan 01 11:00:00 1994
! (1 row)
!
! SELECT date '1994-01-01' + time '10:00' AS "Jan_01_1994_10am";
! Jan_01_1994_10am
! --------------------------
! Sat Jan 01 10:00:00 1994
! (1 row)
!
! SELECT date '1994-01-01' + timetz '11:00-5' AS "Jan_01_1994_8am";
! Jan_01_1994_8am
! ------------------------------
! Sat Jan 01 08:00:00 1994 PST
! (1 row)
!
! SELECT timestamptz(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_8am";
! Jan_01_1994_8am
! ------------------------------
! Sat Jan 01 08:00:00 1994 PST
! (1 row)
!
! SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMP_TBL ORDER BY d1;
! 64 | one_year
! ----+-----------------------------
! | -infinity
! | Thu Feb 16 17:32:01 0096 BC
! | Sun Feb 16 17:32:01 0098
! | Fri Feb 16 17:32:01 0598
! | Wed Feb 16 17:32:01 1098
! | Sun Feb 16 17:32:01 1698
! | Fri Feb 16 17:32:01 1798
! | Wed Feb 16 17:32:01 1898
! | Fri Jan 01 00:00:00 1971
! | Fri Feb 28 17:32:01 1997
! | Fri Feb 28 17:32:01 1997
! | Sat Mar 01 17:32:01 1997
! | Tue Dec 30 17:32:01 1997
! | Wed Dec 31 17:32:01 1997
! | Thu Jan 01 17:32:01 1998
! | Fri Jan 02 00:00:00 1998
! | Fri Jan 02 03:04:05 1998
! | Tue Feb 10 17:32:00 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01 1998
! | Tue Feb 10 17:32:01.4 1998
! | Tue Feb 10 17:32:01.5 1998
! | Tue Feb 10 17:32:01.6 1998
! | Tue Feb 10 17:32:02 1998
! | Wed Feb 11 17:32:01 1998
! | Thu Feb 12 17:32:01 1998
! | Fri Feb 13 17:32:01 1998
! | Sat Feb 14 17:32:01 1998
! | Sun Feb 15 17:32:01 1998
! | Mon Feb 16 17:32:01 1998
! | Mon Feb 16 17:32:01 1998
! | Sat Feb 28 17:32:01 1998
! | Sun Mar 01 17:32:01 1998
! | Wed Jun 10 17:32:01 1998
! | Wed Jun 10 18:32:01 1998
! | Wed Dec 30 17:32:01 1998
! | Thu Dec 31 17:32:01 1998
! | Sun Dec 31 17:32:01 2000
! | Mon Jan 01 17:32:01 2001
! | Thu Mar 15 02:14:05 2001
! | Thu Mar 15 03:14:04 2001
! | Thu Mar 15 08:14:01 2001
! | Thu Mar 15 12:14:03 2001
! | Thu Mar 15 13:14:02 2001
! | Mon Dec 31 17:32:01 2001
! | Tue Jan 01 17:32:01 2002
! | Sun Sep 22 18:19:20 2002
! | Sun Feb 16 17:32:01 2098
! | infinity
! (65 rows)
!
! SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMP_TBL ORDER BY d1;
! 64 | one_year
! ----+-----------------------------
! | -infinity
! | Mon Feb 16 17:32:01 0098 BC
! | Thu Feb 16 17:32:01 0096
! | Tue Feb 16 17:32:01 0596
! | Sun Feb 16 17:32:01 1096
! | Thu Feb 16 17:32:01 1696
! | Tue Feb 16 17:32:01 1796
! | Sun Feb 16 17:32:01 1896
! | Wed Jan 01 00:00:00 1969
! | Tue Feb 28 17:32:01 1995
! | Tue Feb 28 17:32:01 1995
! | Wed Mar 01 17:32:01 1995
! | Sat Dec 30 17:32:01 1995
! | Sun Dec 31 17:32:01 1995
! | Mon Jan 01 17:32:01 1996
! | Tue Jan 02 00:00:00 1996
! | Tue Jan 02 03:04:05 1996
! | Sat Feb 10 17:32:00 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01 1996
! | Sat Feb 10 17:32:01.4 1996
! | Sat Feb 10 17:32:01.5 1996
! | Sat Feb 10 17:32:01.6 1996
! | Sat Feb 10 17:32:02 1996
! | Sun Feb 11 17:32:01 1996
! | Mon Feb 12 17:32:01 1996
! | Tue Feb 13 17:32:01 1996
! | Wed Feb 14 17:32:01 1996
! | Thu Feb 15 17:32:01 1996
! | Fri Feb 16 17:32:01 1996
! | Fri Feb 16 17:32:01 1996
! | Wed Feb 28 17:32:01 1996
! | Fri Mar 01 17:32:01 1996
! | Mon Jun 10 17:32:01 1996
! | Mon Jun 10 18:32:01 1996
! | Mon Dec 30 17:32:01 1996
! | Tue Dec 31 17:32:01 1996
! | Thu Dec 31 17:32:01 1998
! | Fri Jan 01 17:32:01 1999
! | Mon Mar 15 02:14:05 1999
! | Mon Mar 15 03:14:04 1999
! | Mon Mar 15 08:14:01 1999
! | Mon Mar 15 12:14:03 1999
! | Mon Mar 15 13:14:02 1999
! | Fri Dec 31 17:32:01 1999
! | Sat Jan 01 17:32:01 2000
! | Fri Sep 22 18:19:20 2000
! | Thu Feb 16 17:32:01 2096
! | infinity
! (65 rows)
!
! SELECT timestamp with time zone '1996-03-01' - interval '1 second' AS "Feb 29";
! Feb 29
! ------------------------------
! Thu Feb 29 23:59:59 1996 PST
! (1 row)
!
! SELECT timestamp with time zone '1999-03-01' - interval '1 second' AS "Feb 28";
! Feb 28
! ------------------------------
! Sun Feb 28 23:59:59 1999 PST
! (1 row)
!
! SELECT timestamp with time zone '2000-03-01' - interval '1 second' AS "Feb 29";
! Feb 29
! ------------------------------
! Tue Feb 29 23:59:59 2000 PST
! (1 row)
!
! SELECT timestamp with time zone '1999-12-01' + interval '1 month - 1 second' AS "Dec 31";
! Dec 31
! ------------------------------
! Fri Dec 31 23:59:59 1999 PST
! (1 row)
!
! SELECT (timestamp with time zone 'today' = (timestamp with time zone 'yesterday' + interval '1 day')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp with time zone 'today' = (timestamp with time zone 'tomorrow' - interval '1 day')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp with time zone 'tomorrow' = (timestamp with time zone 'yesterday' + interval '2 days')) as "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp with time zone 'tomorrow' > 'now') as "True";
! True
! ------
! t
! (1 row)
!
! -- timestamp with time zone, interval arithmetic around DST change
! SET TIME ZONE 'CST7CDT';
! SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '1 day' as "Apr 3, 12:00";
! Apr 3, 12:00
! ------------------------------
! Sun Apr 03 12:00:00 2005 CDT
! (1 row)
!
! SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '24 hours' as "Apr 3, 13:00";
! Apr 3, 13:00
! ------------------------------
! Sun Apr 03 13:00:00 2005 CDT
! (1 row)
!
! SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '1 day' as "Apr 2, 12:00";
! Apr 2, 12:00
! ------------------------------
! Sat Apr 02 12:00:00 2005 CST
! (1 row)
!
! SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '24 hours' as "Apr 2, 11:00";
! Apr 2, 11:00
! ------------------------------
! Sat Apr 02 11:00:00 2005 CST
! (1 row)
!
! RESET TIME ZONE;
! SELECT timestamptz(date '1994-01-01', time '11:00') AS "Jan_01_1994_10am";
! Jan_01_1994_10am
! ------------------------------
! Sat Jan 01 11:00:00 1994 PST
! (1 row)
!
! SELECT timestamptz(date '1994-01-01', time '10:00') AS "Jan_01_1994_9am";
! Jan_01_1994_9am
! ------------------------------
! Sat Jan 01 10:00:00 1994 PST
! (1 row)
!
! SELECT timestamptz(date '1994-01-01', time with time zone '11:00-8') AS "Jan_01_1994_11am";
! Jan_01_1994_11am
! ------------------------------
! Sat Jan 01 11:00:00 1994 PST
! (1 row)
!
! SELECT timestamptz(date '1994-01-01', time with time zone '10:00-8') AS "Jan_01_1994_10am";
! Jan_01_1994_10am
! ------------------------------
! Sat Jan 01 10:00:00 1994 PST
! (1 row)
!
! SELECT timestamptz(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_8am";
! Jan_01_1994_8am
! ------------------------------
! Sat Jan 01 08:00:00 1994 PST
! (1 row)
!
! SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL ORDER BY d1;
! 64 | one_year
! ----+---------------------------------
! | -infinity
! | Thu Feb 16 17:32:01 0096 PST BC
! | Sun Feb 16 17:32:01 0098 PST
! | Fri Feb 16 17:32:01 0598 PST
! | Wed Feb 16 17:32:01 1098 PST
! | Sun Feb 16 17:32:01 1698 PST
! | Fri Feb 16 17:32:01 1798 PST
! | Wed Feb 16 17:32:01 1898 PST
! | Thu Dec 31 16:00:00 1970 PST
! | Fri Feb 28 17:32:01 1997 PST
! | Fri Feb 28 17:32:01 1997 PST
! | Sat Mar 01 17:32:01 1997 PST
! | Tue Dec 30 17:32:01 1997 PST
! | Wed Dec 31 17:32:01 1997 PST
! | Thu Jan 01 17:32:01 1998 PST
! | Fri Jan 02 00:00:00 1998 PST
! | Fri Jan 02 03:04:05 1998 PST
! | Tue Feb 10 09:32:01 1998 PST
! | Tue Feb 10 09:32:01 1998 PST
! | Tue Feb 10 09:32:01 1998 PST
! | Tue Feb 10 14:32:01 1998 PST
! | Tue Feb 10 17:32:00 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01.4 1998 PST
! | Tue Feb 10 17:32:01.5 1998 PST
! | Tue Feb 10 17:32:01.6 1998 PST
! | Tue Feb 10 17:32:02 1998 PST
! | Wed Feb 11 17:32:01 1998 PST
! | Thu Feb 12 17:32:01 1998 PST
! | Fri Feb 13 17:32:01 1998 PST
! | Sat Feb 14 17:32:01 1998 PST
! | Sun Feb 15 17:32:01 1998 PST
! | Mon Feb 16 17:32:01 1998 PST
! | Mon Feb 16 17:32:01 1998 PST
! | Sat Feb 28 17:32:01 1998 PST
! | Sun Mar 01 17:32:01 1998 PST
! | Wed Jun 10 17:32:01 1998 PDT
! | Wed Jun 10 18:32:01 1998 PDT
! | Fri Jul 10 14:32:01 1998 PDT
! | Wed Dec 30 17:32:01 1998 PST
! | Thu Dec 31 17:32:01 1998 PST
! | Sun Dec 31 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST
! | Thu Mar 15 01:14:05 2001 PST
! | Thu Mar 15 02:14:03 2001 PST
! | Thu Mar 15 03:14:04 2001 PST
! | Thu Mar 15 04:14:02 2001 PST
! | Thu Mar 15 08:14:01 2001 PST
! | Mon Dec 31 17:32:01 2001 PST
! | Tue Jan 01 17:32:01 2002 PST
! | Sun Sep 22 18:19:20 2002 PDT
! | Sun Feb 16 17:32:01 2098 PST
! | infinity
! (66 rows)
!
! SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL ORDER BY d1;
! 64 | one_year
! ----+---------------------------------
! | -infinity
! | Mon Feb 16 17:32:01 0098 PST BC
! | Thu Feb 16 17:32:01 0096 PST
! | Tue Feb 16 17:32:01 0596 PST
! | Sun Feb 16 17:32:01 1096 PST
! | Thu Feb 16 17:32:01 1696 PST
! | Tue Feb 16 17:32:01 1796 PST
! | Sun Feb 16 17:32:01 1896 PST
! | Tue Dec 31 16:00:00 1968 PST
! | Tue Feb 28 17:32:01 1995 PST
! | Tue Feb 28 17:32:01 1995 PST
! | Wed Mar 01 17:32:01 1995 PST
! | Sat Dec 30 17:32:01 1995 PST
! | Sun Dec 31 17:32:01 1995 PST
! | Mon Jan 01 17:32:01 1996 PST
! | Tue Jan 02 00:00:00 1996 PST
! | Tue Jan 02 03:04:05 1996 PST
! | Sat Feb 10 09:32:01 1996 PST
! | Sat Feb 10 09:32:01 1996 PST
! | Sat Feb 10 09:32:01 1996 PST
! | Sat Feb 10 14:32:01 1996 PST
! | Sat Feb 10 17:32:00 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01.4 1996 PST
! | Sat Feb 10 17:32:01.5 1996 PST
! | Sat Feb 10 17:32:01.6 1996 PST
! | Sat Feb 10 17:32:02 1996 PST
! | Sun Feb 11 17:32:01 1996 PST
! | Mon Feb 12 17:32:01 1996 PST
! | Tue Feb 13 17:32:01 1996 PST
! | Wed Feb 14 17:32:01 1996 PST
! | Thu Feb 15 17:32:01 1996 PST
! | Fri Feb 16 17:32:01 1996 PST
! | Fri Feb 16 17:32:01 1996 PST
! | Wed Feb 28 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST
! | Mon Jun 10 17:32:01 1996 PDT
! | Mon Jun 10 18:32:01 1996 PDT
! | Wed Jul 10 14:32:01 1996 PDT
! | Mon Dec 30 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST
! | Thu Dec 31 17:32:01 1998 PST
! | Fri Jan 01 17:32:01 1999 PST
! | Mon Mar 15 01:14:05 1999 PST
! | Mon Mar 15 02:14:03 1999 PST
! | Mon Mar 15 03:14:04 1999 PST
! | Mon Mar 15 04:14:02 1999 PST
! | Mon Mar 15 08:14:01 1999 PST
! | Fri Dec 31 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST
! | Fri Sep 22 18:19:20 2000 PDT
! | Thu Feb 16 17:32:01 2096 PST
! | infinity
! (66 rows)
!
! --
! -- time, interval arithmetic
! --
! SELECT CAST(time '01:02' AS interval) AS "+01:02";
! +01:02
! -----------------
! @ 1 hour 2 mins
! (1 row)
!
! SELECT CAST(interval '02:03' AS time) AS "02:03:00";
! 02:03:00
! ----------
! 02:03:00
! (1 row)
!
! SELECT time '01:30' + interval '02:01' AS "03:31:00";
! 03:31:00
! ----------
! 03:31:00
! (1 row)
!
! SELECT time '01:30' - interval '02:01' AS "23:29:00";
! 23:29:00
! ----------
! 23:29:00
! (1 row)
!
! SELECT time '02:30' + interval '36:01' AS "14:31:00";
! 14:31:00
! ----------
! 14:31:00
! (1 row)
!
! SELECT time '03:30' + interval '1 month 04:01' AS "07:31:00";
! 07:31:00
! ----------
! 07:31:00
! (1 row)
!
! SELECT CAST(time with time zone '01:02-08' AS interval) AS "+00:01";
! ERROR: cannot cast type time with time zone to interval
! LINE 1: SELECT CAST(time with time zone '01:02-08' AS interval) AS "...
! ^
! SELECT CAST(interval '02:03' AS time with time zone) AS "02:03:00-08";
! ERROR: cannot cast type interval to time with time zone
! LINE 1: SELECT CAST(interval '02:03' AS time with time zone) AS "02:...
! ^
! SELECT time with time zone '01:30-08' - interval '02:01' AS "23:29:00-08";
! 23:29:00-08
! -------------
! 23:29:00-08
! (1 row)
!
! SELECT time with time zone '02:30-08' + interval '36:01' AS "14:31:00-08";
! 14:31:00-08
! -------------
! 14:31:00-08
! (1 row)
!
! -- These two tests cannot be used because they default to current timezone,
! -- which may be either -08 or -07 depending on the time of year.
! -- SELECT time with time zone '01:30' + interval '02:01' AS "03:31:00-08";
! -- SELECT time with time zone '03:30' + interval '1 month 04:01' AS "07:31:00-08";
! -- Try the following two tests instead, as a poor substitute
! SELECT CAST(CAST(date 'today' + time with time zone '05:30'
! + interval '02:01' AS time with time zone) AS time) AS "07:31:00";
! 07:31:00
! ----------
! 07:31:00
! (1 row)
!
! SELECT CAST(cast(date 'today' + time with time zone '03:30'
! + interval '1 month 04:01' as timestamp without time zone) AS time) AS "07:31:00";
! 07:31:00
! ----------
! 07:31:00
! (1 row)
!
! SELECT t.d1 AS t, i.f1 AS i, t.d1 + i.f1 AS "add", t.d1 - i.f1 AS "subtract"
! FROM TIMESTAMP_TBL t, INTERVAL_TBL i
! WHERE t.d1 BETWEEN '1990-01-01' AND '2001-01-01'
! AND i.f1 BETWEEN '00:00' AND '23:00'
! ORDER BY 1,2;
! t | i | add | subtract
! ----------------------------+-----------+----------------------------+----------------------------
! Wed Feb 28 17:32:01 1996 | @ 1 min | Wed Feb 28 17:33:01 1996 | Wed Feb 28 17:31:01 1996
! Wed Feb 28 17:32:01 1996 | @ 5 hours | Wed Feb 28 22:32:01 1996 | Wed Feb 28 12:32:01 1996
! Thu Feb 29 17:32:01 1996 | @ 1 min | Thu Feb 29 17:33:01 1996 | Thu Feb 29 17:31:01 1996
! Thu Feb 29 17:32:01 1996 | @ 5 hours | Thu Feb 29 22:32:01 1996 | Thu Feb 29 12:32:01 1996
! Fri Mar 01 17:32:01 1996 | @ 1 min | Fri Mar 01 17:33:01 1996 | Fri Mar 01 17:31:01 1996
! Fri Mar 01 17:32:01 1996 | @ 5 hours | Fri Mar 01 22:32:01 1996 | Fri Mar 01 12:32:01 1996
! Mon Dec 30 17:32:01 1996 | @ 1 min | Mon Dec 30 17:33:01 1996 | Mon Dec 30 17:31:01 1996
! Mon Dec 30 17:32:01 1996 | @ 5 hours | Mon Dec 30 22:32:01 1996 | Mon Dec 30 12:32:01 1996
! Tue Dec 31 17:32:01 1996 | @ 1 min | Tue Dec 31 17:33:01 1996 | Tue Dec 31 17:31:01 1996
! Tue Dec 31 17:32:01 1996 | @ 5 hours | Tue Dec 31 22:32:01 1996 | Tue Dec 31 12:32:01 1996
! Wed Jan 01 17:32:01 1997 | @ 1 min | Wed Jan 01 17:33:01 1997 | Wed Jan 01 17:31:01 1997
! Wed Jan 01 17:32:01 1997 | @ 5 hours | Wed Jan 01 22:32:01 1997 | Wed Jan 01 12:32:01 1997
! Thu Jan 02 00:00:00 1997 | @ 1 min | Thu Jan 02 00:01:00 1997 | Wed Jan 01 23:59:00 1997
! Thu Jan 02 00:00:00 1997 | @ 5 hours | Thu Jan 02 05:00:00 1997 | Wed Jan 01 19:00:00 1997
! Thu Jan 02 03:04:05 1997 | @ 1 min | Thu Jan 02 03:05:05 1997 | Thu Jan 02 03:03:05 1997
! Thu Jan 02 03:04:05 1997 | @ 5 hours | Thu Jan 02 08:04:05 1997 | Wed Jan 01 22:04:05 1997
! Mon Feb 10 17:32:00 1997 | @ 1 min | Mon Feb 10 17:33:00 1997 | Mon Feb 10 17:31:00 1997
! Mon Feb 10 17:32:00 1997 | @ 5 hours | Mon Feb 10 22:32:00 1997 | Mon Feb 10 12:32:00 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 1 min | Mon Feb 10 17:33:01 1997 | Mon Feb 10 17:31:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01 1997 | @ 5 hours | Mon Feb 10 22:32:01 1997 | Mon Feb 10 12:32:01 1997
! Mon Feb 10 17:32:01.4 1997 | @ 1 min | Mon Feb 10 17:33:01.4 1997 | Mon Feb 10 17:31:01.4 1997
! Mon Feb 10 17:32:01.4 1997 | @ 5 hours | Mon Feb 10 22:32:01.4 1997 | Mon Feb 10 12:32:01.4 1997
! Mon Feb 10 17:32:01.5 1997 | @ 1 min | Mon Feb 10 17:33:01.5 1997 | Mon Feb 10 17:31:01.5 1997
! Mon Feb 10 17:32:01.5 1997 | @ 5 hours | Mon Feb 10 22:32:01.5 1997 | Mon Feb 10 12:32:01.5 1997
! Mon Feb 10 17:32:01.6 1997 | @ 1 min | Mon Feb 10 17:33:01.6 1997 | Mon Feb 10 17:31:01.6 1997
! Mon Feb 10 17:32:01.6 1997 | @ 5 hours | Mon Feb 10 22:32:01.6 1997 | Mon Feb 10 12:32:01.6 1997
! Mon Feb 10 17:32:02 1997 | @ 1 min | Mon Feb 10 17:33:02 1997 | Mon Feb 10 17:31:02 1997
! Mon Feb 10 17:32:02 1997 | @ 5 hours | Mon Feb 10 22:32:02 1997 | Mon Feb 10 12:32:02 1997
! Tue Feb 11 17:32:01 1997 | @ 1 min | Tue Feb 11 17:33:01 1997 | Tue Feb 11 17:31:01 1997
! Tue Feb 11 17:32:01 1997 | @ 5 hours | Tue Feb 11 22:32:01 1997 | Tue Feb 11 12:32:01 1997
! Wed Feb 12 17:32:01 1997 | @ 1 min | Wed Feb 12 17:33:01 1997 | Wed Feb 12 17:31:01 1997
! Wed Feb 12 17:32:01 1997 | @ 5 hours | Wed Feb 12 22:32:01 1997 | Wed Feb 12 12:32:01 1997
! Thu Feb 13 17:32:01 1997 | @ 1 min | Thu Feb 13 17:33:01 1997 | Thu Feb 13 17:31:01 1997
! Thu Feb 13 17:32:01 1997 | @ 5 hours | Thu Feb 13 22:32:01 1997 | Thu Feb 13 12:32:01 1997
! Fri Feb 14 17:32:01 1997 | @ 1 min | Fri Feb 14 17:33:01 1997 | Fri Feb 14 17:31:01 1997
! Fri Feb 14 17:32:01 1997 | @ 5 hours | Fri Feb 14 22:32:01 1997 | Fri Feb 14 12:32:01 1997
! Sat Feb 15 17:32:01 1997 | @ 1 min | Sat Feb 15 17:33:01 1997 | Sat Feb 15 17:31:01 1997
! Sat Feb 15 17:32:01 1997 | @ 5 hours | Sat Feb 15 22:32:01 1997 | Sat Feb 15 12:32:01 1997
! Sun Feb 16 17:32:01 1997 | @ 1 min | Sun Feb 16 17:33:01 1997 | Sun Feb 16 17:31:01 1997
! Sun Feb 16 17:32:01 1997 | @ 1 min | Sun Feb 16 17:33:01 1997 | Sun Feb 16 17:31:01 1997
! Sun Feb 16 17:32:01 1997 | @ 5 hours | Sun Feb 16 22:32:01 1997 | Sun Feb 16 12:32:01 1997
! Sun Feb 16 17:32:01 1997 | @ 5 hours | Sun Feb 16 22:32:01 1997 | Sun Feb 16 12:32:01 1997
! Fri Feb 28 17:32:01 1997 | @ 1 min | Fri Feb 28 17:33:01 1997 | Fri Feb 28 17:31:01 1997
! Fri Feb 28 17:32:01 1997 | @ 5 hours | Fri Feb 28 22:32:01 1997 | Fri Feb 28 12:32:01 1997
! Sat Mar 01 17:32:01 1997 | @ 1 min | Sat Mar 01 17:33:01 1997 | Sat Mar 01 17:31:01 1997
! Sat Mar 01 17:32:01 1997 | @ 5 hours | Sat Mar 01 22:32:01 1997 | Sat Mar 01 12:32:01 1997
! Tue Jun 10 17:32:01 1997 | @ 1 min | Tue Jun 10 17:33:01 1997 | Tue Jun 10 17:31:01 1997
! Tue Jun 10 17:32:01 1997 | @ 5 hours | Tue Jun 10 22:32:01 1997 | Tue Jun 10 12:32:01 1997
! Tue Jun 10 18:32:01 1997 | @ 1 min | Tue Jun 10 18:33:01 1997 | Tue Jun 10 18:31:01 1997
! Tue Jun 10 18:32:01 1997 | @ 5 hours | Tue Jun 10 23:32:01 1997 | Tue Jun 10 13:32:01 1997
! Tue Dec 30 17:32:01 1997 | @ 1 min | Tue Dec 30 17:33:01 1997 | Tue Dec 30 17:31:01 1997
! Tue Dec 30 17:32:01 1997 | @ 5 hours | Tue Dec 30 22:32:01 1997 | Tue Dec 30 12:32:01 1997
! Wed Dec 31 17:32:01 1997 | @ 1 min | Wed Dec 31 17:33:01 1997 | Wed Dec 31 17:31:01 1997
! Wed Dec 31 17:32:01 1997 | @ 5 hours | Wed Dec 31 22:32:01 1997 | Wed Dec 31 12:32:01 1997
! Fri Dec 31 17:32:01 1999 | @ 1 min | Fri Dec 31 17:33:01 1999 | Fri Dec 31 17:31:01 1999
! Fri Dec 31 17:32:01 1999 | @ 5 hours | Fri Dec 31 22:32:01 1999 | Fri Dec 31 12:32:01 1999
! Sat Jan 01 17:32:01 2000 | @ 1 min | Sat Jan 01 17:33:01 2000 | Sat Jan 01 17:31:01 2000
! Sat Jan 01 17:32:01 2000 | @ 5 hours | Sat Jan 01 22:32:01 2000 | Sat Jan 01 12:32:01 2000
! Wed Mar 15 02:14:05 2000 | @ 1 min | Wed Mar 15 02:15:05 2000 | Wed Mar 15 02:13:05 2000
! Wed Mar 15 02:14:05 2000 | @ 5 hours | Wed Mar 15 07:14:05 2000 | Tue Mar 14 21:14:05 2000
! Wed Mar 15 03:14:04 2000 | @ 1 min | Wed Mar 15 03:15:04 2000 | Wed Mar 15 03:13:04 2000
! Wed Mar 15 03:14:04 2000 | @ 5 hours | Wed Mar 15 08:14:04 2000 | Tue Mar 14 22:14:04 2000
! Wed Mar 15 08:14:01 2000 | @ 1 min | Wed Mar 15 08:15:01 2000 | Wed Mar 15 08:13:01 2000
! Wed Mar 15 08:14:01 2000 | @ 5 hours | Wed Mar 15 13:14:01 2000 | Wed Mar 15 03:14:01 2000
! Wed Mar 15 12:14:03 2000 | @ 1 min | Wed Mar 15 12:15:03 2000 | Wed Mar 15 12:13:03 2000
! Wed Mar 15 12:14:03 2000 | @ 5 hours | Wed Mar 15 17:14:03 2000 | Wed Mar 15 07:14:03 2000
! Wed Mar 15 13:14:02 2000 | @ 1 min | Wed Mar 15 13:15:02 2000 | Wed Mar 15 13:13:02 2000
! Wed Mar 15 13:14:02 2000 | @ 5 hours | Wed Mar 15 18:14:02 2000 | Wed Mar 15 08:14:02 2000
! Sun Dec 31 17:32:01 2000 | @ 1 min | Sun Dec 31 17:33:01 2000 | Sun Dec 31 17:31:01 2000
! Sun Dec 31 17:32:01 2000 | @ 5 hours | Sun Dec 31 22:32:01 2000 | Sun Dec 31 12:32:01 2000
! (104 rows)
!
! SELECT t.f1 AS t, i.f1 AS i, t.f1 + i.f1 AS "add", t.f1 - i.f1 AS "subtract"
! FROM TIME_TBL t, INTERVAL_TBL i
! ORDER BY 1,2;
! t | i | add | subtract
! -------------+-------------------------------+-------------+-------------
! 00:00:00 | @ 14 secs ago | 23:59:46 | 00:00:14
! 00:00:00 | @ 1 min | 00:01:00 | 23:59:00
! 00:00:00 | @ 5 hours | 05:00:00 | 19:00:00
! 00:00:00 | @ 1 day 2 hours 3 mins 4 secs | 02:03:04 | 21:56:56
! 00:00:00 | @ 10 days | 00:00:00 | 00:00:00
! 00:00:00 | @ 3 mons | 00:00:00 | 00:00:00
! 00:00:00 | @ 5 mons | 00:00:00 | 00:00:00
! 00:00:00 | @ 5 mons 12 hours | 12:00:00 | 12:00:00
! 00:00:00 | @ 6 years | 00:00:00 | 00:00:00
! 00:00:00 | @ 34 years | 00:00:00 | 00:00:00
! 01:00:00 | @ 14 secs ago | 00:59:46 | 01:00:14
! 01:00:00 | @ 1 min | 01:01:00 | 00:59:00
! 01:00:00 | @ 5 hours | 06:00:00 | 20:00:00
! 01:00:00 | @ 1 day 2 hours 3 mins 4 secs | 03:03:04 | 22:56:56
! 01:00:00 | @ 10 days | 01:00:00 | 01:00:00
! 01:00:00 | @ 3 mons | 01:00:00 | 01:00:00
! 01:00:00 | @ 5 mons | 01:00:00 | 01:00:00
! 01:00:00 | @ 5 mons 12 hours | 13:00:00 | 13:00:00
! 01:00:00 | @ 6 years | 01:00:00 | 01:00:00
! 01:00:00 | @ 34 years | 01:00:00 | 01:00:00
! 02:03:00 | @ 14 secs ago | 02:02:46 | 02:03:14
! 02:03:00 | @ 1 min | 02:04:00 | 02:02:00
! 02:03:00 | @ 5 hours | 07:03:00 | 21:03:00
! 02:03:00 | @ 1 day 2 hours 3 mins 4 secs | 04:06:04 | 23:59:56
! 02:03:00 | @ 10 days | 02:03:00 | 02:03:00
! 02:03:00 | @ 3 mons | 02:03:00 | 02:03:00
! 02:03:00 | @ 5 mons | 02:03:00 | 02:03:00
! 02:03:00 | @ 5 mons 12 hours | 14:03:00 | 14:03:00
! 02:03:00 | @ 6 years | 02:03:00 | 02:03:00
! 02:03:00 | @ 34 years | 02:03:00 | 02:03:00
! 11:59:00 | @ 14 secs ago | 11:58:46 | 11:59:14
! 11:59:00 | @ 1 min | 12:00:00 | 11:58:00
! 11:59:00 | @ 5 hours | 16:59:00 | 06:59:00
! 11:59:00 | @ 1 day 2 hours 3 mins 4 secs | 14:02:04 | 09:55:56
! 11:59:00 | @ 10 days | 11:59:00 | 11:59:00
! 11:59:00 | @ 3 mons | 11:59:00 | 11:59:00
! 11:59:00 | @ 5 mons | 11:59:00 | 11:59:00
! 11:59:00 | @ 5 mons 12 hours | 23:59:00 | 23:59:00
! 11:59:00 | @ 6 years | 11:59:00 | 11:59:00
! 11:59:00 | @ 34 years | 11:59:00 | 11:59:00
! 12:00:00 | @ 14 secs ago | 11:59:46 | 12:00:14
! 12:00:00 | @ 1 min | 12:01:00 | 11:59:00
! 12:00:00 | @ 5 hours | 17:00:00 | 07:00:00
! 12:00:00 | @ 1 day 2 hours 3 mins 4 secs | 14:03:04 | 09:56:56
! 12:00:00 | @ 10 days | 12:00:00 | 12:00:00
! 12:00:00 | @ 3 mons | 12:00:00 | 12:00:00
! 12:00:00 | @ 5 mons | 12:00:00 | 12:00:00
! 12:00:00 | @ 5 mons 12 hours | 00:00:00 | 00:00:00
! 12:00:00 | @ 6 years | 12:00:00 | 12:00:00
! 12:00:00 | @ 34 years | 12:00:00 | 12:00:00
! 12:01:00 | @ 14 secs ago | 12:00:46 | 12:01:14
! 12:01:00 | @ 1 min | 12:02:00 | 12:00:00
! 12:01:00 | @ 5 hours | 17:01:00 | 07:01:00
! 12:01:00 | @ 1 day 2 hours 3 mins 4 secs | 14:04:04 | 09:57:56
! 12:01:00 | @ 10 days | 12:01:00 | 12:01:00
! 12:01:00 | @ 3 mons | 12:01:00 | 12:01:00
! 12:01:00 | @ 5 mons | 12:01:00 | 12:01:00
! 12:01:00 | @ 5 mons 12 hours | 00:01:00 | 00:01:00
! 12:01:00 | @ 6 years | 12:01:00 | 12:01:00
! 12:01:00 | @ 34 years | 12:01:00 | 12:01:00
! 15:36:39 | @ 14 secs ago | 15:36:25 | 15:36:53
! 15:36:39 | @ 14 secs ago | 15:36:25 | 15:36:53
! 15:36:39 | @ 1 min | 15:37:39 | 15:35:39
! 15:36:39 | @ 1 min | 15:37:39 | 15:35:39
! 15:36:39 | @ 5 hours | 20:36:39 | 10:36:39
! 15:36:39 | @ 5 hours | 20:36:39 | 10:36:39
! 15:36:39 | @ 1 day 2 hours 3 mins 4 secs | 17:39:43 | 13:33:35
! 15:36:39 | @ 1 day 2 hours 3 mins 4 secs | 17:39:43 | 13:33:35
! 15:36:39 | @ 10 days | 15:36:39 | 15:36:39
! 15:36:39 | @ 10 days | 15:36:39 | 15:36:39
! 15:36:39 | @ 3 mons | 15:36:39 | 15:36:39
! 15:36:39 | @ 3 mons | 15:36:39 | 15:36:39
! 15:36:39 | @ 5 mons | 15:36:39 | 15:36:39
! 15:36:39 | @ 5 mons | 15:36:39 | 15:36:39
! 15:36:39 | @ 5 mons 12 hours | 03:36:39 | 03:36:39
! 15:36:39 | @ 5 mons 12 hours | 03:36:39 | 03:36:39
! 15:36:39 | @ 6 years | 15:36:39 | 15:36:39
! 15:36:39 | @ 6 years | 15:36:39 | 15:36:39
! 15:36:39 | @ 34 years | 15:36:39 | 15:36:39
! 15:36:39 | @ 34 years | 15:36:39 | 15:36:39
! 23:59:00 | @ 14 secs ago | 23:58:46 | 23:59:14
! 23:59:00 | @ 1 min | 00:00:00 | 23:58:00
! 23:59:00 | @ 5 hours | 04:59:00 | 18:59:00
! 23:59:00 | @ 1 day 2 hours 3 mins 4 secs | 02:02:04 | 21:55:56
! 23:59:00 | @ 10 days | 23:59:00 | 23:59:00
! 23:59:00 | @ 3 mons | 23:59:00 | 23:59:00
! 23:59:00 | @ 5 mons | 23:59:00 | 23:59:00
! 23:59:00 | @ 5 mons 12 hours | 11:59:00 | 11:59:00
! 23:59:00 | @ 6 years | 23:59:00 | 23:59:00
! 23:59:00 | @ 34 years | 23:59:00 | 23:59:00
! 23:59:59.99 | @ 14 secs ago | 23:59:45.99 | 00:00:13.99
! 23:59:59.99 | @ 1 min | 00:00:59.99 | 23:58:59.99
! 23:59:59.99 | @ 5 hours | 04:59:59.99 | 18:59:59.99
! 23:59:59.99 | @ 1 day 2 hours 3 mins 4 secs | 02:03:03.99 | 21:56:55.99
! 23:59:59.99 | @ 10 days | 23:59:59.99 | 23:59:59.99
! 23:59:59.99 | @ 3 mons | 23:59:59.99 | 23:59:59.99
! 23:59:59.99 | @ 5 mons | 23:59:59.99 | 23:59:59.99
! 23:59:59.99 | @ 5 mons 12 hours | 11:59:59.99 | 11:59:59.99
! 23:59:59.99 | @ 6 years | 23:59:59.99 | 23:59:59.99
! 23:59:59.99 | @ 34 years | 23:59:59.99 | 23:59:59.99
! (100 rows)
!
! SELECT t.f1 AS t, i.f1 AS i, t.f1 + i.f1 AS "add", t.f1 - i.f1 AS "subtract"
! FROM TIMETZ_TBL t, INTERVAL_TBL i
! ORDER BY 1,2;
! t | i | add | subtract
! ----------------+-------------------------------+----------------+----------------
! 00:01:00-07 | @ 14 secs ago | 00:00:46-07 | 00:01:14-07
! 00:01:00-07 | @ 1 min | 00:02:00-07 | 00:00:00-07
! 00:01:00-07 | @ 5 hours | 05:01:00-07 | 19:01:00-07
! 00:01:00-07 | @ 1 day 2 hours 3 mins 4 secs | 02:04:04-07 | 21:57:56-07
! 00:01:00-07 | @ 10 days | 00:01:00-07 | 00:01:00-07
! 00:01:00-07 | @ 3 mons | 00:01:00-07 | 00:01:00-07
! 00:01:00-07 | @ 5 mons | 00:01:00-07 | 00:01:00-07
! 00:01:00-07 | @ 5 mons 12 hours | 12:01:00-07 | 12:01:00-07
! 00:01:00-07 | @ 6 years | 00:01:00-07 | 00:01:00-07
! 00:01:00-07 | @ 34 years | 00:01:00-07 | 00:01:00-07
! 01:00:00-07 | @ 14 secs ago | 00:59:46-07 | 01:00:14-07
! 01:00:00-07 | @ 1 min | 01:01:00-07 | 00:59:00-07
! 01:00:00-07 | @ 5 hours | 06:00:00-07 | 20:00:00-07
! 01:00:00-07 | @ 1 day 2 hours 3 mins 4 secs | 03:03:04-07 | 22:56:56-07
! 01:00:00-07 | @ 10 days | 01:00:00-07 | 01:00:00-07
! 01:00:00-07 | @ 3 mons | 01:00:00-07 | 01:00:00-07
! 01:00:00-07 | @ 5 mons | 01:00:00-07 | 01:00:00-07
! 01:00:00-07 | @ 5 mons 12 hours | 13:00:00-07 | 13:00:00-07
! 01:00:00-07 | @ 6 years | 01:00:00-07 | 01:00:00-07
! 01:00:00-07 | @ 34 years | 01:00:00-07 | 01:00:00-07
! 02:03:00-07 | @ 14 secs ago | 02:02:46-07 | 02:03:14-07
! 02:03:00-07 | @ 1 min | 02:04:00-07 | 02:02:00-07
! 02:03:00-07 | @ 5 hours | 07:03:00-07 | 21:03:00-07
! 02:03:00-07 | @ 1 day 2 hours 3 mins 4 secs | 04:06:04-07 | 23:59:56-07
! 02:03:00-07 | @ 10 days | 02:03:00-07 | 02:03:00-07
! 02:03:00-07 | @ 3 mons | 02:03:00-07 | 02:03:00-07
! 02:03:00-07 | @ 5 mons | 02:03:00-07 | 02:03:00-07
! 02:03:00-07 | @ 5 mons 12 hours | 14:03:00-07 | 14:03:00-07
! 02:03:00-07 | @ 6 years | 02:03:00-07 | 02:03:00-07
! 02:03:00-07 | @ 34 years | 02:03:00-07 | 02:03:00-07
! 08:08:00-04 | @ 14 secs ago | 08:07:46-04 | 08:08:14-04
! 08:08:00-04 | @ 1 min | 08:09:00-04 | 08:07:00-04
! 08:08:00-04 | @ 5 hours | 13:08:00-04 | 03:08:00-04
! 08:08:00-04 | @ 1 day 2 hours 3 mins 4 secs | 10:11:04-04 | 06:04:56-04
! 08:08:00-04 | @ 10 days | 08:08:00-04 | 08:08:00-04
! 08:08:00-04 | @ 3 mons | 08:08:00-04 | 08:08:00-04
! 08:08:00-04 | @ 5 mons | 08:08:00-04 | 08:08:00-04
! 08:08:00-04 | @ 5 mons 12 hours | 20:08:00-04 | 20:08:00-04
! 08:08:00-04 | @ 6 years | 08:08:00-04 | 08:08:00-04
! 08:08:00-04 | @ 34 years | 08:08:00-04 | 08:08:00-04
! 07:07:00-08 | @ 14 secs ago | 07:06:46-08 | 07:07:14-08
! 07:07:00-08 | @ 1 min | 07:08:00-08 | 07:06:00-08
! 07:07:00-08 | @ 5 hours | 12:07:00-08 | 02:07:00-08
! 07:07:00-08 | @ 1 day 2 hours 3 mins 4 secs | 09:10:04-08 | 05:03:56-08
! 07:07:00-08 | @ 10 days | 07:07:00-08 | 07:07:00-08
! 07:07:00-08 | @ 3 mons | 07:07:00-08 | 07:07:00-08
! 07:07:00-08 | @ 5 mons | 07:07:00-08 | 07:07:00-08
! 07:07:00-08 | @ 5 mons 12 hours | 19:07:00-08 | 19:07:00-08
! 07:07:00-08 | @ 6 years | 07:07:00-08 | 07:07:00-08
! 07:07:00-08 | @ 34 years | 07:07:00-08 | 07:07:00-08
! 11:59:00-07 | @ 14 secs ago | 11:58:46-07 | 11:59:14-07
! 11:59:00-07 | @ 1 min | 12:00:00-07 | 11:58:00-07
! 11:59:00-07 | @ 5 hours | 16:59:00-07 | 06:59:00-07
! 11:59:00-07 | @ 1 day 2 hours 3 mins 4 secs | 14:02:04-07 | 09:55:56-07
! 11:59:00-07 | @ 10 days | 11:59:00-07 | 11:59:00-07
! 11:59:00-07 | @ 3 mons | 11:59:00-07 | 11:59:00-07
! 11:59:00-07 | @ 5 mons | 11:59:00-07 | 11:59:00-07
! 11:59:00-07 | @ 5 mons 12 hours | 23:59:00-07 | 23:59:00-07
! 11:59:00-07 | @ 6 years | 11:59:00-07 | 11:59:00-07
! 11:59:00-07 | @ 34 years | 11:59:00-07 | 11:59:00-07
! 12:00:00-07 | @ 14 secs ago | 11:59:46-07 | 12:00:14-07
! 12:00:00-07 | @ 1 min | 12:01:00-07 | 11:59:00-07
! 12:00:00-07 | @ 5 hours | 17:00:00-07 | 07:00:00-07
! 12:00:00-07 | @ 1 day 2 hours 3 mins 4 secs | 14:03:04-07 | 09:56:56-07
! 12:00:00-07 | @ 10 days | 12:00:00-07 | 12:00:00-07
! 12:00:00-07 | @ 3 mons | 12:00:00-07 | 12:00:00-07
! 12:00:00-07 | @ 5 mons | 12:00:00-07 | 12:00:00-07
! 12:00:00-07 | @ 5 mons 12 hours | 00:00:00-07 | 00:00:00-07
! 12:00:00-07 | @ 6 years | 12:00:00-07 | 12:00:00-07
! 12:00:00-07 | @ 34 years | 12:00:00-07 | 12:00:00-07
! 12:01:00-07 | @ 14 secs ago | 12:00:46-07 | 12:01:14-07
! 12:01:00-07 | @ 1 min | 12:02:00-07 | 12:00:00-07
! 12:01:00-07 | @ 5 hours | 17:01:00-07 | 07:01:00-07
! 12:01:00-07 | @ 1 day 2 hours 3 mins 4 secs | 14:04:04-07 | 09:57:56-07
! 12:01:00-07 | @ 10 days | 12:01:00-07 | 12:01:00-07
! 12:01:00-07 | @ 3 mons | 12:01:00-07 | 12:01:00-07
! 12:01:00-07 | @ 5 mons | 12:01:00-07 | 12:01:00-07
! 12:01:00-07 | @ 5 mons 12 hours | 00:01:00-07 | 00:01:00-07
! 12:01:00-07 | @ 6 years | 12:01:00-07 | 12:01:00-07
! 12:01:00-07 | @ 34 years | 12:01:00-07 | 12:01:00-07
! 15:36:39-04 | @ 14 secs ago | 15:36:25-04 | 15:36:53-04
! 15:36:39-04 | @ 1 min | 15:37:39-04 | 15:35:39-04
! 15:36:39-04 | @ 5 hours | 20:36:39-04 | 10:36:39-04
! 15:36:39-04 | @ 1 day 2 hours 3 mins 4 secs | 17:39:43-04 | 13:33:35-04
! 15:36:39-04 | @ 10 days | 15:36:39-04 | 15:36:39-04
! 15:36:39-04 | @ 3 mons | 15:36:39-04 | 15:36:39-04
! 15:36:39-04 | @ 5 mons | 15:36:39-04 | 15:36:39-04
! 15:36:39-04 | @ 5 mons 12 hours | 03:36:39-04 | 03:36:39-04
! 15:36:39-04 | @ 6 years | 15:36:39-04 | 15:36:39-04
! 15:36:39-04 | @ 34 years | 15:36:39-04 | 15:36:39-04
! 15:36:39-05 | @ 14 secs ago | 15:36:25-05 | 15:36:53-05
! 15:36:39-05 | @ 1 min | 15:37:39-05 | 15:35:39-05
! 15:36:39-05 | @ 5 hours | 20:36:39-05 | 10:36:39-05
! 15:36:39-05 | @ 1 day 2 hours 3 mins 4 secs | 17:39:43-05 | 13:33:35-05
! 15:36:39-05 | @ 10 days | 15:36:39-05 | 15:36:39-05
! 15:36:39-05 | @ 3 mons | 15:36:39-05 | 15:36:39-05
! 15:36:39-05 | @ 5 mons | 15:36:39-05 | 15:36:39-05
! 15:36:39-05 | @ 5 mons 12 hours | 03:36:39-05 | 03:36:39-05
! 15:36:39-05 | @ 6 years | 15:36:39-05 | 15:36:39-05
! 15:36:39-05 | @ 34 years | 15:36:39-05 | 15:36:39-05
! 23:59:00-07 | @ 14 secs ago | 23:58:46-07 | 23:59:14-07
! 23:59:00-07 | @ 1 min | 00:00:00-07 | 23:58:00-07
! 23:59:00-07 | @ 5 hours | 04:59:00-07 | 18:59:00-07
! 23:59:00-07 | @ 1 day 2 hours 3 mins 4 secs | 02:02:04-07 | 21:55:56-07
! 23:59:00-07 | @ 10 days | 23:59:00-07 | 23:59:00-07
! 23:59:00-07 | @ 3 mons | 23:59:00-07 | 23:59:00-07
! 23:59:00-07 | @ 5 mons | 23:59:00-07 | 23:59:00-07
! 23:59:00-07 | @ 5 mons 12 hours | 11:59:00-07 | 11:59:00-07
! 23:59:00-07 | @ 6 years | 23:59:00-07 | 23:59:00-07
! 23:59:00-07 | @ 34 years | 23:59:00-07 | 23:59:00-07
! 23:59:59.99-07 | @ 14 secs ago | 23:59:45.99-07 | 00:00:13.99-07
! 23:59:59.99-07 | @ 1 min | 00:00:59.99-07 | 23:58:59.99-07
! 23:59:59.99-07 | @ 5 hours | 04:59:59.99-07 | 18:59:59.99-07
! 23:59:59.99-07 | @ 1 day 2 hours 3 mins 4 secs | 02:03:03.99-07 | 21:56:55.99-07
! 23:59:59.99-07 | @ 10 days | 23:59:59.99-07 | 23:59:59.99-07
! 23:59:59.99-07 | @ 3 mons | 23:59:59.99-07 | 23:59:59.99-07
! 23:59:59.99-07 | @ 5 mons | 23:59:59.99-07 | 23:59:59.99-07
! 23:59:59.99-07 | @ 5 mons 12 hours | 11:59:59.99-07 | 11:59:59.99-07
! 23:59:59.99-07 | @ 6 years | 23:59:59.99-07 | 23:59:59.99-07
! 23:59:59.99-07 | @ 34 years | 23:59:59.99-07 | 23:59:59.99-07
! (120 rows)
!
! -- SQL9x OVERLAPS operator
! -- test with time zone
! SELECT (timestamp with time zone '2000-11-27', timestamp with time zone '2000-11-28')
! OVERLAPS (timestamp with time zone '2000-11-27 12:00', timestamp with time zone '2000-11-30') AS "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp with time zone '2000-11-26', timestamp with time zone '2000-11-27')
! OVERLAPS (timestamp with time zone '2000-11-27 12:00', timestamp with time zone '2000-11-30') AS "False";
! False
! -------
! f
! (1 row)
!
! SELECT (timestamp with time zone '2000-11-27', timestamp with time zone '2000-11-28')
! OVERLAPS (timestamp with time zone '2000-11-27 12:00', interval '1 day') AS "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp with time zone '2000-11-27', interval '12 hours')
! OVERLAPS (timestamp with time zone '2000-11-27 12:00', timestamp with time zone '2000-11-30') AS "False";
! False
! -------
! f
! (1 row)
!
! SELECT (timestamp with time zone '2000-11-27', interval '12 hours')
! OVERLAPS (timestamp with time zone '2000-11-27', interval '12 hours') AS "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp with time zone '2000-11-27', interval '12 hours')
! OVERLAPS (timestamp with time zone '2000-11-27 12:00', interval '12 hours') AS "False";
! False
! -------
! f
! (1 row)
!
! -- test without time zone
! SELECT (timestamp without time zone '2000-11-27', timestamp without time zone '2000-11-28')
! OVERLAPS (timestamp without time zone '2000-11-27 12:00', timestamp without time zone '2000-11-30') AS "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone '2000-11-26', timestamp without time zone '2000-11-27')
! OVERLAPS (timestamp without time zone '2000-11-27 12:00', timestamp without time zone '2000-11-30') AS "False";
! False
! -------
! f
! (1 row)
!
! SELECT (timestamp without time zone '2000-11-27', timestamp without time zone '2000-11-28')
! OVERLAPS (timestamp without time zone '2000-11-27 12:00', interval '1 day') AS "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone '2000-11-27', interval '12 hours')
! OVERLAPS (timestamp without time zone '2000-11-27 12:00', timestamp without time zone '2000-11-30') AS "False";
! False
! -------
! f
! (1 row)
!
! SELECT (timestamp without time zone '2000-11-27', interval '12 hours')
! OVERLAPS (timestamp without time zone '2000-11-27', interval '12 hours') AS "True";
! True
! ------
! t
! (1 row)
!
! SELECT (timestamp without time zone '2000-11-27', interval '12 hours')
! OVERLAPS (timestamp without time zone '2000-11-27 12:00', interval '12 hours') AS "False";
! False
! -------
! f
! (1 row)
!
! -- test time and interval
! SELECT (time '00:00', time '01:00')
! OVERLAPS (time '00:30', time '01:30') AS "True";
! True
! ------
! t
! (1 row)
!
! SELECT (time '00:00', interval '1 hour')
! OVERLAPS (time '00:30', interval '1 hour') AS "True";
! True
! ------
! t
! (1 row)
!
! SELECT (time '00:00', interval '1 hour')
! OVERLAPS (time '01:30', interval '1 hour') AS "False";
! False
! -------
! f
! (1 row)
!
! -- SQL99 seems to want this to be false (and we conform to the spec).
! -- istm that this *should* return true, on the theory that time
! -- intervals can wrap around the day boundary - thomas 2001-09-25
! SELECT (time '00:00', interval '1 hour')
! OVERLAPS (time '01:30', interval '1 day') AS "False";
! False
! -------
! f
! (1 row)
!
! CREATE TABLE TEMP_TIMESTAMP (f1 timestamp with time zone);
! -- get some candidate input values
! INSERT INTO TEMP_TIMESTAMP (f1)
! SELECT d1 FROM TIMESTAMP_TBL
! WHERE d1 BETWEEN '13-jun-1957' AND '1-jan-1997'
! OR d1 BETWEEN '1-jan-1999' AND '1-jan-2010' ;
! SELECT '' AS "16", f1 AS "timestamp"
! FROM TEMP_TIMESTAMP
! ORDER BY "timestamp";
! 16 | timestamp
! ----+------------------------------
! | Thu Jan 01 00:00:00 1970 PST
! | Wed Feb 28 17:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST
! | Fri Dec 31 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST
! | Wed Mar 15 02:14:05 2000 PST
! | Wed Mar 15 03:14:04 2000 PST
! | Wed Mar 15 08:14:01 2000 PST
! | Wed Mar 15 12:14:03 2000 PST
! | Wed Mar 15 13:14:02 2000 PST
! | Sun Dec 31 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST
! | Sat Sep 22 18:19:20 2001 PDT
! (16 rows)
!
! SELECT '' AS "160", d.f1 AS "timestamp", t.f1 AS "interval", d.f1 + t.f1 AS plus
! FROM TEMP_TIMESTAMP d, INTERVAL_TBL t
! ORDER BY plus, "timestamp", "interval";
! 160 | timestamp | interval | plus
! -----+------------------------------+-------------------------------+------------------------------
! | Thu Jan 01 00:00:00 1970 PST | @ 14 secs ago | Wed Dec 31 23:59:46 1969 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 1 min | Thu Jan 01 00:01:00 1970 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 5 hours | Thu Jan 01 05:00:00 1970 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 1 day 2 hours 3 mins 4 secs | Fri Jan 02 02:03:04 1970 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 10 days | Sun Jan 11 00:00:00 1970 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 3 mons | Wed Apr 01 00:00:00 1970 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 5 mons | Mon Jun 01 00:00:00 1970 PDT
! | Thu Jan 01 00:00:00 1970 PST | @ 5 mons 12 hours | Mon Jun 01 12:00:00 1970 PDT
! | Thu Jan 01 00:00:00 1970 PST | @ 6 years | Thu Jan 01 00:00:00 1976 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 14 secs ago | Wed Feb 28 17:31:47 1996 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 1 min | Wed Feb 28 17:33:01 1996 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 5 hours | Wed Feb 28 22:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 14 secs ago | Thu Feb 29 17:31:47 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 1 min | Thu Feb 29 17:33:01 1996 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 1 day 2 hours 3 mins 4 secs | Thu Feb 29 19:35:05 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 5 hours | Thu Feb 29 22:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 14 secs ago | Fri Mar 01 17:31:47 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 1 min | Fri Mar 01 17:33:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 1 day 2 hours 3 mins 4 secs | Fri Mar 01 19:35:05 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 5 hours | Fri Mar 01 22:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 1 day 2 hours 3 mins 4 secs | Sat Mar 02 19:35:05 1996 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 10 days | Sat Mar 09 17:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 10 days | Sun Mar 10 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 10 days | Mon Mar 11 17:32:01 1996 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 3 mons | Tue May 28 17:32:01 1996 PDT
! | Thu Feb 29 17:32:01 1996 PST | @ 3 mons | Wed May 29 17:32:01 1996 PDT
! | Fri Mar 01 17:32:01 1996 PST | @ 3 mons | Sat Jun 01 17:32:01 1996 PDT
! | Wed Feb 28 17:32:01 1996 PST | @ 5 mons | Sun Jul 28 17:32:01 1996 PDT
! | Wed Feb 28 17:32:01 1996 PST | @ 5 mons 12 hours | Mon Jul 29 05:32:01 1996 PDT
! | Thu Feb 29 17:32:01 1996 PST | @ 5 mons | Mon Jul 29 17:32:01 1996 PDT
! | Thu Feb 29 17:32:01 1996 PST | @ 5 mons 12 hours | Tue Jul 30 05:32:01 1996 PDT
! | Fri Mar 01 17:32:01 1996 PST | @ 5 mons | Thu Aug 01 17:32:01 1996 PDT
! | Fri Mar 01 17:32:01 1996 PST | @ 5 mons 12 hours | Fri Aug 02 05:32:01 1996 PDT
! | Mon Dec 30 17:32:01 1996 PST | @ 14 secs ago | Mon Dec 30 17:31:47 1996 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 1 min | Mon Dec 30 17:33:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 5 hours | Mon Dec 30 22:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 14 secs ago | Tue Dec 31 17:31:47 1996 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 1 min | Tue Dec 31 17:33:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 1 day 2 hours 3 mins 4 secs | Tue Dec 31 19:35:05 1996 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 5 hours | Tue Dec 31 22:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 1 day 2 hours 3 mins 4 secs | Wed Jan 01 19:35:05 1997 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 10 days | Thu Jan 09 17:32:01 1997 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 10 days | Fri Jan 10 17:32:01 1997 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 3 mons | Sun Mar 30 17:32:01 1997 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 3 mons | Mon Mar 31 17:32:01 1997 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 5 mons | Fri May 30 17:32:01 1997 PDT
! | Mon Dec 30 17:32:01 1996 PST | @ 5 mons 12 hours | Sat May 31 05:32:01 1997 PDT
! | Tue Dec 31 17:32:01 1996 PST | @ 5 mons | Sat May 31 17:32:01 1997 PDT
! | Tue Dec 31 17:32:01 1996 PST | @ 5 mons 12 hours | Sun Jun 01 05:32:01 1997 PDT
! | Fri Dec 31 17:32:01 1999 PST | @ 14 secs ago | Fri Dec 31 17:31:47 1999 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 1 min | Fri Dec 31 17:33:01 1999 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 5 hours | Fri Dec 31 22:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 14 secs ago | Sat Jan 01 17:31:47 2000 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 1 min | Sat Jan 01 17:33:01 2000 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 1 day 2 hours 3 mins 4 secs | Sat Jan 01 19:35:05 2000 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 5 hours | Sat Jan 01 22:32:01 2000 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Sun Jan 02 19:35:05 2000 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 10 days | Mon Jan 10 17:32:01 2000 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 10 days | Tue Jan 11 17:32:01 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 14 secs ago | Wed Mar 15 02:13:51 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 1 min | Wed Mar 15 02:15:05 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 14 secs ago | Wed Mar 15 03:13:50 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 1 min | Wed Mar 15 03:15:04 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 5 hours | Wed Mar 15 07:14:05 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 14 secs ago | Wed Mar 15 08:13:47 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 5 hours | Wed Mar 15 08:14:04 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 1 min | Wed Mar 15 08:15:01 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 14 secs ago | Wed Mar 15 12:13:49 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 1 min | Wed Mar 15 12:15:03 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 14 secs ago | Wed Mar 15 13:13:48 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 5 hours | Wed Mar 15 13:14:01 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 1 min | Wed Mar 15 13:15:02 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 5 hours | Wed Mar 15 17:14:03 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 5 hours | Wed Mar 15 18:14:02 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Thu Mar 16 04:17:09 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Thu Mar 16 05:17:08 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Thu Mar 16 10:17:05 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Thu Mar 16 14:17:07 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Thu Mar 16 15:17:06 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 10 days | Sat Mar 25 02:14:05 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 10 days | Sat Mar 25 03:14:04 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 10 days | Sat Mar 25 08:14:01 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 10 days | Sat Mar 25 12:14:03 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 10 days | Sat Mar 25 13:14:02 2000 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 3 mons | Fri Mar 31 17:32:01 2000 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 3 mons | Sat Apr 01 17:32:01 2000 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 5 mons | Wed May 31 17:32:01 2000 PDT
! | Fri Dec 31 17:32:01 1999 PST | @ 5 mons 12 hours | Thu Jun 01 05:32:01 2000 PDT
! | Sat Jan 01 17:32:01 2000 PST | @ 5 mons | Thu Jun 01 17:32:01 2000 PDT
! | Sat Jan 01 17:32:01 2000 PST | @ 5 mons 12 hours | Fri Jun 02 05:32:01 2000 PDT
! | Wed Mar 15 02:14:05 2000 PST | @ 3 mons | Thu Jun 15 02:14:05 2000 PDT
! | Wed Mar 15 03:14:04 2000 PST | @ 3 mons | Thu Jun 15 03:14:04 2000 PDT
! | Wed Mar 15 08:14:01 2000 PST | @ 3 mons | Thu Jun 15 08:14:01 2000 PDT
! | Wed Mar 15 12:14:03 2000 PST | @ 3 mons | Thu Jun 15 12:14:03 2000 PDT
! | Wed Mar 15 13:14:02 2000 PST | @ 3 mons | Thu Jun 15 13:14:02 2000 PDT
! | Wed Mar 15 02:14:05 2000 PST | @ 5 mons | Tue Aug 15 02:14:05 2000 PDT
! | Wed Mar 15 03:14:04 2000 PST | @ 5 mons | Tue Aug 15 03:14:04 2000 PDT
! | Wed Mar 15 08:14:01 2000 PST | @ 5 mons | Tue Aug 15 08:14:01 2000 PDT
! | Wed Mar 15 12:14:03 2000 PST | @ 5 mons | Tue Aug 15 12:14:03 2000 PDT
! | Wed Mar 15 13:14:02 2000 PST | @ 5 mons | Tue Aug 15 13:14:02 2000 PDT
! | Wed Mar 15 02:14:05 2000 PST | @ 5 mons 12 hours | Tue Aug 15 14:14:05 2000 PDT
! | Wed Mar 15 03:14:04 2000 PST | @ 5 mons 12 hours | Tue Aug 15 15:14:04 2000 PDT
! | Wed Mar 15 08:14:01 2000 PST | @ 5 mons 12 hours | Tue Aug 15 20:14:01 2000 PDT
! | Wed Mar 15 12:14:03 2000 PST | @ 5 mons 12 hours | Wed Aug 16 00:14:03 2000 PDT
! | Wed Mar 15 13:14:02 2000 PST | @ 5 mons 12 hours | Wed Aug 16 01:14:02 2000 PDT
! | Sun Dec 31 17:32:01 2000 PST | @ 14 secs ago | Sun Dec 31 17:31:47 2000 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 1 min | Sun Dec 31 17:33:01 2000 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 5 hours | Sun Dec 31 22:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 14 secs ago | Mon Jan 01 17:31:47 2001 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 1 min | Mon Jan 01 17:33:01 2001 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Mon Jan 01 19:35:05 2001 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 5 hours | Mon Jan 01 22:32:01 2001 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 1 day 2 hours 3 mins 4 secs | Tue Jan 02 19:35:05 2001 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 10 days | Wed Jan 10 17:32:01 2001 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 10 days | Thu Jan 11 17:32:01 2001 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 3 mons | Sat Mar 31 17:32:01 2001 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 3 mons | Sun Apr 01 17:32:01 2001 PDT
! | Sun Dec 31 17:32:01 2000 PST | @ 5 mons | Thu May 31 17:32:01 2001 PDT
! | Sun Dec 31 17:32:01 2000 PST | @ 5 mons 12 hours | Fri Jun 01 05:32:01 2001 PDT
! | Mon Jan 01 17:32:01 2001 PST | @ 5 mons | Fri Jun 01 17:32:01 2001 PDT
! | Mon Jan 01 17:32:01 2001 PST | @ 5 mons 12 hours | Sat Jun 02 05:32:01 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 14 secs ago | Sat Sep 22 18:19:06 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 1 min | Sat Sep 22 18:20:20 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 5 hours | Sat Sep 22 23:19:20 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 1 day 2 hours 3 mins 4 secs | Sun Sep 23 20:22:24 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 10 days | Tue Oct 02 18:19:20 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 3 mons | Sat Dec 22 18:19:20 2001 PST
! | Sat Sep 22 18:19:20 2001 PDT | @ 5 mons | Fri Feb 22 18:19:20 2002 PST
! | Sat Sep 22 18:19:20 2001 PDT | @ 5 mons 12 hours | Sat Feb 23 06:19:20 2002 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 6 years | Thu Feb 28 17:32:01 2002 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 6 years | Thu Feb 28 17:32:01 2002 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 6 years | Fri Mar 01 17:32:01 2002 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 6 years | Mon Dec 30 17:32:01 2002 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 6 years | Tue Dec 31 17:32:01 2002 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 34 years | Thu Jan 01 00:00:00 2004 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 6 years | Sat Dec 31 17:32:01 2005 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 6 years | Sun Jan 01 17:32:01 2006 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 6 years | Wed Mar 15 02:14:05 2006 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 6 years | Wed Mar 15 03:14:04 2006 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 6 years | Wed Mar 15 08:14:01 2006 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 6 years | Wed Mar 15 12:14:03 2006 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 6 years | Wed Mar 15 13:14:02 2006 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 6 years | Sun Dec 31 17:32:01 2006 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 6 years | Mon Jan 01 17:32:01 2007 PST
! | Sat Sep 22 18:19:20 2001 PDT | @ 6 years | Sat Sep 22 18:19:20 2007 PDT
! | Wed Feb 28 17:32:01 1996 PST | @ 34 years | Thu Feb 28 17:32:01 2030 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 34 years | Thu Feb 28 17:32:01 2030 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 34 years | Fri Mar 01 17:32:01 2030 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 34 years | Mon Dec 30 17:32:01 2030 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 34 years | Tue Dec 31 17:32:01 2030 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 34 years | Sat Dec 31 17:32:01 2033 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 34 years | Sun Jan 01 17:32:01 2034 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 34 years | Wed Mar 15 02:14:05 2034 PDT
! | Wed Mar 15 03:14:04 2000 PST | @ 34 years | Wed Mar 15 03:14:04 2034 PDT
! | Wed Mar 15 08:14:01 2000 PST | @ 34 years | Wed Mar 15 08:14:01 2034 PDT
! | Wed Mar 15 12:14:03 2000 PST | @ 34 years | Wed Mar 15 12:14:03 2034 PDT
! | Wed Mar 15 13:14:02 2000 PST | @ 34 years | Wed Mar 15 13:14:02 2034 PDT
! | Sun Dec 31 17:32:01 2000 PST | @ 34 years | Sun Dec 31 17:32:01 2034 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 34 years | Mon Jan 01 17:32:01 2035 PST
! | Sat Sep 22 18:19:20 2001 PDT | @ 34 years | Sat Sep 22 18:19:20 2035 PDT
! (160 rows)
!
! SELECT '' AS "160", d.f1 AS "timestamp", t.f1 AS "interval", d.f1 - t.f1 AS minus
! FROM TEMP_TIMESTAMP d, INTERVAL_TBL t
! WHERE isfinite(d.f1)
! ORDER BY minus, "timestamp", "interval";
! 160 | timestamp | interval | minus
! -----+------------------------------+-------------------------------+------------------------------
! | Thu Jan 01 00:00:00 1970 PST | @ 34 years | Wed Jan 01 00:00:00 1936 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 34 years | Wed Feb 28 17:32:01 1962 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 34 years | Wed Feb 28 17:32:01 1962 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 34 years | Thu Mar 01 17:32:01 1962 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 34 years | Sun Dec 30 17:32:01 1962 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 34 years | Mon Dec 31 17:32:01 1962 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 6 years | Wed Jan 01 00:00:00 1964 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 34 years | Fri Dec 31 17:32:01 1965 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 34 years | Sat Jan 01 17:32:01 1966 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 34 years | Tue Mar 15 02:14:05 1966 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 34 years | Tue Mar 15 03:14:04 1966 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 34 years | Tue Mar 15 08:14:01 1966 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 34 years | Tue Mar 15 12:14:03 1966 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 34 years | Tue Mar 15 13:14:02 1966 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 34 years | Sat Dec 31 17:32:01 1966 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 34 years | Sun Jan 01 17:32:01 1967 PST
! | Sat Sep 22 18:19:20 2001 PDT | @ 34 years | Fri Sep 22 18:19:20 1967 PDT
! | Thu Jan 01 00:00:00 1970 PST | @ 5 mons 12 hours | Thu Jul 31 12:00:00 1969 PDT
! | Thu Jan 01 00:00:00 1970 PST | @ 5 mons | Fri Aug 01 00:00:00 1969 PDT
! | Thu Jan 01 00:00:00 1970 PST | @ 3 mons | Wed Oct 01 00:00:00 1969 PDT
! | Thu Jan 01 00:00:00 1970 PST | @ 10 days | Mon Dec 22 00:00:00 1969 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 1 day 2 hours 3 mins 4 secs | Tue Dec 30 21:56:56 1969 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 5 hours | Wed Dec 31 19:00:00 1969 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 1 min | Wed Dec 31 23:59:00 1969 PST
! | Thu Jan 01 00:00:00 1970 PST | @ 14 secs ago | Thu Jan 01 00:00:14 1970 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 6 years | Wed Feb 28 17:32:01 1990 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 6 years | Wed Feb 28 17:32:01 1990 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 6 years | Thu Mar 01 17:32:01 1990 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 6 years | Sun Dec 30 17:32:01 1990 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 6 years | Mon Dec 31 17:32:01 1990 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 6 years | Fri Dec 31 17:32:01 1993 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 6 years | Sat Jan 01 17:32:01 1994 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 6 years | Tue Mar 15 02:14:05 1994 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 6 years | Tue Mar 15 03:14:04 1994 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 6 years | Tue Mar 15 08:14:01 1994 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 6 years | Tue Mar 15 12:14:03 1994 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 6 years | Tue Mar 15 13:14:02 1994 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 6 years | Sat Dec 31 17:32:01 1994 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 6 years | Sun Jan 01 17:32:01 1995 PST
! | Sat Sep 22 18:19:20 2001 PDT | @ 6 years | Fri Sep 22 18:19:20 1995 PDT
! | Wed Feb 28 17:32:01 1996 PST | @ 5 mons 12 hours | Thu Sep 28 05:32:01 1995 PDT
! | Wed Feb 28 17:32:01 1996 PST | @ 5 mons | Thu Sep 28 17:32:01 1995 PDT
! | Thu Feb 29 17:32:01 1996 PST | @ 5 mons 12 hours | Fri Sep 29 05:32:01 1995 PDT
! | Thu Feb 29 17:32:01 1996 PST | @ 5 mons | Fri Sep 29 17:32:01 1995 PDT
! | Fri Mar 01 17:32:01 1996 PST | @ 5 mons 12 hours | Sun Oct 01 05:32:01 1995 PDT
! | Fri Mar 01 17:32:01 1996 PST | @ 5 mons | Sun Oct 01 17:32:01 1995 PDT
! | Wed Feb 28 17:32:01 1996 PST | @ 3 mons | Tue Nov 28 17:32:01 1995 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 3 mons | Wed Nov 29 17:32:01 1995 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 3 mons | Fri Dec 01 17:32:01 1995 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 10 days | Sun Feb 18 17:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 10 days | Mon Feb 19 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 10 days | Tue Feb 20 17:32:01 1996 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 1 day 2 hours 3 mins 4 secs | Tue Feb 27 15:28:57 1996 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 5 hours | Wed Feb 28 12:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 1 day 2 hours 3 mins 4 secs | Wed Feb 28 15:28:57 1996 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 1 min | Wed Feb 28 17:31:01 1996 PST
! | Wed Feb 28 17:32:01 1996 PST | @ 14 secs ago | Wed Feb 28 17:32:15 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 5 hours | Thu Feb 29 12:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 1 day 2 hours 3 mins 4 secs | Thu Feb 29 15:28:57 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 1 min | Thu Feb 29 17:31:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | @ 14 secs ago | Thu Feb 29 17:32:15 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 5 hours | Fri Mar 01 12:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 1 min | Fri Mar 01 17:31:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | @ 14 secs ago | Fri Mar 01 17:32:15 1996 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 5 mons 12 hours | Tue Jul 30 05:32:01 1996 PDT
! | Mon Dec 30 17:32:01 1996 PST | @ 5 mons | Tue Jul 30 17:32:01 1996 PDT
! | Tue Dec 31 17:32:01 1996 PST | @ 5 mons 12 hours | Wed Jul 31 05:32:01 1996 PDT
! | Tue Dec 31 17:32:01 1996 PST | @ 5 mons | Wed Jul 31 17:32:01 1996 PDT
! | Mon Dec 30 17:32:01 1996 PST | @ 3 mons | Mon Sep 30 17:32:01 1996 PDT
! | Tue Dec 31 17:32:01 1996 PST | @ 3 mons | Mon Sep 30 17:32:01 1996 PDT
! | Mon Dec 30 17:32:01 1996 PST | @ 10 days | Fri Dec 20 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 10 days | Sat Dec 21 17:32:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 1 day 2 hours 3 mins 4 secs | Sun Dec 29 15:28:57 1996 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 5 hours | Mon Dec 30 12:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 1 day 2 hours 3 mins 4 secs | Mon Dec 30 15:28:57 1996 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 1 min | Mon Dec 30 17:31:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST | @ 14 secs ago | Mon Dec 30 17:32:15 1996 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 5 hours | Tue Dec 31 12:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 1 min | Tue Dec 31 17:31:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST | @ 14 secs ago | Tue Dec 31 17:32:15 1996 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 5 mons 12 hours | Sat Jul 31 05:32:01 1999 PDT
! | Fri Dec 31 17:32:01 1999 PST | @ 5 mons | Sat Jul 31 17:32:01 1999 PDT
! | Sat Jan 01 17:32:01 2000 PST | @ 5 mons 12 hours | Sun Aug 01 05:32:01 1999 PDT
! | Sat Jan 01 17:32:01 2000 PST | @ 5 mons | Sun Aug 01 17:32:01 1999 PDT
! | Fri Dec 31 17:32:01 1999 PST | @ 3 mons | Thu Sep 30 17:32:01 1999 PDT
! | Sat Jan 01 17:32:01 2000 PST | @ 3 mons | Fri Oct 01 17:32:01 1999 PDT
! | Wed Mar 15 02:14:05 2000 PST | @ 5 mons 12 hours | Thu Oct 14 14:14:05 1999 PDT
! | Wed Mar 15 03:14:04 2000 PST | @ 5 mons 12 hours | Thu Oct 14 15:14:04 1999 PDT
! | Wed Mar 15 08:14:01 2000 PST | @ 5 mons 12 hours | Thu Oct 14 20:14:01 1999 PDT
! | Wed Mar 15 12:14:03 2000 PST | @ 5 mons 12 hours | Fri Oct 15 00:14:03 1999 PDT
! | Wed Mar 15 13:14:02 2000 PST | @ 5 mons 12 hours | Fri Oct 15 01:14:02 1999 PDT
! | Wed Mar 15 02:14:05 2000 PST | @ 5 mons | Fri Oct 15 02:14:05 1999 PDT
! | Wed Mar 15 03:14:04 2000 PST | @ 5 mons | Fri Oct 15 03:14:04 1999 PDT
! | Wed Mar 15 08:14:01 2000 PST | @ 5 mons | Fri Oct 15 08:14:01 1999 PDT
! | Wed Mar 15 12:14:03 2000 PST | @ 5 mons | Fri Oct 15 12:14:03 1999 PDT
! | Wed Mar 15 13:14:02 2000 PST | @ 5 mons | Fri Oct 15 13:14:02 1999 PDT
! | Wed Mar 15 02:14:05 2000 PST | @ 3 mons | Wed Dec 15 02:14:05 1999 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 3 mons | Wed Dec 15 03:14:04 1999 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 3 mons | Wed Dec 15 08:14:01 1999 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 3 mons | Wed Dec 15 12:14:03 1999 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 3 mons | Wed Dec 15 13:14:02 1999 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 10 days | Tue Dec 21 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 10 days | Wed Dec 22 17:32:01 1999 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 1 day 2 hours 3 mins 4 secs | Thu Dec 30 15:28:57 1999 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 5 hours | Fri Dec 31 12:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Fri Dec 31 15:28:57 1999 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 1 min | Fri Dec 31 17:31:01 1999 PST
! | Fri Dec 31 17:32:01 1999 PST | @ 14 secs ago | Fri Dec 31 17:32:15 1999 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 5 hours | Sat Jan 01 12:32:01 2000 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 1 min | Sat Jan 01 17:31:01 2000 PST
! | Sat Jan 01 17:32:01 2000 PST | @ 14 secs ago | Sat Jan 01 17:32:15 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 10 days | Sun Mar 05 02:14:05 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 10 days | Sun Mar 05 03:14:04 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 10 days | Sun Mar 05 08:14:01 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 10 days | Sun Mar 05 12:14:03 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 10 days | Sun Mar 05 13:14:02 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Tue Mar 14 00:11:01 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Tue Mar 14 01:11:00 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Tue Mar 14 06:10:57 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Tue Mar 14 10:10:59 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Tue Mar 14 11:10:58 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 5 hours | Tue Mar 14 21:14:05 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 5 hours | Tue Mar 14 22:14:04 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 1 min | Wed Mar 15 02:13:05 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | @ 14 secs ago | Wed Mar 15 02:14:19 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 1 min | Wed Mar 15 03:13:04 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 5 hours | Wed Mar 15 03:14:01 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | @ 14 secs ago | Wed Mar 15 03:14:18 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 5 hours | Wed Mar 15 07:14:03 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 1 min | Wed Mar 15 08:13:01 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 5 hours | Wed Mar 15 08:14:02 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | @ 14 secs ago | Wed Mar 15 08:14:15 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 1 min | Wed Mar 15 12:13:03 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | @ 14 secs ago | Wed Mar 15 12:14:17 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 1 min | Wed Mar 15 13:13:02 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | @ 14 secs ago | Wed Mar 15 13:14:16 2000 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 5 mons 12 hours | Mon Jul 31 05:32:01 2000 PDT
! | Sun Dec 31 17:32:01 2000 PST | @ 5 mons | Mon Jul 31 17:32:01 2000 PDT
! | Mon Jan 01 17:32:01 2001 PST | @ 5 mons 12 hours | Tue Aug 01 05:32:01 2000 PDT
! | Mon Jan 01 17:32:01 2001 PST | @ 5 mons | Tue Aug 01 17:32:01 2000 PDT
! | Sun Dec 31 17:32:01 2000 PST | @ 3 mons | Sat Sep 30 17:32:01 2000 PDT
! | Mon Jan 01 17:32:01 2001 PST | @ 3 mons | Sun Oct 01 17:32:01 2000 PDT
! | Sun Dec 31 17:32:01 2000 PST | @ 10 days | Thu Dec 21 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 10 days | Fri Dec 22 17:32:01 2000 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 1 day 2 hours 3 mins 4 secs | Sat Dec 30 15:28:57 2000 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 5 hours | Sun Dec 31 12:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 1 day 2 hours 3 mins 4 secs | Sun Dec 31 15:28:57 2000 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 1 min | Sun Dec 31 17:31:01 2000 PST
! | Sun Dec 31 17:32:01 2000 PST | @ 14 secs ago | Sun Dec 31 17:32:15 2000 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 5 hours | Mon Jan 01 12:32:01 2001 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 1 min | Mon Jan 01 17:31:01 2001 PST
! | Mon Jan 01 17:32:01 2001 PST | @ 14 secs ago | Mon Jan 01 17:32:15 2001 PST
! | Sat Sep 22 18:19:20 2001 PDT | @ 5 mons 12 hours | Sun Apr 22 06:19:20 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 5 mons | Sun Apr 22 18:19:20 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 3 mons | Fri Jun 22 18:19:20 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 10 days | Wed Sep 12 18:19:20 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 1 day 2 hours 3 mins 4 secs | Fri Sep 21 16:16:16 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 5 hours | Sat Sep 22 13:19:20 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 1 min | Sat Sep 22 18:18:20 2001 PDT
! | Sat Sep 22 18:19:20 2001 PDT | @ 14 secs ago | Sat Sep 22 18:19:34 2001 PDT
! (160 rows)
!
! SELECT '' AS "16", d.f1 AS "timestamp",
! timestamp with time zone '1980-01-06 00:00 GMT' AS gpstime_zero,
! d.f1 - timestamp with time zone '1980-01-06 00:00 GMT' AS difference
! FROM TEMP_TIMESTAMP d
! ORDER BY difference;
! 16 | timestamp | gpstime_zero | difference
! ----+------------------------------+------------------------------+-------------------------------------
! | Thu Jan 01 00:00:00 1970 PST | Sat Jan 05 16:00:00 1980 PST | @ 3656 days 16 hours ago
! | Wed Feb 28 17:32:01 1996 PST | Sat Jan 05 16:00:00 1980 PST | @ 5898 days 1 hour 32 mins 1 sec
! | Thu Feb 29 17:32:01 1996 PST | Sat Jan 05 16:00:00 1980 PST | @ 5899 days 1 hour 32 mins 1 sec
! | Fri Mar 01 17:32:01 1996 PST | Sat Jan 05 16:00:00 1980 PST | @ 5900 days 1 hour 32 mins 1 sec
! | Mon Dec 30 17:32:01 1996 PST | Sat Jan 05 16:00:00 1980 PST | @ 6204 days 1 hour 32 mins 1 sec
! | Tue Dec 31 17:32:01 1996 PST | Sat Jan 05 16:00:00 1980 PST | @ 6205 days 1 hour 32 mins 1 sec
! | Fri Dec 31 17:32:01 1999 PST | Sat Jan 05 16:00:00 1980 PST | @ 7300 days 1 hour 32 mins 1 sec
! | Sat Jan 01 17:32:01 2000 PST | Sat Jan 05 16:00:00 1980 PST | @ 7301 days 1 hour 32 mins 1 sec
! | Wed Mar 15 02:14:05 2000 PST | Sat Jan 05 16:00:00 1980 PST | @ 7374 days 10 hours 14 mins 5 secs
! | Wed Mar 15 03:14:04 2000 PST | Sat Jan 05 16:00:00 1980 PST | @ 7374 days 11 hours 14 mins 4 secs
! | Wed Mar 15 08:14:01 2000 PST | Sat Jan 05 16:00:00 1980 PST | @ 7374 days 16 hours 14 mins 1 sec
! | Wed Mar 15 12:14:03 2000 PST | Sat Jan 05 16:00:00 1980 PST | @ 7374 days 20 hours 14 mins 3 secs
! | Wed Mar 15 13:14:02 2000 PST | Sat Jan 05 16:00:00 1980 PST | @ 7374 days 21 hours 14 mins 2 secs
! | Sun Dec 31 17:32:01 2000 PST | Sat Jan 05 16:00:00 1980 PST | @ 7666 days 1 hour 32 mins 1 sec
! | Mon Jan 01 17:32:01 2001 PST | Sat Jan 05 16:00:00 1980 PST | @ 7667 days 1 hour 32 mins 1 sec
! | Sat Sep 22 18:19:20 2001 PDT | Sat Jan 05 16:00:00 1980 PST | @ 7931 days 1 hour 19 mins 20 secs
! (16 rows)
!
! SELECT '' AS "226", d1.f1 AS timestamp1, d2.f1 AS timestamp2, d1.f1 - d2.f1 AS difference
! FROM TEMP_TIMESTAMP d1, TEMP_TIMESTAMP d2
! ORDER BY timestamp1, timestamp2, difference;
! 226 | timestamp1 | timestamp2 | difference
! -----+------------------------------+------------------------------+-------------------------------------------
! | Thu Jan 01 00:00:00 1970 PST | Thu Jan 01 00:00:00 1970 PST | @ 0
! | Thu Jan 01 00:00:00 1970 PST | Wed Feb 28 17:32:01 1996 PST | @ 9554 days 17 hours 32 mins 1 sec ago
! | Thu Jan 01 00:00:00 1970 PST | Thu Feb 29 17:32:01 1996 PST | @ 9555 days 17 hours 32 mins 1 sec ago
! | Thu Jan 01 00:00:00 1970 PST | Fri Mar 01 17:32:01 1996 PST | @ 9556 days 17 hours 32 mins 1 sec ago
! | Thu Jan 01 00:00:00 1970 PST | Mon Dec 30 17:32:01 1996 PST | @ 9860 days 17 hours 32 mins 1 sec ago
! | Thu Jan 01 00:00:00 1970 PST | Tue Dec 31 17:32:01 1996 PST | @ 9861 days 17 hours 32 mins 1 sec ago
! | Thu Jan 01 00:00:00 1970 PST | Fri Dec 31 17:32:01 1999 PST | @ 10956 days 17 hours 32 mins 1 sec ago
! | Thu Jan 01 00:00:00 1970 PST | Sat Jan 01 17:32:01 2000 PST | @ 10957 days 17 hours 32 mins 1 sec ago
! | Thu Jan 01 00:00:00 1970 PST | Wed Mar 15 02:14:05 2000 PST | @ 11031 days 2 hours 14 mins 5 secs ago
! | Thu Jan 01 00:00:00 1970 PST | Wed Mar 15 03:14:04 2000 PST | @ 11031 days 3 hours 14 mins 4 secs ago
! | Thu Jan 01 00:00:00 1970 PST | Wed Mar 15 08:14:01 2000 PST | @ 11031 days 8 hours 14 mins 1 sec ago
! | Thu Jan 01 00:00:00 1970 PST | Wed Mar 15 12:14:03 2000 PST | @ 11031 days 12 hours 14 mins 3 secs ago
! | Thu Jan 01 00:00:00 1970 PST | Wed Mar 15 13:14:02 2000 PST | @ 11031 days 13 hours 14 mins 2 secs ago
! | Thu Jan 01 00:00:00 1970 PST | Sun Dec 31 17:32:01 2000 PST | @ 11322 days 17 hours 32 mins 1 sec ago
! | Thu Jan 01 00:00:00 1970 PST | Mon Jan 01 17:32:01 2001 PST | @ 11323 days 17 hours 32 mins 1 sec ago
! | Thu Jan 01 00:00:00 1970 PST | Sat Sep 22 18:19:20 2001 PDT | @ 11587 days 17 hours 19 mins 20 secs ago
! | Wed Feb 28 17:32:01 1996 PST | Thu Jan 01 00:00:00 1970 PST | @ 9554 days 17 hours 32 mins 1 sec
! | Wed Feb 28 17:32:01 1996 PST | Wed Feb 28 17:32:01 1996 PST | @ 0
! | Wed Feb 28 17:32:01 1996 PST | Thu Feb 29 17:32:01 1996 PST | @ 1 day ago
! | Wed Feb 28 17:32:01 1996 PST | Fri Mar 01 17:32:01 1996 PST | @ 2 days ago
! | Wed Feb 28 17:32:01 1996 PST | Mon Dec 30 17:32:01 1996 PST | @ 306 days ago
! | Wed Feb 28 17:32:01 1996 PST | Tue Dec 31 17:32:01 1996 PST | @ 307 days ago
! | Wed Feb 28 17:32:01 1996 PST | Fri Dec 31 17:32:01 1999 PST | @ 1402 days ago
! | Wed Feb 28 17:32:01 1996 PST | Sat Jan 01 17:32:01 2000 PST | @ 1403 days ago
! | Wed Feb 28 17:32:01 1996 PST | Wed Mar 15 02:14:05 2000 PST | @ 1476 days 8 hours 42 mins 4 secs ago
! | Wed Feb 28 17:32:01 1996 PST | Wed Mar 15 03:14:04 2000 PST | @ 1476 days 9 hours 42 mins 3 secs ago
! | Wed Feb 28 17:32:01 1996 PST | Wed Mar 15 08:14:01 2000 PST | @ 1476 days 14 hours 42 mins ago
! | Wed Feb 28 17:32:01 1996 PST | Wed Mar 15 12:14:03 2000 PST | @ 1476 days 18 hours 42 mins 2 secs ago
! | Wed Feb 28 17:32:01 1996 PST | Wed Mar 15 13:14:02 2000 PST | @ 1476 days 19 hours 42 mins 1 sec ago
! | Wed Feb 28 17:32:01 1996 PST | Sun Dec 31 17:32:01 2000 PST | @ 1768 days ago
! | Wed Feb 28 17:32:01 1996 PST | Mon Jan 01 17:32:01 2001 PST | @ 1769 days ago
! | Wed Feb 28 17:32:01 1996 PST | Sat Sep 22 18:19:20 2001 PDT | @ 2032 days 23 hours 47 mins 19 secs ago
! | Thu Feb 29 17:32:01 1996 PST | Thu Jan 01 00:00:00 1970 PST | @ 9555 days 17 hours 32 mins 1 sec
! | Thu Feb 29 17:32:01 1996 PST | Wed Feb 28 17:32:01 1996 PST | @ 1 day
! | Thu Feb 29 17:32:01 1996 PST | Thu Feb 29 17:32:01 1996 PST | @ 0
! | Thu Feb 29 17:32:01 1996 PST | Fri Mar 01 17:32:01 1996 PST | @ 1 day ago
! | Thu Feb 29 17:32:01 1996 PST | Mon Dec 30 17:32:01 1996 PST | @ 305 days ago
! | Thu Feb 29 17:32:01 1996 PST | Tue Dec 31 17:32:01 1996 PST | @ 306 days ago
! | Thu Feb 29 17:32:01 1996 PST | Fri Dec 31 17:32:01 1999 PST | @ 1401 days ago
! | Thu Feb 29 17:32:01 1996 PST | Sat Jan 01 17:32:01 2000 PST | @ 1402 days ago
! | Thu Feb 29 17:32:01 1996 PST | Wed Mar 15 02:14:05 2000 PST | @ 1475 days 8 hours 42 mins 4 secs ago
! | Thu Feb 29 17:32:01 1996 PST | Wed Mar 15 03:14:04 2000 PST | @ 1475 days 9 hours 42 mins 3 secs ago
! | Thu Feb 29 17:32:01 1996 PST | Wed Mar 15 08:14:01 2000 PST | @ 1475 days 14 hours 42 mins ago
! | Thu Feb 29 17:32:01 1996 PST | Wed Mar 15 12:14:03 2000 PST | @ 1475 days 18 hours 42 mins 2 secs ago
! | Thu Feb 29 17:32:01 1996 PST | Wed Mar 15 13:14:02 2000 PST | @ 1475 days 19 hours 42 mins 1 sec ago
! | Thu Feb 29 17:32:01 1996 PST | Sun Dec 31 17:32:01 2000 PST | @ 1767 days ago
! | Thu Feb 29 17:32:01 1996 PST | Mon Jan 01 17:32:01 2001 PST | @ 1768 days ago
! | Thu Feb 29 17:32:01 1996 PST | Sat Sep 22 18:19:20 2001 PDT | @ 2031 days 23 hours 47 mins 19 secs ago
! | Fri Mar 01 17:32:01 1996 PST | Thu Jan 01 00:00:00 1970 PST | @ 9556 days 17 hours 32 mins 1 sec
! | Fri Mar 01 17:32:01 1996 PST | Wed Feb 28 17:32:01 1996 PST | @ 2 days
! | Fri Mar 01 17:32:01 1996 PST | Thu Feb 29 17:32:01 1996 PST | @ 1 day
! | Fri Mar 01 17:32:01 1996 PST | Fri Mar 01 17:32:01 1996 PST | @ 0
! | Fri Mar 01 17:32:01 1996 PST | Mon Dec 30 17:32:01 1996 PST | @ 304 days ago
! | Fri Mar 01 17:32:01 1996 PST | Tue Dec 31 17:32:01 1996 PST | @ 305 days ago
! | Fri Mar 01 17:32:01 1996 PST | Fri Dec 31 17:32:01 1999 PST | @ 1400 days ago
! | Fri Mar 01 17:32:01 1996 PST | Sat Jan 01 17:32:01 2000 PST | @ 1401 days ago
! | Fri Mar 01 17:32:01 1996 PST | Wed Mar 15 02:14:05 2000 PST | @ 1474 days 8 hours 42 mins 4 secs ago
! | Fri Mar 01 17:32:01 1996 PST | Wed Mar 15 03:14:04 2000 PST | @ 1474 days 9 hours 42 mins 3 secs ago
! | Fri Mar 01 17:32:01 1996 PST | Wed Mar 15 08:14:01 2000 PST | @ 1474 days 14 hours 42 mins ago
! | Fri Mar 01 17:32:01 1996 PST | Wed Mar 15 12:14:03 2000 PST | @ 1474 days 18 hours 42 mins 2 secs ago
! | Fri Mar 01 17:32:01 1996 PST | Wed Mar 15 13:14:02 2000 PST | @ 1474 days 19 hours 42 mins 1 sec ago
! | Fri Mar 01 17:32:01 1996 PST | Sun Dec 31 17:32:01 2000 PST | @ 1766 days ago
! | Fri Mar 01 17:32:01 1996 PST | Mon Jan 01 17:32:01 2001 PST | @ 1767 days ago
! | Fri Mar 01 17:32:01 1996 PST | Sat Sep 22 18:19:20 2001 PDT | @ 2030 days 23 hours 47 mins 19 secs ago
! | Mon Dec 30 17:32:01 1996 PST | Thu Jan 01 00:00:00 1970 PST | @ 9860 days 17 hours 32 mins 1 sec
! | Mon Dec 30 17:32:01 1996 PST | Wed Feb 28 17:32:01 1996 PST | @ 306 days
! | Mon Dec 30 17:32:01 1996 PST | Thu Feb 29 17:32:01 1996 PST | @ 305 days
! | Mon Dec 30 17:32:01 1996 PST | Fri Mar 01 17:32:01 1996 PST | @ 304 days
! | Mon Dec 30 17:32:01 1996 PST | Mon Dec 30 17:32:01 1996 PST | @ 0
! | Mon Dec 30 17:32:01 1996 PST | Tue Dec 31 17:32:01 1996 PST | @ 1 day ago
! | Mon Dec 30 17:32:01 1996 PST | Fri Dec 31 17:32:01 1999 PST | @ 1096 days ago
! | Mon Dec 30 17:32:01 1996 PST | Sat Jan 01 17:32:01 2000 PST | @ 1097 days ago
! | Mon Dec 30 17:32:01 1996 PST | Wed Mar 15 02:14:05 2000 PST | @ 1170 days 8 hours 42 mins 4 secs ago
! | Mon Dec 30 17:32:01 1996 PST | Wed Mar 15 03:14:04 2000 PST | @ 1170 days 9 hours 42 mins 3 secs ago
! | Mon Dec 30 17:32:01 1996 PST | Wed Mar 15 08:14:01 2000 PST | @ 1170 days 14 hours 42 mins ago
! | Mon Dec 30 17:32:01 1996 PST | Wed Mar 15 12:14:03 2000 PST | @ 1170 days 18 hours 42 mins 2 secs ago
! | Mon Dec 30 17:32:01 1996 PST | Wed Mar 15 13:14:02 2000 PST | @ 1170 days 19 hours 42 mins 1 sec ago
! | Mon Dec 30 17:32:01 1996 PST | Sun Dec 31 17:32:01 2000 PST | @ 1462 days ago
! | Mon Dec 30 17:32:01 1996 PST | Mon Jan 01 17:32:01 2001 PST | @ 1463 days ago
! | Mon Dec 30 17:32:01 1996 PST | Sat Sep 22 18:19:20 2001 PDT | @ 1726 days 23 hours 47 mins 19 secs ago
! | Tue Dec 31 17:32:01 1996 PST | Thu Jan 01 00:00:00 1970 PST | @ 9861 days 17 hours 32 mins 1 sec
! | Tue Dec 31 17:32:01 1996 PST | Wed Feb 28 17:32:01 1996 PST | @ 307 days
! | Tue Dec 31 17:32:01 1996 PST | Thu Feb 29 17:32:01 1996 PST | @ 306 days
! | Tue Dec 31 17:32:01 1996 PST | Fri Mar 01 17:32:01 1996 PST | @ 305 days
! | Tue Dec 31 17:32:01 1996 PST | Mon Dec 30 17:32:01 1996 PST | @ 1 day
! | Tue Dec 31 17:32:01 1996 PST | Tue Dec 31 17:32:01 1996 PST | @ 0
! | Tue Dec 31 17:32:01 1996 PST | Fri Dec 31 17:32:01 1999 PST | @ 1095 days ago
! | Tue Dec 31 17:32:01 1996 PST | Sat Jan 01 17:32:01 2000 PST | @ 1096 days ago
! | Tue Dec 31 17:32:01 1996 PST | Wed Mar 15 02:14:05 2000 PST | @ 1169 days 8 hours 42 mins 4 secs ago
! | Tue Dec 31 17:32:01 1996 PST | Wed Mar 15 03:14:04 2000 PST | @ 1169 days 9 hours 42 mins 3 secs ago
! | Tue Dec 31 17:32:01 1996 PST | Wed Mar 15 08:14:01 2000 PST | @ 1169 days 14 hours 42 mins ago
! | Tue Dec 31 17:32:01 1996 PST | Wed Mar 15 12:14:03 2000 PST | @ 1169 days 18 hours 42 mins 2 secs ago
! | Tue Dec 31 17:32:01 1996 PST | Wed Mar 15 13:14:02 2000 PST | @ 1169 days 19 hours 42 mins 1 sec ago
! | Tue Dec 31 17:32:01 1996 PST | Sun Dec 31 17:32:01 2000 PST | @ 1461 days ago
! | Tue Dec 31 17:32:01 1996 PST | Mon Jan 01 17:32:01 2001 PST | @ 1462 days ago
! | Tue Dec 31 17:32:01 1996 PST | Sat Sep 22 18:19:20 2001 PDT | @ 1725 days 23 hours 47 mins 19 secs ago
! | Fri Dec 31 17:32:01 1999 PST | Thu Jan 01 00:00:00 1970 PST | @ 10956 days 17 hours 32 mins 1 sec
! | Fri Dec 31 17:32:01 1999 PST | Wed Feb 28 17:32:01 1996 PST | @ 1402 days
! | Fri Dec 31 17:32:01 1999 PST | Thu Feb 29 17:32:01 1996 PST | @ 1401 days
! | Fri Dec 31 17:32:01 1999 PST | Fri Mar 01 17:32:01 1996 PST | @ 1400 days
! | Fri Dec 31 17:32:01 1999 PST | Mon Dec 30 17:32:01 1996 PST | @ 1096 days
! | Fri Dec 31 17:32:01 1999 PST | Tue Dec 31 17:32:01 1996 PST | @ 1095 days
! | Fri Dec 31 17:32:01 1999 PST | Fri Dec 31 17:32:01 1999 PST | @ 0
! | Fri Dec 31 17:32:01 1999 PST | Sat Jan 01 17:32:01 2000 PST | @ 1 day ago
! | Fri Dec 31 17:32:01 1999 PST | Wed Mar 15 02:14:05 2000 PST | @ 74 days 8 hours 42 mins 4 secs ago
! | Fri Dec 31 17:32:01 1999 PST | Wed Mar 15 03:14:04 2000 PST | @ 74 days 9 hours 42 mins 3 secs ago
! | Fri Dec 31 17:32:01 1999 PST | Wed Mar 15 08:14:01 2000 PST | @ 74 days 14 hours 42 mins ago
! | Fri Dec 31 17:32:01 1999 PST | Wed Mar 15 12:14:03 2000 PST | @ 74 days 18 hours 42 mins 2 secs ago
! | Fri Dec 31 17:32:01 1999 PST | Wed Mar 15 13:14:02 2000 PST | @ 74 days 19 hours 42 mins 1 sec ago
! | Fri Dec 31 17:32:01 1999 PST | Sun Dec 31 17:32:01 2000 PST | @ 366 days ago
! | Fri Dec 31 17:32:01 1999 PST | Mon Jan 01 17:32:01 2001 PST | @ 367 days ago
! | Fri Dec 31 17:32:01 1999 PST | Sat Sep 22 18:19:20 2001 PDT | @ 630 days 23 hours 47 mins 19 secs ago
! | Sat Jan 01 17:32:01 2000 PST | Thu Jan 01 00:00:00 1970 PST | @ 10957 days 17 hours 32 mins 1 sec
! | Sat Jan 01 17:32:01 2000 PST | Wed Feb 28 17:32:01 1996 PST | @ 1403 days
! | Sat Jan 01 17:32:01 2000 PST | Thu Feb 29 17:32:01 1996 PST | @ 1402 days
! | Sat Jan 01 17:32:01 2000 PST | Fri Mar 01 17:32:01 1996 PST | @ 1401 days
! | Sat Jan 01 17:32:01 2000 PST | Mon Dec 30 17:32:01 1996 PST | @ 1097 days
! | Sat Jan 01 17:32:01 2000 PST | Tue Dec 31 17:32:01 1996 PST | @ 1096 days
! | Sat Jan 01 17:32:01 2000 PST | Fri Dec 31 17:32:01 1999 PST | @ 1 day
! | Sat Jan 01 17:32:01 2000 PST | Sat Jan 01 17:32:01 2000 PST | @ 0
! | Sat Jan 01 17:32:01 2000 PST | Wed Mar 15 02:14:05 2000 PST | @ 73 days 8 hours 42 mins 4 secs ago
! | Sat Jan 01 17:32:01 2000 PST | Wed Mar 15 03:14:04 2000 PST | @ 73 days 9 hours 42 mins 3 secs ago
! | Sat Jan 01 17:32:01 2000 PST | Wed Mar 15 08:14:01 2000 PST | @ 73 days 14 hours 42 mins ago
! | Sat Jan 01 17:32:01 2000 PST | Wed Mar 15 12:14:03 2000 PST | @ 73 days 18 hours 42 mins 2 secs ago
! | Sat Jan 01 17:32:01 2000 PST | Wed Mar 15 13:14:02 2000 PST | @ 73 days 19 hours 42 mins 1 sec ago
! | Sat Jan 01 17:32:01 2000 PST | Sun Dec 31 17:32:01 2000 PST | @ 365 days ago
! | Sat Jan 01 17:32:01 2000 PST | Mon Jan 01 17:32:01 2001 PST | @ 366 days ago
! | Sat Jan 01 17:32:01 2000 PST | Sat Sep 22 18:19:20 2001 PDT | @ 629 days 23 hours 47 mins 19 secs ago
! | Wed Mar 15 02:14:05 2000 PST | Thu Jan 01 00:00:00 1970 PST | @ 11031 days 2 hours 14 mins 5 secs
! | Wed Mar 15 02:14:05 2000 PST | Wed Feb 28 17:32:01 1996 PST | @ 1476 days 8 hours 42 mins 4 secs
! | Wed Mar 15 02:14:05 2000 PST | Thu Feb 29 17:32:01 1996 PST | @ 1475 days 8 hours 42 mins 4 secs
! | Wed Mar 15 02:14:05 2000 PST | Fri Mar 01 17:32:01 1996 PST | @ 1474 days 8 hours 42 mins 4 secs
! | Wed Mar 15 02:14:05 2000 PST | Mon Dec 30 17:32:01 1996 PST | @ 1170 days 8 hours 42 mins 4 secs
! | Wed Mar 15 02:14:05 2000 PST | Tue Dec 31 17:32:01 1996 PST | @ 1169 days 8 hours 42 mins 4 secs
! | Wed Mar 15 02:14:05 2000 PST | Fri Dec 31 17:32:01 1999 PST | @ 74 days 8 hours 42 mins 4 secs
! | Wed Mar 15 02:14:05 2000 PST | Sat Jan 01 17:32:01 2000 PST | @ 73 days 8 hours 42 mins 4 secs
! | Wed Mar 15 02:14:05 2000 PST | Wed Mar 15 02:14:05 2000 PST | @ 0
! | Wed Mar 15 02:14:05 2000 PST | Wed Mar 15 03:14:04 2000 PST | @ 59 mins 59 secs ago
! | Wed Mar 15 02:14:05 2000 PST | Wed Mar 15 08:14:01 2000 PST | @ 5 hours 59 mins 56 secs ago
! | Wed Mar 15 02:14:05 2000 PST | Wed Mar 15 12:14:03 2000 PST | @ 9 hours 59 mins 58 secs ago
! | Wed Mar 15 02:14:05 2000 PST | Wed Mar 15 13:14:02 2000 PST | @ 10 hours 59 mins 57 secs ago
! | Wed Mar 15 02:14:05 2000 PST | Sun Dec 31 17:32:01 2000 PST | @ 291 days 15 hours 17 mins 56 secs ago
! | Wed Mar 15 02:14:05 2000 PST | Mon Jan 01 17:32:01 2001 PST | @ 292 days 15 hours 17 mins 56 secs ago
! | Wed Mar 15 02:14:05 2000 PST | Sat Sep 22 18:19:20 2001 PDT | @ 556 days 15 hours 5 mins 15 secs ago
! | Wed Mar 15 03:14:04 2000 PST | Thu Jan 01 00:00:00 1970 PST | @ 11031 days 3 hours 14 mins 4 secs
! | Wed Mar 15 03:14:04 2000 PST | Wed Feb 28 17:32:01 1996 PST | @ 1476 days 9 hours 42 mins 3 secs
! | Wed Mar 15 03:14:04 2000 PST | Thu Feb 29 17:32:01 1996 PST | @ 1475 days 9 hours 42 mins 3 secs
! | Wed Mar 15 03:14:04 2000 PST | Fri Mar 01 17:32:01 1996 PST | @ 1474 days 9 hours 42 mins 3 secs
! | Wed Mar 15 03:14:04 2000 PST | Mon Dec 30 17:32:01 1996 PST | @ 1170 days 9 hours 42 mins 3 secs
! | Wed Mar 15 03:14:04 2000 PST | Tue Dec 31 17:32:01 1996 PST | @ 1169 days 9 hours 42 mins 3 secs
! | Wed Mar 15 03:14:04 2000 PST | Fri Dec 31 17:32:01 1999 PST | @ 74 days 9 hours 42 mins 3 secs
! | Wed Mar 15 03:14:04 2000 PST | Sat Jan 01 17:32:01 2000 PST | @ 73 days 9 hours 42 mins 3 secs
! | Wed Mar 15 03:14:04 2000 PST | Wed Mar 15 02:14:05 2000 PST | @ 59 mins 59 secs
! | Wed Mar 15 03:14:04 2000 PST | Wed Mar 15 03:14:04 2000 PST | @ 0
! | Wed Mar 15 03:14:04 2000 PST | Wed Mar 15 08:14:01 2000 PST | @ 4 hours 59 mins 57 secs ago
! | Wed Mar 15 03:14:04 2000 PST | Wed Mar 15 12:14:03 2000 PST | @ 8 hours 59 mins 59 secs ago
! | Wed Mar 15 03:14:04 2000 PST | Wed Mar 15 13:14:02 2000 PST | @ 9 hours 59 mins 58 secs ago
! | Wed Mar 15 03:14:04 2000 PST | Sun Dec 31 17:32:01 2000 PST | @ 291 days 14 hours 17 mins 57 secs ago
! | Wed Mar 15 03:14:04 2000 PST | Mon Jan 01 17:32:01 2001 PST | @ 292 days 14 hours 17 mins 57 secs ago
! | Wed Mar 15 03:14:04 2000 PST | Sat Sep 22 18:19:20 2001 PDT | @ 556 days 14 hours 5 mins 16 secs ago
! | Wed Mar 15 08:14:01 2000 PST | Thu Jan 01 00:00:00 1970 PST | @ 11031 days 8 hours 14 mins 1 sec
! | Wed Mar 15 08:14:01 2000 PST | Wed Feb 28 17:32:01 1996 PST | @ 1476 days 14 hours 42 mins
! | Wed Mar 15 08:14:01 2000 PST | Thu Feb 29 17:32:01 1996 PST | @ 1475 days 14 hours 42 mins
! | Wed Mar 15 08:14:01 2000 PST | Fri Mar 01 17:32:01 1996 PST | @ 1474 days 14 hours 42 mins
! | Wed Mar 15 08:14:01 2000 PST | Mon Dec 30 17:32:01 1996 PST | @ 1170 days 14 hours 42 mins
! | Wed Mar 15 08:14:01 2000 PST | Tue Dec 31 17:32:01 1996 PST | @ 1169 days 14 hours 42 mins
! | Wed Mar 15 08:14:01 2000 PST | Fri Dec 31 17:32:01 1999 PST | @ 74 days 14 hours 42 mins
! | Wed Mar 15 08:14:01 2000 PST | Sat Jan 01 17:32:01 2000 PST | @ 73 days 14 hours 42 mins
! | Wed Mar 15 08:14:01 2000 PST | Wed Mar 15 02:14:05 2000 PST | @ 5 hours 59 mins 56 secs
! | Wed Mar 15 08:14:01 2000 PST | Wed Mar 15 03:14:04 2000 PST | @ 4 hours 59 mins 57 secs
! | Wed Mar 15 08:14:01 2000 PST | Wed Mar 15 08:14:01 2000 PST | @ 0
! | Wed Mar 15 08:14:01 2000 PST | Wed Mar 15 12:14:03 2000 PST | @ 4 hours 2 secs ago
! | Wed Mar 15 08:14:01 2000 PST | Wed Mar 15 13:14:02 2000 PST | @ 5 hours 1 sec ago
! | Wed Mar 15 08:14:01 2000 PST | Sun Dec 31 17:32:01 2000 PST | @ 291 days 9 hours 18 mins ago
! | Wed Mar 15 08:14:01 2000 PST | Mon Jan 01 17:32:01 2001 PST | @ 292 days 9 hours 18 mins ago
! | Wed Mar 15 08:14:01 2000 PST | Sat Sep 22 18:19:20 2001 PDT | @ 556 days 9 hours 5 mins 19 secs ago
! | Wed Mar 15 12:14:03 2000 PST | Thu Jan 01 00:00:00 1970 PST | @ 11031 days 12 hours 14 mins 3 secs
! | Wed Mar 15 12:14:03 2000 PST | Wed Feb 28 17:32:01 1996 PST | @ 1476 days 18 hours 42 mins 2 secs
! | Wed Mar 15 12:14:03 2000 PST | Thu Feb 29 17:32:01 1996 PST | @ 1475 days 18 hours 42 mins 2 secs
! | Wed Mar 15 12:14:03 2000 PST | Fri Mar 01 17:32:01 1996 PST | @ 1474 days 18 hours 42 mins 2 secs
! | Wed Mar 15 12:14:03 2000 PST | Mon Dec 30 17:32:01 1996 PST | @ 1170 days 18 hours 42 mins 2 secs
! | Wed Mar 15 12:14:03 2000 PST | Tue Dec 31 17:32:01 1996 PST | @ 1169 days 18 hours 42 mins 2 secs
! | Wed Mar 15 12:14:03 2000 PST | Fri Dec 31 17:32:01 1999 PST | @ 74 days 18 hours 42 mins 2 secs
! | Wed Mar 15 12:14:03 2000 PST | Sat Jan 01 17:32:01 2000 PST | @ 73 days 18 hours 42 mins 2 secs
! | Wed Mar 15 12:14:03 2000 PST | Wed Mar 15 02:14:05 2000 PST | @ 9 hours 59 mins 58 secs
! | Wed Mar 15 12:14:03 2000 PST | Wed Mar 15 03:14:04 2000 PST | @ 8 hours 59 mins 59 secs
! | Wed Mar 15 12:14:03 2000 PST | Wed Mar 15 08:14:01 2000 PST | @ 4 hours 2 secs
! | Wed Mar 15 12:14:03 2000 PST | Wed Mar 15 12:14:03 2000 PST | @ 0
! | Wed Mar 15 12:14:03 2000 PST | Wed Mar 15 13:14:02 2000 PST | @ 59 mins 59 secs ago
! | Wed Mar 15 12:14:03 2000 PST | Sun Dec 31 17:32:01 2000 PST | @ 291 days 5 hours 17 mins 58 secs ago
! | Wed Mar 15 12:14:03 2000 PST | Mon Jan 01 17:32:01 2001 PST | @ 292 days 5 hours 17 mins 58 secs ago
! | Wed Mar 15 12:14:03 2000 PST | Sat Sep 22 18:19:20 2001 PDT | @ 556 days 5 hours 5 mins 17 secs ago
! | Wed Mar 15 13:14:02 2000 PST | Thu Jan 01 00:00:00 1970 PST | @ 11031 days 13 hours 14 mins 2 secs
! | Wed Mar 15 13:14:02 2000 PST | Wed Feb 28 17:32:01 1996 PST | @ 1476 days 19 hours 42 mins 1 sec
! | Wed Mar 15 13:14:02 2000 PST | Thu Feb 29 17:32:01 1996 PST | @ 1475 days 19 hours 42 mins 1 sec
! | Wed Mar 15 13:14:02 2000 PST | Fri Mar 01 17:32:01 1996 PST | @ 1474 days 19 hours 42 mins 1 sec
! | Wed Mar 15 13:14:02 2000 PST | Mon Dec 30 17:32:01 1996 PST | @ 1170 days 19 hours 42 mins 1 sec
! | Wed Mar 15 13:14:02 2000 PST | Tue Dec 31 17:32:01 1996 PST | @ 1169 days 19 hours 42 mins 1 sec
! | Wed Mar 15 13:14:02 2000 PST | Fri Dec 31 17:32:01 1999 PST | @ 74 days 19 hours 42 mins 1 sec
! | Wed Mar 15 13:14:02 2000 PST | Sat Jan 01 17:32:01 2000 PST | @ 73 days 19 hours 42 mins 1 sec
! | Wed Mar 15 13:14:02 2000 PST | Wed Mar 15 02:14:05 2000 PST | @ 10 hours 59 mins 57 secs
! | Wed Mar 15 13:14:02 2000 PST | Wed Mar 15 03:14:04 2000 PST | @ 9 hours 59 mins 58 secs
! | Wed Mar 15 13:14:02 2000 PST | Wed Mar 15 08:14:01 2000 PST | @ 5 hours 1 sec
! | Wed Mar 15 13:14:02 2000 PST | Wed Mar 15 12:14:03 2000 PST | @ 59 mins 59 secs
! | Wed Mar 15 13:14:02 2000 PST | Wed Mar 15 13:14:02 2000 PST | @ 0
! | Wed Mar 15 13:14:02 2000 PST | Sun Dec 31 17:32:01 2000 PST | @ 291 days 4 hours 17 mins 59 secs ago
! | Wed Mar 15 13:14:02 2000 PST | Mon Jan 01 17:32:01 2001 PST | @ 292 days 4 hours 17 mins 59 secs ago
! | Wed Mar 15 13:14:02 2000 PST | Sat Sep 22 18:19:20 2001 PDT | @ 556 days 4 hours 5 mins 18 secs ago
! | Sun Dec 31 17:32:01 2000 PST | Thu Jan 01 00:00:00 1970 PST | @ 11322 days 17 hours 32 mins 1 sec
! | Sun Dec 31 17:32:01 2000 PST | Wed Feb 28 17:32:01 1996 PST | @ 1768 days
! | Sun Dec 31 17:32:01 2000 PST | Thu Feb 29 17:32:01 1996 PST | @ 1767 days
! | Sun Dec 31 17:32:01 2000 PST | Fri Mar 01 17:32:01 1996 PST | @ 1766 days
! | Sun Dec 31 17:32:01 2000 PST | Mon Dec 30 17:32:01 1996 PST | @ 1462 days
! | Sun Dec 31 17:32:01 2000 PST | Tue Dec 31 17:32:01 1996 PST | @ 1461 days
! | Sun Dec 31 17:32:01 2000 PST | Fri Dec 31 17:32:01 1999 PST | @ 366 days
! | Sun Dec 31 17:32:01 2000 PST | Sat Jan 01 17:32:01 2000 PST | @ 365 days
! | Sun Dec 31 17:32:01 2000 PST | Wed Mar 15 02:14:05 2000 PST | @ 291 days 15 hours 17 mins 56 secs
! | Sun Dec 31 17:32:01 2000 PST | Wed Mar 15 03:14:04 2000 PST | @ 291 days 14 hours 17 mins 57 secs
! | Sun Dec 31 17:32:01 2000 PST | Wed Mar 15 08:14:01 2000 PST | @ 291 days 9 hours 18 mins
! | Sun Dec 31 17:32:01 2000 PST | Wed Mar 15 12:14:03 2000 PST | @ 291 days 5 hours 17 mins 58 secs
! | Sun Dec 31 17:32:01 2000 PST | Wed Mar 15 13:14:02 2000 PST | @ 291 days 4 hours 17 mins 59 secs
! | Sun Dec 31 17:32:01 2000 PST | Sun Dec 31 17:32:01 2000 PST | @ 0
! | Sun Dec 31 17:32:01 2000 PST | Mon Jan 01 17:32:01 2001 PST | @ 1 day ago
! | Sun Dec 31 17:32:01 2000 PST | Sat Sep 22 18:19:20 2001 PDT | @ 264 days 23 hours 47 mins 19 secs ago
! | Mon Jan 01 17:32:01 2001 PST | Thu Jan 01 00:00:00 1970 PST | @ 11323 days 17 hours 32 mins 1 sec
! | Mon Jan 01 17:32:01 2001 PST | Wed Feb 28 17:32:01 1996 PST | @ 1769 days
! | Mon Jan 01 17:32:01 2001 PST | Thu Feb 29 17:32:01 1996 PST | @ 1768 days
! | Mon Jan 01 17:32:01 2001 PST | Fri Mar 01 17:32:01 1996 PST | @ 1767 days
! | Mon Jan 01 17:32:01 2001 PST | Mon Dec 30 17:32:01 1996 PST | @ 1463 days
! | Mon Jan 01 17:32:01 2001 PST | Tue Dec 31 17:32:01 1996 PST | @ 1462 days
! | Mon Jan 01 17:32:01 2001 PST | Fri Dec 31 17:32:01 1999 PST | @ 367 days
! | Mon Jan 01 17:32:01 2001 PST | Sat Jan 01 17:32:01 2000 PST | @ 366 days
! | Mon Jan 01 17:32:01 2001 PST | Wed Mar 15 02:14:05 2000 PST | @ 292 days 15 hours 17 mins 56 secs
! | Mon Jan 01 17:32:01 2001 PST | Wed Mar 15 03:14:04 2000 PST | @ 292 days 14 hours 17 mins 57 secs
! | Mon Jan 01 17:32:01 2001 PST | Wed Mar 15 08:14:01 2000 PST | @ 292 days 9 hours 18 mins
! | Mon Jan 01 17:32:01 2001 PST | Wed Mar 15 12:14:03 2000 PST | @ 292 days 5 hours 17 mins 58 secs
! | Mon Jan 01 17:32:01 2001 PST | Wed Mar 15 13:14:02 2000 PST | @ 292 days 4 hours 17 mins 59 secs
! | Mon Jan 01 17:32:01 2001 PST | Sun Dec 31 17:32:01 2000 PST | @ 1 day
! | Mon Jan 01 17:32:01 2001 PST | Mon Jan 01 17:32:01 2001 PST | @ 0
! | Mon Jan 01 17:32:01 2001 PST | Sat Sep 22 18:19:20 2001 PDT | @ 263 days 23 hours 47 mins 19 secs ago
! | Sat Sep 22 18:19:20 2001 PDT | Thu Jan 01 00:00:00 1970 PST | @ 11587 days 17 hours 19 mins 20 secs
! | Sat Sep 22 18:19:20 2001 PDT | Wed Feb 28 17:32:01 1996 PST | @ 2032 days 23 hours 47 mins 19 secs
! | Sat Sep 22 18:19:20 2001 PDT | Thu Feb 29 17:32:01 1996 PST | @ 2031 days 23 hours 47 mins 19 secs
! | Sat Sep 22 18:19:20 2001 PDT | Fri Mar 01 17:32:01 1996 PST | @ 2030 days 23 hours 47 mins 19 secs
! | Sat Sep 22 18:19:20 2001 PDT | Mon Dec 30 17:32:01 1996 PST | @ 1726 days 23 hours 47 mins 19 secs
! | Sat Sep 22 18:19:20 2001 PDT | Tue Dec 31 17:32:01 1996 PST | @ 1725 days 23 hours 47 mins 19 secs
! | Sat Sep 22 18:19:20 2001 PDT | Fri Dec 31 17:32:01 1999 PST | @ 630 days 23 hours 47 mins 19 secs
! | Sat Sep 22 18:19:20 2001 PDT | Sat Jan 01 17:32:01 2000 PST | @ 629 days 23 hours 47 mins 19 secs
! | Sat Sep 22 18:19:20 2001 PDT | Wed Mar 15 02:14:05 2000 PST | @ 556 days 15 hours 5 mins 15 secs
! | Sat Sep 22 18:19:20 2001 PDT | Wed Mar 15 03:14:04 2000 PST | @ 556 days 14 hours 5 mins 16 secs
! | Sat Sep 22 18:19:20 2001 PDT | Wed Mar 15 08:14:01 2000 PST | @ 556 days 9 hours 5 mins 19 secs
! | Sat Sep 22 18:19:20 2001 PDT | Wed Mar 15 12:14:03 2000 PST | @ 556 days 5 hours 5 mins 17 secs
! | Sat Sep 22 18:19:20 2001 PDT | Wed Mar 15 13:14:02 2000 PST | @ 556 days 4 hours 5 mins 18 secs
! | Sat Sep 22 18:19:20 2001 PDT | Sun Dec 31 17:32:01 2000 PST | @ 264 days 23 hours 47 mins 19 secs
! | Sat Sep 22 18:19:20 2001 PDT | Mon Jan 01 17:32:01 2001 PST | @ 263 days 23 hours 47 mins 19 secs
! | Sat Sep 22 18:19:20 2001 PDT | Sat Sep 22 18:19:20 2001 PDT | @ 0
! (256 rows)
!
! --
! -- abstime, reltime arithmetic
! --
! SELECT '' AS ten, ABSTIME_TBL.f1 AS abstime, RELTIME_TBL.f1 AS reltime
! FROM ABSTIME_TBL, RELTIME_TBL
! WHERE (ABSTIME_TBL.f1 + RELTIME_TBL.f1) < abstime 'Jan 14 14:00:00 1971'
! ORDER BY abstime, reltime;
! ten | abstime | reltime
! -----+------------------------------+---------------
! | Sat May 10 23:59:12 1947 PST | @ 14 secs ago
! | Sat May 10 23:59:12 1947 PST | @ 1 min
! | Sat May 10 23:59:12 1947 PST | @ 5 hours
! | Sat May 10 23:59:12 1947 PST | @ 10 days
! | Sat May 10 23:59:12 1947 PST | @ 3 mons
! | Wed Dec 31 16:00:00 1969 PST | @ 14 secs ago
! | Wed Dec 31 16:00:00 1969 PST | @ 1 min
! | Wed Dec 31 16:00:00 1969 PST | @ 5 hours
! | Wed Dec 31 16:00:00 1969 PST | @ 10 days
! | Wed Dec 31 16:00:00 1969 PST | @ 3 mons
! (10 rows)
!
! -- these four queries should return the same answer
! -- the "infinity" and "-infinity" tuples in ABSTIME_TBL cannot be added and
! -- therefore, should not show up in the results.
! SELECT '' AS three, * FROM ABSTIME_TBL
! WHERE (ABSTIME_TBL.f1 + reltime '@ 3 year') -- +3 years
! < abstime 'Jan 14 14:00:00 1977' ORDER BY f1;
! three | f1
! -------+------------------------------
! | Sat May 10 23:59:12 1947 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! (3 rows)
!
! SELECT '' AS three, * FROM ABSTIME_TBL
! WHERE (ABSTIME_TBL.f1 + reltime '@ 3 year ago') -- -3 years
! < abstime 'Jan 14 14:00:00 1971' ORDER BY f1;
! three | f1
! -------+------------------------------
! | Sat May 10 23:59:12 1947 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! (3 rows)
!
! SELECT '' AS three, * FROM ABSTIME_TBL
! WHERE (ABSTIME_TBL.f1 - reltime '@ 3 year') -- -(+3) years
! < abstime 'Jan 14 14:00:00 1971' ORDER BY f1;
! three | f1
! -------+------------------------------
! | Sat May 10 23:59:12 1947 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! (3 rows)
!
! SELECT '' AS three, * FROM ABSTIME_TBL
! WHERE (ABSTIME_TBL.f1 - reltime '@ 3 year ago') -- -(-3) years
! < abstime 'Jan 14 14:00:00 1977' ORDER BY f1;
! three | f1
! -------+------------------------------
! | Sat May 10 23:59:12 1947 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! (3 rows)
!
! --
! -- Conversions
! --
! SELECT '' AS "16", f1 AS "timestamp", date(f1) AS date
! FROM TEMP_TIMESTAMP
! WHERE f1 <> timestamp 'now'
! ORDER BY date, "timestamp";
! 16 | timestamp | date
! ----+------------------------------+------------
! | Thu Jan 01 00:00:00 1970 PST | 01-01-1970
! | Wed Feb 28 17:32:01 1996 PST | 02-28-1996
! | Thu Feb 29 17:32:01 1996 PST | 02-29-1996
! | Fri Mar 01 17:32:01 1996 PST | 03-01-1996
! | Mon Dec 30 17:32:01 1996 PST | 12-30-1996
! | Tue Dec 31 17:32:01 1996 PST | 12-31-1996
! | Fri Dec 31 17:32:01 1999 PST | 12-31-1999
! | Sat Jan 01 17:32:01 2000 PST | 01-01-2000
! | Wed Mar 15 02:14:05 2000 PST | 03-15-2000
! | Wed Mar 15 03:14:04 2000 PST | 03-15-2000
! | Wed Mar 15 08:14:01 2000 PST | 03-15-2000
! | Wed Mar 15 12:14:03 2000 PST | 03-15-2000
! | Wed Mar 15 13:14:02 2000 PST | 03-15-2000
! | Sun Dec 31 17:32:01 2000 PST | 12-31-2000
! | Mon Jan 01 17:32:01 2001 PST | 01-01-2001
! | Sat Sep 22 18:19:20 2001 PDT | 09-22-2001
! (16 rows)
!
! SELECT '' AS "16", f1 AS "timestamp", abstime(f1) AS abstime
! FROM TEMP_TIMESTAMP
! ORDER BY abstime;
! 16 | timestamp | abstime
! ----+------------------------------+------------------------------
! | Thu Jan 01 00:00:00 1970 PST | Thu Jan 01 00:00:00 1970 PST
! | Wed Feb 28 17:32:01 1996 PST | Wed Feb 28 17:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST | Thu Feb 29 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST | Fri Mar 01 17:32:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST | Mon Dec 30 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST | Tue Dec 31 17:32:01 1996 PST
! | Fri Dec 31 17:32:01 1999 PST | Fri Dec 31 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST | Sat Jan 01 17:32:01 2000 PST
! | Wed Mar 15 02:14:05 2000 PST | Wed Mar 15 02:14:05 2000 PST
! | Wed Mar 15 03:14:04 2000 PST | Wed Mar 15 03:14:04 2000 PST
! | Wed Mar 15 08:14:01 2000 PST | Wed Mar 15 08:14:01 2000 PST
! | Wed Mar 15 12:14:03 2000 PST | Wed Mar 15 12:14:03 2000 PST
! | Wed Mar 15 13:14:02 2000 PST | Wed Mar 15 13:14:02 2000 PST
! | Sun Dec 31 17:32:01 2000 PST | Sun Dec 31 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST | Mon Jan 01 17:32:01 2001 PST
! | Sat Sep 22 18:19:20 2001 PDT | Sat Sep 22 18:19:20 2001 PDT
! (16 rows)
!
! SELECT '' AS four, f1 AS abstime, date(f1) AS date
! FROM ABSTIME_TBL
! WHERE isfinite(f1) AND f1 <> abstime 'now'
! ORDER BY date, abstime;
! four | abstime | date
! ------+------------------------------+------------
! | Sat May 10 23:59:12 1947 PST | 05-10-1947
! | Wed Dec 31 16:00:00 1969 PST | 12-31-1969
! | Sun Jan 14 03:14:21 1973 PST | 01-14-1973
! | Mon May 01 00:30:30 1995 PDT | 05-01-1995
! (4 rows)
!
! SELECT '' AS two, d1 AS "timestamp", abstime(d1) AS abstime
! FROM TIMESTAMP_TBL WHERE NOT isfinite(d1) ORDER BY d1;
! two | timestamp | abstime
! -----+-----------+-----------
! | -infinity | -infinity
! | infinity | infinity
! (2 rows)
!
! SELECT '' AS three, f1 as abstime, cast(f1 as timestamp) AS "timestamp"
! FROM ABSTIME_TBL WHERE NOT isfinite(f1) ORDER BY f1;
! ERROR: cannot convert abstime "invalid" to timestamp
! SELECT '' AS ten, f1 AS interval, reltime(f1) AS reltime
! FROM INTERVAL_TBL ORDER BY f1;
! ten | interval | reltime
! -----+-------------------------------+-------------------------------
! | @ 14 secs ago | @ 14 secs ago
! | @ 1 min | @ 1 min
! | @ 5 hours | @ 5 hours
! | @ 1 day 2 hours 3 mins 4 secs | @ 1 day 2 hours 3 mins 4 secs
! | @ 10 days | @ 10 days
! | @ 3 mons | @ 3 mons
! | @ 5 mons | @ 5 mons
! | @ 5 mons 12 hours | @ 5 mons 12 hours
! | @ 6 years | @ 6 years
! | @ 34 years | @ 34 years
! (10 rows)
!
! SELECT '' AS six, f1 as reltime, CAST(f1 AS interval) AS interval
! FROM RELTIME_TBL ORDER BY f1;
! six | reltime | interval
! -----+---------------+---------------
! | @ 14 secs ago | @ 14 secs ago
! | @ 1 min | @ 1 min
! | @ 5 hours | @ 5 hours
! | @ 10 days | @ 10 days
! | @ 3 mons | @ 3 mons
! | @ 34 years | @ 34 years
! (6 rows)
!
! DROP TABLE TEMP_TIMESTAMP;
! --
! -- Formats
! --
! SET DateStyle TO 'US,Postgres';
! SHOW DateStyle;
! DateStyle
! ---------------
! Postgres, MDY
! (1 row)
!
! SELECT '' AS "64", d1 AS us_postgres FROM TIMESTAMP_TBL ORDER BY d1;
! 64 | us_postgres
! ----+-----------------------------
! | -infinity
! | Tue Feb 16 17:32:01 0097 BC
! | Sat Feb 16 17:32:01 0097
! | Thu Feb 16 17:32:01 0597
! | Tue Feb 16 17:32:01 1097
! | Sat Feb 16 17:32:01 1697
! | Thu Feb 16 17:32:01 1797
! | Tue Feb 16 17:32:01 1897
! | Thu Jan 01 00:00:00 1970
! | Wed Feb 28 17:32:01 1996
! | Thu Feb 29 17:32:01 1996
! | Fri Mar 01 17:32:01 1996
! | Mon Dec 30 17:32:01 1996
! | Tue Dec 31 17:32:01 1996
! | Wed Jan 01 17:32:01 1997
! | Thu Jan 02 00:00:00 1997
! | Thu Jan 02 03:04:05 1997
! | Mon Feb 10 17:32:00 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01 1997
! | Mon Feb 10 17:32:01.4 1997
! | Mon Feb 10 17:32:01.5 1997
! | Mon Feb 10 17:32:01.6 1997
! | Mon Feb 10 17:32:02 1997
! | Tue Feb 11 17:32:01 1997
! | Wed Feb 12 17:32:01 1997
! | Thu Feb 13 17:32:01 1997
! | Fri Feb 14 17:32:01 1997
! | Sat Feb 15 17:32:01 1997
! | Sun Feb 16 17:32:01 1997
! | Sun Feb 16 17:32:01 1997
! | Fri Feb 28 17:32:01 1997
! | Sat Mar 01 17:32:01 1997
! | Tue Jun 10 17:32:01 1997
! | Tue Jun 10 18:32:01 1997
! | Tue Dec 30 17:32:01 1997
! | Wed Dec 31 17:32:01 1997
! | Fri Dec 31 17:32:01 1999
! | Sat Jan 01 17:32:01 2000
! | Wed Mar 15 02:14:05 2000
! | Wed Mar 15 03:14:04 2000
! | Wed Mar 15 08:14:01 2000
! | Wed Mar 15 12:14:03 2000
! | Wed Mar 15 13:14:02 2000
! | Sun Dec 31 17:32:01 2000
! | Mon Jan 01 17:32:01 2001
! | Sat Sep 22 18:19:20 2001
! | Sat Feb 16 17:32:01 2097
! | infinity
! (65 rows)
!
! SELECT '' AS seven, f1 AS us_postgres FROM ABSTIME_TBL ORDER BY f1;
! seven | us_postgres
! -------+------------------------------
! | -infinity
! | Sat May 10 23:59:12 1947 PST
! | Wed Dec 31 16:00:00 1969 PST
! | Sun Jan 14 03:14:21 1973 PST
! | Mon May 01 00:30:30 1995 PDT
! | infinity
! | invalid
! (7 rows)
!
! SET DateStyle TO 'US,ISO';
! SELECT '' AS "64", d1 AS us_iso FROM TIMESTAMP_TBL ORDER BY d1;
! 64 | us_iso
! ----+------------------------
! | -infinity
! | 0097-02-16 17:32:01 BC
! | 0097-02-16 17:32:01
! | 0597-02-16 17:32:01
! | 1097-02-16 17:32:01
! | 1697-02-16 17:32:01
! | 1797-02-16 17:32:01
! | 1897-02-16 17:32:01
! | 1970-01-01 00:00:00
! | 1996-02-28 17:32:01
! | 1996-02-29 17:32:01
! | 1996-03-01 17:32:01
! | 1996-12-30 17:32:01
! | 1996-12-31 17:32:01
! | 1997-01-01 17:32:01
! | 1997-01-02 00:00:00
! | 1997-01-02 03:04:05
! | 1997-02-10 17:32:00
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01.4
! | 1997-02-10 17:32:01.5
! | 1997-02-10 17:32:01.6
! | 1997-02-10 17:32:02
! | 1997-02-11 17:32:01
! | 1997-02-12 17:32:01
! | 1997-02-13 17:32:01
! | 1997-02-14 17:32:01
! | 1997-02-15 17:32:01
! | 1997-02-16 17:32:01
! | 1997-02-16 17:32:01
! | 1997-02-28 17:32:01
! | 1997-03-01 17:32:01
! | 1997-06-10 17:32:01
! | 1997-06-10 18:32:01
! | 1997-12-30 17:32:01
! | 1997-12-31 17:32:01
! | 1999-12-31 17:32:01
! | 2000-01-01 17:32:01
! | 2000-03-15 02:14:05
! | 2000-03-15 03:14:04
! | 2000-03-15 08:14:01
! | 2000-03-15 12:14:03
! | 2000-03-15 13:14:02
! | 2000-12-31 17:32:01
! | 2001-01-01 17:32:01
! | 2001-09-22 18:19:20
! | 2097-02-16 17:32:01
! | infinity
! (65 rows)
!
! SELECT '' AS seven, f1 AS us_iso FROM ABSTIME_TBL ORDER BY f1;
! seven | us_iso
! -------+------------------------
! | -infinity
! | 1947-05-10 23:59:12-08
! | 1969-12-31 16:00:00-08
! | 1973-01-14 03:14:21-08
! | 1995-05-01 00:30:30-07
! | infinity
! | invalid
! (7 rows)
!
! SET DateStyle TO 'US,SQL';
! SHOW DateStyle;
! DateStyle
! -----------
! SQL, MDY
! (1 row)
!
! SELECT '' AS "64", d1 AS us_sql FROM TIMESTAMP_TBL ORDER BY d1;
! 64 | us_sql
! ----+------------------------
! | -infinity
! | 02/16/0097 17:32:01 BC
! | 02/16/0097 17:32:01
! | 02/16/0597 17:32:01
! | 02/16/1097 17:32:01
! | 02/16/1697 17:32:01
! | 02/16/1797 17:32:01
! | 02/16/1897 17:32:01
! | 01/01/1970 00:00:00
! | 02/28/1996 17:32:01
! | 02/29/1996 17:32:01
! | 03/01/1996 17:32:01
! | 12/30/1996 17:32:01
! | 12/31/1996 17:32:01
! | 01/01/1997 17:32:01
! | 01/02/1997 00:00:00
! | 01/02/1997 03:04:05
! | 02/10/1997 17:32:00
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01
! | 02/10/1997 17:32:01.4
! | 02/10/1997 17:32:01.5
! | 02/10/1997 17:32:01.6
! | 02/10/1997 17:32:02
! | 02/11/1997 17:32:01
! | 02/12/1997 17:32:01
! | 02/13/1997 17:32:01
! | 02/14/1997 17:32:01
! | 02/15/1997 17:32:01
! | 02/16/1997 17:32:01
! | 02/16/1997 17:32:01
! | 02/28/1997 17:32:01
! | 03/01/1997 17:32:01
! | 06/10/1997 17:32:01
! | 06/10/1997 18:32:01
! | 12/30/1997 17:32:01
! | 12/31/1997 17:32:01
! | 12/31/1999 17:32:01
! | 01/01/2000 17:32:01
! | 03/15/2000 02:14:05
! | 03/15/2000 03:14:04
! | 03/15/2000 08:14:01
! | 03/15/2000 12:14:03
! | 03/15/2000 13:14:02
! | 12/31/2000 17:32:01
! | 01/01/2001 17:32:01
! | 09/22/2001 18:19:20
! | 02/16/2097 17:32:01
! | infinity
! (65 rows)
!
! SELECT '' AS seven, f1 AS us_sql FROM ABSTIME_TBL ORDER BY f1;
! seven | us_sql
! -------+-------------------------
! | -infinity
! | 05/10/1947 23:59:12 PST
! | 12/31/1969 16:00:00 PST
! | 01/14/1973 03:14:21 PST
! | 05/01/1995 00:30:30 PDT
! | infinity
! | invalid
! (7 rows)
!
! SET DateStyle TO 'European,Postgres';
! SHOW DateStyle;
! DateStyle
! ---------------
! Postgres, DMY
! (1 row)
!
! INSERT INTO TIMESTAMP_TBL VALUES('13/06/1957');
! SELECT count(*) as one FROM TIMESTAMP_TBL WHERE d1 = 'Jun 13 1957';
! one
! -----
! 1
! (1 row)
!
! SELECT '' AS "65", d1 AS european_postgres FROM TIMESTAMP_TBL ORDER BY d1;
! 65 | european_postgres
! ----+-----------------------------
! | -infinity
! | Tue 16 Feb 17:32:01 0097 BC
! | Sat 16 Feb 17:32:01 0097
! | Thu 16 Feb 17:32:01 0597
! | Tue 16 Feb 17:32:01 1097
! | Sat 16 Feb 17:32:01 1697
! | Thu 16 Feb 17:32:01 1797
! | Tue 16 Feb 17:32:01 1897
! | Thu 13 Jun 00:00:00 1957
! | Thu 01 Jan 00:00:00 1970
! | Wed 28 Feb 17:32:01 1996
! | Thu 29 Feb 17:32:01 1996
! | Fri 01 Mar 17:32:01 1996
! | Mon 30 Dec 17:32:01 1996
! | Tue 31 Dec 17:32:01 1996
! | Wed 01 Jan 17:32:01 1997
! | Thu 02 Jan 00:00:00 1997
! | Thu 02 Jan 03:04:05 1997
! | Mon 10 Feb 17:32:00 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01 1997
! | Mon 10 Feb 17:32:01.4 1997
! | Mon 10 Feb 17:32:01.5 1997
! | Mon 10 Feb 17:32:01.6 1997
! | Mon 10 Feb 17:32:02 1997
! | Tue 11 Feb 17:32:01 1997
! | Wed 12 Feb 17:32:01 1997
! | Thu 13 Feb 17:32:01 1997
! | Fri 14 Feb 17:32:01 1997
! | Sat 15 Feb 17:32:01 1997
! | Sun 16 Feb 17:32:01 1997
! | Sun 16 Feb 17:32:01 1997
! | Fri 28 Feb 17:32:01 1997
! | Sat 01 Mar 17:32:01 1997
! | Tue 10 Jun 17:32:01 1997
! | Tue 10 Jun 18:32:01 1997
! | Tue 30 Dec 17:32:01 1997
! | Wed 31 Dec 17:32:01 1997
! | Fri 31 Dec 17:32:01 1999
! | Sat 01 Jan 17:32:01 2000
! | Wed 15 Mar 02:14:05 2000
! | Wed 15 Mar 03:14:04 2000
! | Wed 15 Mar 08:14:01 2000
! | Wed 15 Mar 12:14:03 2000
! | Wed 15 Mar 13:14:02 2000
! | Sun 31 Dec 17:32:01 2000
! | Mon 01 Jan 17:32:01 2001
! | Sat 22 Sep 18:19:20 2001
! | Sat 16 Feb 17:32:01 2097
! | infinity
! (66 rows)
!
! SELECT '' AS seven, f1 AS european_postgres FROM ABSTIME_TBL ORDER BY f1;
! seven | european_postgres
! -------+------------------------------
! | -infinity
! | Sat 10 May 23:59:12 1947 PST
! | Wed 31 Dec 16:00:00 1969 PST
! | Sun 14 Jan 03:14:21 1973 PST
! | Mon 01 May 00:30:30 1995 PDT
! | infinity
! | invalid
! (7 rows)
!
! SET DateStyle TO 'European,ISO';
! SHOW DateStyle;
! DateStyle
! -----------
! ISO, DMY
! (1 row)
!
! SELECT '' AS "65", d1 AS european_iso FROM TIMESTAMP_TBL ORDER BY d1;
! 65 | european_iso
! ----+------------------------
! | -infinity
! | 0097-02-16 17:32:01 BC
! | 0097-02-16 17:32:01
! | 0597-02-16 17:32:01
! | 1097-02-16 17:32:01
! | 1697-02-16 17:32:01
! | 1797-02-16 17:32:01
! | 1897-02-16 17:32:01
! | 1957-06-13 00:00:00
! | 1970-01-01 00:00:00
! | 1996-02-28 17:32:01
! | 1996-02-29 17:32:01
! | 1996-03-01 17:32:01
! | 1996-12-30 17:32:01
! | 1996-12-31 17:32:01
! | 1997-01-01 17:32:01
! | 1997-01-02 00:00:00
! | 1997-01-02 03:04:05
! | 1997-02-10 17:32:00
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01
! | 1997-02-10 17:32:01.4
! | 1997-02-10 17:32:01.5
! | 1997-02-10 17:32:01.6
! | 1997-02-10 17:32:02
! | 1997-02-11 17:32:01
! | 1997-02-12 17:32:01
! | 1997-02-13 17:32:01
! | 1997-02-14 17:32:01
! | 1997-02-15 17:32:01
! | 1997-02-16 17:32:01
! | 1997-02-16 17:32:01
! | 1997-02-28 17:32:01
! | 1997-03-01 17:32:01
! | 1997-06-10 17:32:01
! | 1997-06-10 18:32:01
! | 1997-12-30 17:32:01
! | 1997-12-31 17:32:01
! | 1999-12-31 17:32:01
! | 2000-01-01 17:32:01
! | 2000-03-15 02:14:05
! | 2000-03-15 03:14:04
! | 2000-03-15 08:14:01
! | 2000-03-15 12:14:03
! | 2000-03-15 13:14:02
! | 2000-12-31 17:32:01
! | 2001-01-01 17:32:01
! | 2001-09-22 18:19:20
! | 2097-02-16 17:32:01
! | infinity
! (66 rows)
!
! SELECT '' AS seven, f1 AS european_iso FROM ABSTIME_TBL ORDER BY f1;
! seven | european_iso
! -------+------------------------
! | -infinity
! | 1947-05-10 23:59:12-08
! | 1969-12-31 16:00:00-08
! | 1973-01-14 03:14:21-08
! | 1995-05-01 00:30:30-07
! | infinity
! | invalid
! (7 rows)
!
! SET DateStyle TO 'European,SQL';
! SHOW DateStyle;
! DateStyle
! -----------
! SQL, DMY
! (1 row)
!
! SELECT '' AS "65", d1 AS european_sql FROM TIMESTAMP_TBL ORDER BY d1;
! 65 | european_sql
! ----+------------------------
! | -infinity
! | 16/02/0097 17:32:01 BC
! | 16/02/0097 17:32:01
! | 16/02/0597 17:32:01
! | 16/02/1097 17:32:01
! | 16/02/1697 17:32:01
! | 16/02/1797 17:32:01
! | 16/02/1897 17:32:01
! | 13/06/1957 00:00:00
! | 01/01/1970 00:00:00
! | 28/02/1996 17:32:01
! | 29/02/1996 17:32:01
! | 01/03/1996 17:32:01
! | 30/12/1996 17:32:01
! | 31/12/1996 17:32:01
! | 01/01/1997 17:32:01
! | 02/01/1997 00:00:00
! | 02/01/1997 03:04:05
! | 10/02/1997 17:32:00
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01
! | 10/02/1997 17:32:01.4
! | 10/02/1997 17:32:01.5
! | 10/02/1997 17:32:01.6
! | 10/02/1997 17:32:02
! | 11/02/1997 17:32:01
! | 12/02/1997 17:32:01
! | 13/02/1997 17:32:01
! | 14/02/1997 17:32:01
! | 15/02/1997 17:32:01
! | 16/02/1997 17:32:01
! | 16/02/1997 17:32:01
! | 28/02/1997 17:32:01
! | 01/03/1997 17:32:01
! | 10/06/1997 17:32:01
! | 10/06/1997 18:32:01
! | 30/12/1997 17:32:01
! | 31/12/1997 17:32:01
! | 31/12/1999 17:32:01
! | 01/01/2000 17:32:01
! | 15/03/2000 02:14:05
! | 15/03/2000 03:14:04
! | 15/03/2000 08:14:01
! | 15/03/2000 12:14:03
! | 15/03/2000 13:14:02
! | 31/12/2000 17:32:01
! | 01/01/2001 17:32:01
! | 22/09/2001 18:19:20
! | 16/02/2097 17:32:01
! | infinity
! (66 rows)
!
! SELECT '' AS seven, f1 AS european_sql FROM ABSTIME_TBL ORDER BY f1;
! seven | european_sql
! -------+-------------------------
! | -infinity
! | 10/05/1947 23:59:12 PST
! | 31/12/1969 16:00:00 PST
! | 14/01/1973 03:14:21 PST
! | 01/05/1995 00:30:30 PDT
! | infinity
! | invalid
! (7 rows)
!
! RESET DateStyle;
! --
! -- to_timestamp()
! --
! SELECT to_timestamp('0097/Feb/16 --> 08:14:30', 'YYYY/Mon/DD --> HH:MI:SS');
! to_timestamp
! ------------------------------
! Sat Feb 16 08:14:30 0097 PST
! (1 row)
!
! SELECT to_timestamp('97/2/16 8:14:30', 'FMYYYY/FMMM/FMDD FMHH:FMMI:FMSS');
! to_timestamp
! ------------------------------
! Sat Feb 16 08:14:30 0097 PST
! (1 row)
!
! SELECT to_timestamp('1985 January 12', 'YYYY FMMonth DD');
! to_timestamp
! ------------------------------
! Sat Jan 12 00:00:00 1985 PST
! (1 row)
!
! SELECT to_timestamp('My birthday-> Year: 1976, Month: May, Day: 16',
! '"My birthday-> Year" YYYY, "Month:" FMMonth, "Day:" DD');
! to_timestamp
! ------------------------------
! Sun May 16 00:00:00 1976 PDT
! (1 row)
!
! SELECT to_timestamp('1,582nd VIII 21', 'Y,YYYth FMRM DD');
! to_timestamp
! ------------------------------
! Sat Aug 21 00:00:00 1582 PST
! (1 row)
!
! SELECT to_timestamp('15 "text between quote marks" 98 54 45',
! E'HH24 "\\text between quote marks\\"" YY MI SS');
! to_timestamp
! ------------------------------
! Thu Jan 01 15:54:45 1998 PST
! (1 row)
!
! SELECT to_timestamp('05121445482000', 'MMDDHH24MISSYYYY');
! to_timestamp
! ------------------------------
! Fri May 12 14:45:48 2000 PDT
! (1 row)
!
! SELECT to_timestamp('2000January09Sunday', 'YYYYFMMonthDDFMDay');
! to_timestamp
! ------------------------------
! Sun Jan 09 00:00:00 2000 PST
! (1 row)
!
! SELECT to_timestamp('97/Feb/16', 'YYMonDD');
! ERROR: invalid value "/Fe" for "Mon"
! DETAIL: The given value did not match any of the allowed values for this field.
! SELECT to_timestamp('19971116', 'YYYYMMDD');
! to_timestamp
! ------------------------------
! Sun Nov 16 00:00:00 1997 PST
! (1 row)
!
! SELECT to_timestamp('20000-1116', 'YYYY-MMDD');
! to_timestamp
! -------------------------------
! Thu Nov 16 00:00:00 20000 PST
! (1 row)
!
! SELECT to_timestamp('9-1116', 'Y-MMDD');
! to_timestamp
! ------------------------------
! Mon Nov 16 00:00:00 2009 PST
! (1 row)
!
! SELECT to_timestamp('95-1116', 'YY-MMDD');
! to_timestamp
! ------------------------------
! Thu Nov 16 00:00:00 1995 PST
! (1 row)
!
! SELECT to_timestamp('995-1116', 'YYY-MMDD');
! to_timestamp
! ------------------------------
! Thu Nov 16 00:00:00 1995 PST
! (1 row)
!
! SELECT to_timestamp('2005426', 'YYYYWWD');
! to_timestamp
! ------------------------------
! Sat Oct 15 00:00:00 2005 PDT
! (1 row)
!
! SELECT to_timestamp('2005300', 'YYYYDDD');
! to_timestamp
! ------------------------------
! Thu Oct 27 00:00:00 2005 PDT
! (1 row)
!
! SELECT to_timestamp('2005527', 'IYYYIWID');
! to_timestamp
! ------------------------------
! Sun Jan 01 00:00:00 2006 PST
! (1 row)
!
! SELECT to_timestamp('005527', 'IYYIWID');
! to_timestamp
! ------------------------------
! Sun Jan 01 00:00:00 2006 PST
! (1 row)
!
! SELECT to_timestamp('05527', 'IYIWID');
! to_timestamp
! ------------------------------
! Sun Jan 01 00:00:00 2006 PST
! (1 row)
!
! SELECT to_timestamp('5527', 'IIWID');
! to_timestamp
! ------------------------------
! Sun Jan 01 00:00:00 2006 PST
! (1 row)
!
! SELECT to_timestamp('2005364', 'IYYYIDDD');
! to_timestamp
! ------------------------------
! Sun Jan 01 00:00:00 2006 PST
! (1 row)
!
! SELECT to_timestamp('20050302', 'YYYYMMDD');
! to_timestamp
! ------------------------------
! Wed Mar 02 00:00:00 2005 PST
! (1 row)
!
! SELECT to_timestamp('2005 03 02', 'YYYYMMDD');
! to_timestamp
! ------------------------------
! Wed Mar 02 00:00:00 2005 PST
! (1 row)
!
! SELECT to_timestamp(' 2005 03 02', 'YYYYMMDD');
! to_timestamp
! ------------------------------
! Wed Mar 02 00:00:00 2005 PST
! (1 row)
!
! SELECT to_timestamp(' 20050302', 'YYYYMMDD');
! to_timestamp
! ------------------------------
! Wed Mar 02 00:00:00 2005 PST
! (1 row)
!
! --
! -- Check handling of multiple spaces in format and/or input
! --
! SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS');
! to_timestamp
! ------------------------------
! Sun Dec 18 03:38:15 2011 PST
! (1 row)
!
! SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS');
! to_timestamp
! ------------------------------
! Sun Dec 18 23:38:15 2011 PST
! (1 row)
!
! SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS');
! to_timestamp
! ------------------------------
! Sun Dec 18 23:38:15 2011 PST
! (1 row)
!
! SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS');
! to_timestamp
! ------------------------------
! Sun Dec 18 23:38:15 2011 PST
! (1 row)
!
! SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS');
! to_timestamp
! ------------------------------
! Sun Dec 18 23:38:15 2011 PST
! (1 row)
!
! SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS');
! to_timestamp
! ------------------------------
! Sun Dec 18 03:38:15 2011 PST
! (1 row)
!
! SELECT to_date('2011 12 18', 'YYYY MM DD');
! to_date
! ------------
! 12-18-2011
! (1 row)
!
! SELECT to_date('2011 12 18', 'YYYY MM DD');
! to_date
! ------------
! 12-18-2011
! (1 row)
!
! SELECT to_date('2011 12 18', 'YYYY MM DD');
! to_date
! ------------
! 12-08-2011
! (1 row)
!
! SELECT to_date('2011 12 18', 'YYYY MM DD');
! to_date
! ------------
! 02-18-2011
! (1 row)
!
! SELECT to_date('2011 12 18', 'YYYY MM DD');
! to_date
! ------------
! 12-18-2011
! (1 row)
!
! SELECT to_date('2011 12 18', 'YYYY MM DD');
! to_date
! ------------
! 12-18-2011
! (1 row)
!
! --
! -- Check errors for some incorrect usages of to_timestamp()
! --
! -- Mixture of date conventions (ISO week and Gregorian):
! SELECT to_timestamp('2005527', 'YYYYIWID');
! ERROR: invalid combination of date conventions
! HINT: Do not mix Gregorian and ISO week date conventions in a formatting template.
! -- Insufficient characters in the source string:
! SELECT to_timestamp('19971', 'YYYYMMDD');
! ERROR: source string too short for "MM" formatting field
! DETAIL: Field requires 2 characters, but only 1 remain.
! HINT: If your source string is not fixed-width, try using the "FM" modifier.
! -- Insufficient digit characters for a single node:
! SELECT to_timestamp('19971)24', 'YYYYMMDD');
! ERROR: invalid value "1)" for "MM"
! DETAIL: Field requires 2 characters, but only 1 could be parsed.
! HINT: If your source string is not fixed-width, try using the "FM" modifier.
! -- Value clobbering:
! SELECT to_timestamp('1997-11-Jan-16', 'YYYY-MM-Mon-DD');
! ERROR: conflicting values for "Mon" field in formatting string
! DETAIL: This value contradicts a previous setting for the same field type.
! -- Non-numeric input:
! SELECT to_timestamp('199711xy', 'YYYYMMDD');
! ERROR: invalid value "xy" for "DD"
! DETAIL: Value must be an integer.
! -- Input that doesn't fit in an int:
! SELECT to_timestamp('10000000000', 'FMYYYY');
! ERROR: value for "YYYY" in source string is out of range
! DETAIL: Value must be in the range -2147483648 to 2147483647.
! --
! -- Check behavior with SQL-style fixed-GMT-offset time zone (cf bug #8572)
! --
! SET TIME ZONE 'America/New_York';
! SET TIME ZONE '-1.5';
! SHOW TIME ZONE;
! TimeZone
! ----------------
! <-01:30>+01:30
! (1 row)
!
! SELECT '2012-12-12 12:00'::timestamptz;
! timestamptz
! ---------------------------------
! Wed Dec 12 12:00:00 2012 -01:30
! (1 row)
!
! SELECT '2012-12-12 12:00 America/New_York'::timestamptz;
! timestamptz
! ---------------------------------
! Wed Dec 12 15:30:00 2012 -01:30
! (1 row)
!
! SELECT to_char('2012-12-12 12:00'::timestamptz, 'YYYY-MM-DD HH:MI:SS TZ');
! to_char
! ----------------------------
! 2012-12-12 12:00:00 -01:30
! (1 row)
!
! RESET TIME ZONE;
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/regex.out 2016-04-02 21:48:58.132131388 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/regex.out 2016-04-04 03:18:31.315099243 +0000
***************
*** 1,330 ****
! --
! -- Regular expression tests
! --
! -- Don't want to have to double backslashes in regexes
! set standard_conforming_strings = on;
! -- Test simple quantified backrefs
! select 'bbbbb' ~ '^([bc])\1*$' as t;
! t
! ---
! t
! (1 row)
!
! select 'ccc' ~ '^([bc])\1*$' as t;
! t
! ---
! t
! (1 row)
!
! select 'xxx' ~ '^([bc])\1*$' as f;
! f
! ---
! f
! (1 row)
!
! select 'bbc' ~ '^([bc])\1*$' as f;
! f
! ---
! f
! (1 row)
!
! select 'b' ~ '^([bc])\1*$' as t;
! t
! ---
! t
! (1 row)
!
! -- Test quantified backref within a larger expression
! select 'abc abc abc' ~ '^(\w+)( \1)+$' as t;
! t
! ---
! t
! (1 row)
!
! select 'abc abd abc' ~ '^(\w+)( \1)+$' as f;
! f
! ---
! f
! (1 row)
!
! select 'abc abc abd' ~ '^(\w+)( \1)+$' as f;
! f
! ---
! f
! (1 row)
!
! select 'abc abc abc' ~ '^(.+)( \1)+$' as t;
! t
! ---
! t
! (1 row)
!
! select 'abc abd abc' ~ '^(.+)( \1)+$' as f;
! f
! ---
! f
! (1 row)
!
! select 'abc abc abd' ~ '^(.+)( \1)+$' as f;
! f
! ---
! f
! (1 row)
!
! -- Test some cases that crashed in 9.2beta1 due to pmatch[] array overrun
! select substring('asd TO foo' from ' TO (([a-z0-9._]+|"([^"]+|"")+")+)');
! substring
! -----------
! foo
! (1 row)
!
! select substring('a' from '((a))+');
! substring
! -----------
! a
! (1 row)
!
! select substring('a' from '((a)+)');
! substring
! -----------
! a
! (1 row)
!
! -- Test conversion of regex patterns to indexable conditions
! explain (costs off) select * from pg_proc where proname ~ 'abc';
! QUERY PLAN
! -----------------------------------
! Seq Scan on pg_proc
! Filter: (proname ~ 'abc'::text)
! (2 rows)
!
! explain (costs off) select * from pg_proc where proname ~ '^abc';
! QUERY PLAN
! ----------------------------------------------------------------------
! Index Scan using pg_proc_proname_args_nsp_index on pg_proc
! Index Cond: ((proname >= 'abc'::name) AND (proname < 'abd'::name))
! Filter: (proname ~ '^abc'::text)
! (3 rows)
!
! explain (costs off) select * from pg_proc where proname ~ '^abc$';
! QUERY PLAN
! ------------------------------------------------------------
! Index Scan using pg_proc_proname_args_nsp_index on pg_proc
! Index Cond: (proname = 'abc'::name)
! Filter: (proname ~ '^abc$'::text)
! (3 rows)
!
! explain (costs off) select * from pg_proc where proname ~ '^abcd*e';
! QUERY PLAN
! ----------------------------------------------------------------------
! Index Scan using pg_proc_proname_args_nsp_index on pg_proc
! Index Cond: ((proname >= 'abc'::name) AND (proname < 'abd'::name))
! Filter: (proname ~ '^abcd*e'::text)
! (3 rows)
!
! explain (costs off) select * from pg_proc where proname ~ '^abc+d';
! QUERY PLAN
! ----------------------------------------------------------------------
! Index Scan using pg_proc_proname_args_nsp_index on pg_proc
! Index Cond: ((proname >= 'abc'::name) AND (proname < 'abd'::name))
! Filter: (proname ~ '^abc+d'::text)
! (3 rows)
!
! explain (costs off) select * from pg_proc where proname ~ '^(abc)(def)';
! QUERY PLAN
! ----------------------------------------------------------------------------
! Index Scan using pg_proc_proname_args_nsp_index on pg_proc
! Index Cond: ((proname >= 'abcdef'::name) AND (proname < 'abcdeg'::name))
! Filter: (proname ~ '^(abc)(def)'::text)
! (3 rows)
!
! explain (costs off) select * from pg_proc where proname ~ '^(abc)$';
! QUERY PLAN
! ------------------------------------------------------------
! Index Scan using pg_proc_proname_args_nsp_index on pg_proc
! Index Cond: (proname = 'abc'::name)
! Filter: (proname ~ '^(abc)$'::text)
! (3 rows)
!
! explain (costs off) select * from pg_proc where proname ~ '^(abc)?d';
! QUERY PLAN
! ----------------------------------------
! Seq Scan on pg_proc
! Filter: (proname ~ '^(abc)?d'::text)
! (2 rows)
!
! explain (costs off) select * from pg_proc where proname ~ '^abcd(x|(?=\w\w)q)';
! QUERY PLAN
! ------------------------------------------------------------------------
! Index Scan using pg_proc_proname_args_nsp_index on pg_proc
! Index Cond: ((proname >= 'abcd'::name) AND (proname < 'abce'::name))
! Filter: (proname ~ '^abcd(x|(?=\w\w)q)'::text)
! (3 rows)
!
! -- Test for infinite loop in pullback() (CVE-2007-4772)
! select 'a' ~ '($|^)*';
! ?column?
! ----------
! t
! (1 row)
!
! -- These cases expose a bug in the original fix for CVE-2007-4772
! select 'a' ~ '(^)+^';
! ?column?
! ----------
! t
! (1 row)
!
! select 'a' ~ '$($$)+';
! ?column?
! ----------
! t
! (1 row)
!
! -- More cases of infinite loop in pullback(), not fixed by CVE-2007-4772 fix
! select 'a' ~ '($^)+';
! ?column?
! ----------
! f
! (1 row)
!
! select 'a' ~ '(^$)*';
! ?column?
! ----------
! t
! (1 row)
!
! select 'aa bb cc' ~ '(^(?!aa))+';
! ?column?
! ----------
! f
! (1 row)
!
! select 'aa x' ~ '(^(?!aa)(?!bb)(?!cc))+';
! ?column?
! ----------
! f
! (1 row)
!
! select 'bb x' ~ '(^(?!aa)(?!bb)(?!cc))+';
! ?column?
! ----------
! f
! (1 row)
!
! select 'cc x' ~ '(^(?!aa)(?!bb)(?!cc))+';
! ?column?
! ----------
! f
! (1 row)
!
! select 'dd x' ~ '(^(?!aa)(?!bb)(?!cc))+';
! ?column?
! ----------
! t
! (1 row)
!
! -- Test for infinite loop in fixempties() (Tcl bugs 3604074, 3606683)
! select 'a' ~ '((((((a)*)*)*)*)*)*';
! ?column?
! ----------
! t
! (1 row)
!
! select 'a' ~ '((((((a+|)+|)+|)+|)+|)+|)';
! ?column?
! ----------
! t
! (1 row)
!
! -- These cases used to give too-many-states failures
! select 'x' ~ 'abcd(\m)+xyz';
! ?column?
! ----------
! f
! (1 row)
!
! select 'a' ~ '^abcd*(((((^(a c(e?d)a+|)+|)+|)+|)+|a)+|)';
! ?column?
! ----------
! f
! (1 row)
!
! select 'x' ~ 'a^(^)bcd*xy(((((($a+|)+|)+|)+$|)+|)+|)^$';
! ?column?
! ----------
! f
! (1 row)
!
! select 'x' ~ 'xyz(\Y\Y)+';
! ?column?
! ----------
! f
! (1 row)
!
! select 'x' ~ 'x|(?:\M)+';
! ?column?
! ----------
! t
! (1 row)
!
! -- This generates O(N) states but O(N^2) arcs, so it causes problems
! -- if arc count is not constrained
! select 'x' ~ repeat('x*y*z*', 1000);
! ERROR: invalid regular expression: regular expression is too complex
! -- Test backref in combination with non-greedy quantifier
! -- https://core.tcl.tk/tcl/tktview/6585b21ca8fa6f3678d442b97241fdd43dba2ec0
! select 'Programmer' ~ '(\w).*?\1' as t;
! t
! ---
! t
! (1 row)
!
! select regexp_matches('Programmer', '(\w)(.*?\1)', 'g');
! regexp_matches
! ----------------
! {r,ogr}
! {m,m}
! (2 rows)
!
! -- Test for proper matching of non-greedy iteration (bug #11478)
! select regexp_matches('foo/bar/baz',
! '^([^/]+?)(?:/([^/]+?))(?:/([^/]+?))?$', '');
! regexp_matches
! ----------------
! {foo,bar,baz}
! (1 row)
!
! -- Test for infinite loop in cfindloop with zero-length possible match
! -- but no actual match (can only happen in the presence of backrefs)
! select 'a' ~ '$()|^\1';
! ?column?
! ----------
! f
! (1 row)
!
! select 'a' ~ '.. ()|\1';
! ?column?
! ----------
! f
! (1 row)
!
! select 'a' ~ '()*\1';
! ?column?
! ----------
! t
! (1 row)
!
! select 'a' ~ '()+\1';
! ?column?
! ----------
! t
! (1 row)
!
! -- Error conditions
! select 'xyz' ~ 'x(\w)(?=\1)'; -- no backrefs in LACONs
! ERROR: invalid regular expression: invalid backreference number
! select 'xyz' ~ 'x(\w)(?=(\1))';
! ERROR: invalid regular expression: invalid backreference number
! select 'a' ~ '\x7fffffff'; -- invalid chr code
! ERROR: invalid regular expression: invalid escape \ sequence
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
*** /home/postgres/postgres-xl.cassert/../postgres-xl/src/test/regress/expected/oidjoins.out 2016-04-02 21:48:58.128774811 +0000
--- /home/postgres/postgres-xl.cassert/src/test/regress/results/oidjoins.out 2016-04-04 03:18:31.335081027 +0000
***************
*** 1,1347 ****
! --
! -- This is created by pgsql/src/tools/findoidjoins/make_oidjoins_check
! --
! SELECT ctid, aggfnoid
! FROM pg_catalog.pg_aggregate fk
! WHERE aggfnoid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggfnoid);
! ctid | aggfnoid
! ------+----------
! (0 rows)
!
! SELECT ctid, aggtransfn
! FROM pg_catalog.pg_aggregate fk
! WHERE aggtransfn != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggtransfn);
! ctid | aggtransfn
! ------+------------
! (0 rows)
!
! SELECT ctid, aggfinalfn
! FROM pg_catalog.pg_aggregate fk
! WHERE aggfinalfn != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggfinalfn);
! ctid | aggfinalfn
! ------+------------
! (0 rows)
!
! SELECT ctid, aggmtransfn
! FROM pg_catalog.pg_aggregate fk
! WHERE aggmtransfn != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggmtransfn);
! ctid | aggmtransfn
! ------+-------------
! (0 rows)
!
! SELECT ctid, aggminvtransfn
! FROM pg_catalog.pg_aggregate fk
! WHERE aggminvtransfn != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggminvtransfn);
! ctid | aggminvtransfn
! ------+----------------
! (0 rows)
!
! SELECT ctid, aggmfinalfn
! FROM pg_catalog.pg_aggregate fk
! WHERE aggmfinalfn != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggmfinalfn);
! ctid | aggmfinalfn
! ------+-------------
! (0 rows)
!
! SELECT ctid, aggsortop
! FROM pg_catalog.pg_aggregate fk
! WHERE aggsortop != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.aggsortop);
! ctid | aggsortop
! ------+-----------
! (0 rows)
!
! SELECT ctid, aggtranstype
! FROM pg_catalog.pg_aggregate fk
! WHERE aggtranstype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.aggtranstype);
! ctid | aggtranstype
! ------+--------------
! (0 rows)
!
! SELECT ctid, aggmtranstype
! FROM pg_catalog.pg_aggregate fk
! WHERE aggmtranstype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.aggmtranstype);
! ctid | aggmtranstype
! ------+---------------
! (0 rows)
!
! SELECT ctid, amkeytype
! FROM pg_catalog.pg_am fk
! WHERE amkeytype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.amkeytype);
! ctid | amkeytype
! ------+-----------
! (0 rows)
!
! SELECT ctid, aminsert
! FROM pg_catalog.pg_am fk
! WHERE aminsert != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aminsert);
! ctid | aminsert
! ------+----------
! (0 rows)
!
! SELECT ctid, ambeginscan
! FROM pg_catalog.pg_am fk
! WHERE ambeginscan != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.ambeginscan);
! ctid | ambeginscan
! ------+-------------
! (0 rows)
!
! SELECT ctid, amgettuple
! FROM pg_catalog.pg_am fk
! WHERE amgettuple != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amgettuple);
! ctid | amgettuple
! ------+------------
! (0 rows)
!
! SELECT ctid, amgetbitmap
! FROM pg_catalog.pg_am fk
! WHERE amgetbitmap != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amgetbitmap);
! ctid | amgetbitmap
! ------+-------------
! (0 rows)
!
! SELECT ctid, amrescan
! FROM pg_catalog.pg_am fk
! WHERE amrescan != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amrescan);
! ctid | amrescan
! ------+----------
! (0 rows)
!
! SELECT ctid, amendscan
! FROM pg_catalog.pg_am fk
! WHERE amendscan != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amendscan);
! ctid | amendscan
! ------+-----------
! (0 rows)
!
! SELECT ctid, ammarkpos
! FROM pg_catalog.pg_am fk
! WHERE ammarkpos != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.ammarkpos);
! ctid | ammarkpos
! ------+-----------
! (0 rows)
!
! SELECT ctid, amrestrpos
! FROM pg_catalog.pg_am fk
! WHERE amrestrpos != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amrestrpos);
! ctid | amrestrpos
! ------+------------
! (0 rows)
!
! SELECT ctid, ambuild
! FROM pg_catalog.pg_am fk
! WHERE ambuild != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.ambuild);
! ctid | ambuild
! ------+---------
! (0 rows)
!
! SELECT ctid, ambuildempty
! FROM pg_catalog.pg_am fk
! WHERE ambuildempty != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.ambuildempty);
! ctid | ambuildempty
! ------+--------------
! (0 rows)
!
! SELECT ctid, ambulkdelete
! FROM pg_catalog.pg_am fk
! WHERE ambulkdelete != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.ambulkdelete);
! ctid | ambulkdelete
! ------+--------------
! (0 rows)
!
! SELECT ctid, amvacuumcleanup
! FROM pg_catalog.pg_am fk
! WHERE amvacuumcleanup != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amvacuumcleanup);
! ctid | amvacuumcleanup
! ------+-----------------
! (0 rows)
!
! SELECT ctid, amcanreturn
! FROM pg_catalog.pg_am fk
! WHERE amcanreturn != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amcanreturn);
! ctid | amcanreturn
! ------+-------------
! (0 rows)
!
! SELECT ctid, amcostestimate
! FROM pg_catalog.pg_am fk
! WHERE amcostestimate != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amcostestimate);
! ctid | amcostestimate
! ------+----------------
! (0 rows)
!
! SELECT ctid, amoptions
! FROM pg_catalog.pg_am fk
! WHERE amoptions != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amoptions);
! ctid | amoptions
! ------+-----------
! (0 rows)
!
! SELECT ctid, amopfamily
! FROM pg_catalog.pg_amop fk
! WHERE amopfamily != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opfamily pk WHERE pk.oid = fk.amopfamily);
! ctid | amopfamily
! ------+------------
! (0 rows)
!
! SELECT ctid, amoplefttype
! FROM pg_catalog.pg_amop fk
! WHERE amoplefttype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.amoplefttype);
! ctid | amoplefttype
! ------+--------------
! (0 rows)
!
! SELECT ctid, amoprighttype
! FROM pg_catalog.pg_amop fk
! WHERE amoprighttype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.amoprighttype);
! ctid | amoprighttype
! ------+---------------
! (0 rows)
!
! SELECT ctid, amopopr
! FROM pg_catalog.pg_amop fk
! WHERE amopopr != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.amopopr);
! ctid | amopopr
! ------+---------
! (0 rows)
!
! SELECT ctid, amopmethod
! FROM pg_catalog.pg_amop fk
! WHERE amopmethod != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_am pk WHERE pk.oid = fk.amopmethod);
! ctid | amopmethod
! ------+------------
! (0 rows)
!
! SELECT ctid, amopsortfamily
! FROM pg_catalog.pg_amop fk
! WHERE amopsortfamily != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opfamily pk WHERE pk.oid = fk.amopsortfamily);
! ctid | amopsortfamily
! ------+----------------
! (0 rows)
!
! SELECT ctid, amprocfamily
! FROM pg_catalog.pg_amproc fk
! WHERE amprocfamily != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opfamily pk WHERE pk.oid = fk.amprocfamily);
! ctid | amprocfamily
! ------+--------------
! (0 rows)
!
! SELECT ctid, amproclefttype
! FROM pg_catalog.pg_amproc fk
! WHERE amproclefttype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.amproclefttype);
! ctid | amproclefttype
! ------+----------------
! (0 rows)
!
! SELECT ctid, amprocrighttype
! FROM pg_catalog.pg_amproc fk
! WHERE amprocrighttype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.amprocrighttype);
! ctid | amprocrighttype
! ------+-----------------
! (0 rows)
!
! SELECT ctid, amproc
! FROM pg_catalog.pg_amproc fk
! WHERE amproc != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amproc);
! ctid | amproc
! ------+--------
! (0 rows)
!
! SELECT ctid, adrelid
! FROM pg_catalog.pg_attrdef fk
! WHERE adrelid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.adrelid);
! ctid | adrelid
! ------+---------
! (0 rows)
!
! SELECT ctid, attrelid
! FROM pg_catalog.pg_attribute fk
! WHERE attrelid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.attrelid);
! ctid | attrelid
! ------+----------
! (0 rows)
!
! SELECT ctid, atttypid
! FROM pg_catalog.pg_attribute fk
! WHERE atttypid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.atttypid);
! ctid | atttypid
! ------+----------
! (0 rows)
!
! SELECT ctid, attcollation
! FROM pg_catalog.pg_attribute fk
! WHERE attcollation != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.attcollation);
! ctid | attcollation
! ------+--------------
! (0 rows)
!
! SELECT ctid, castsource
! FROM pg_catalog.pg_cast fk
! WHERE castsource != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.castsource);
! ctid | castsource
! ------+------------
! (0 rows)
!
! SELECT ctid, casttarget
! FROM pg_catalog.pg_cast fk
! WHERE casttarget != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.casttarget);
! ctid | casttarget
! ------+------------
! (0 rows)
!
! SELECT ctid, castfunc
! FROM pg_catalog.pg_cast fk
! WHERE castfunc != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.castfunc);
! ctid | castfunc
! ------+----------
! (0 rows)
!
! SELECT ctid, relnamespace
! FROM pg_catalog.pg_class fk
! WHERE relnamespace != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.relnamespace);
! ctid | relnamespace
! ------+--------------
! (0 rows)
!
! SELECT ctid, reltype
! FROM pg_catalog.pg_class fk
! WHERE reltype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.reltype);
! ctid | reltype
! ------+---------
! (0 rows)
!
! SELECT ctid, reloftype
! FROM pg_catalog.pg_class fk
! WHERE reloftype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.reloftype);
! ctid | reloftype
! ------+-----------
! (0 rows)
!
! SELECT ctid, relowner
! FROM pg_catalog.pg_class fk
! WHERE relowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.relowner);
! ctid | relowner
! ------+----------
! (0 rows)
!
! SELECT ctid, relam
! FROM pg_catalog.pg_class fk
! WHERE relam != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_am pk WHERE pk.oid = fk.relam);
! ctid | relam
! ------+-------
! (0 rows)
!
! SELECT ctid, reltablespace
! FROM pg_catalog.pg_class fk
! WHERE reltablespace != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_tablespace pk WHERE pk.oid = fk.reltablespace);
! ctid | reltablespace
! ------+---------------
! (0 rows)
!
! SELECT ctid, reltoastrelid
! FROM pg_catalog.pg_class fk
! WHERE reltoastrelid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.reltoastrelid);
! ctid | reltoastrelid
! ------+---------------
! (0 rows)
!
! SELECT ctid, collnamespace
! FROM pg_catalog.pg_collation fk
! WHERE collnamespace != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.collnamespace);
! ctid | collnamespace
! ------+---------------
! (0 rows)
!
! SELECT ctid, collowner
! FROM pg_catalog.pg_collation fk
! WHERE collowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.collowner);
! ctid | collowner
! ------+-----------
! (0 rows)
!
! SELECT ctid, connamespace
! FROM pg_catalog.pg_constraint fk
! WHERE connamespace != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.connamespace);
! ctid | connamespace
! ------+--------------
! (0 rows)
!
! SELECT ctid, conrelid
! FROM pg_catalog.pg_constraint fk
! WHERE conrelid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.conrelid);
! ctid | conrelid
! ------+----------
! (0 rows)
!
! SELECT ctid, contypid
! FROM pg_catalog.pg_constraint fk
! WHERE contypid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.contypid);
! ctid | contypid
! ------+----------
! (0 rows)
!
! SELECT ctid, conindid
! FROM pg_catalog.pg_constraint fk
! WHERE conindid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.conindid);
! ctid | conindid
! ------+----------
! (0 rows)
!
! SELECT ctid, confrelid
! FROM pg_catalog.pg_constraint fk
! WHERE confrelid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.confrelid);
! ctid | confrelid
! ------+-----------
! (0 rows)
!
! SELECT ctid, connamespace
! FROM pg_catalog.pg_conversion fk
! WHERE connamespace != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.connamespace);
! ctid | connamespace
! ------+--------------
! (0 rows)
!
! SELECT ctid, conowner
! FROM pg_catalog.pg_conversion fk
! WHERE conowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.conowner);
! ctid | conowner
! ------+----------
! (0 rows)
!
! SELECT ctid, conproc
! FROM pg_catalog.pg_conversion fk
! WHERE conproc != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.conproc);
! ctid | conproc
! ------+---------
! (0 rows)
!
! SELECT ctid, datdba
! FROM pg_catalog.pg_database fk
! WHERE datdba != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.datdba);
! ctid | datdba
! ------+--------
! (0 rows)
!
! SELECT ctid, dattablespace
! FROM pg_catalog.pg_database fk
! WHERE dattablespace != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_tablespace pk WHERE pk.oid = fk.dattablespace);
! ctid | dattablespace
! ------+---------------
! (0 rows)
!
! SELECT ctid, setdatabase
! FROM pg_catalog.pg_db_role_setting fk
! WHERE setdatabase != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_database pk WHERE pk.oid = fk.setdatabase);
! ctid | setdatabase
! ------+-------------
! (0 rows)
!
! SELECT ctid, classid
! FROM pg_catalog.pg_depend fk
! WHERE classid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.classid);
! ctid | classid
! ------+---------
! (0 rows)
!
! SELECT ctid, refclassid
! FROM pg_catalog.pg_depend fk
! WHERE refclassid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.refclassid);
! ctid | refclassid
! ------+------------
! (0 rows)
!
! SELECT ctid, classoid
! FROM pg_catalog.pg_description fk
! WHERE classoid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.classoid);
! ctid | classoid
! ------+----------
! (0 rows)
!
! SELECT ctid, enumtypid
! FROM pg_catalog.pg_enum fk
! WHERE enumtypid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.enumtypid);
! ctid | enumtypid
! ------+-----------
! (0 rows)
!
! SELECT ctid, extowner
! FROM pg_catalog.pg_extension fk
! WHERE extowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.extowner);
! ctid | extowner
! ------+----------
! (0 rows)
!
! SELECT ctid, extnamespace
! FROM pg_catalog.pg_extension fk
! WHERE extnamespace != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.extnamespace);
! ctid | extnamespace
! ------+--------------
! (0 rows)
!
! SELECT ctid, fdwowner
! FROM pg_catalog.pg_foreign_data_wrapper fk
! WHERE fdwowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.fdwowner);
! ctid | fdwowner
! ------+----------
! (0 rows)
!
! SELECT ctid, srvowner
! FROM pg_catalog.pg_foreign_server fk
! WHERE srvowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.srvowner);
! ctid | srvowner
! ------+----------
! (0 rows)
!
! SELECT ctid, srvfdw
! FROM pg_catalog.pg_foreign_server fk
! WHERE srvfdw != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_foreign_data_wrapper pk WHERE pk.oid = fk.srvfdw);
! ctid | srvfdw
! ------+--------
! (0 rows)
!
! SELECT ctid, indexrelid
! FROM pg_catalog.pg_index fk
! WHERE indexrelid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.indexrelid);
! ctid | indexrelid
! ------+------------
! (0 rows)
!
! SELECT ctid, indrelid
! FROM pg_catalog.pg_index fk
! WHERE indrelid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.indrelid);
! ctid | indrelid
! ------+----------
! (0 rows)
!
! SELECT ctid, inhrelid
! FROM pg_catalog.pg_inherits fk
! WHERE inhrelid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.inhrelid);
! ctid | inhrelid
! ------+----------
! (0 rows)
!
! SELECT ctid, inhparent
! FROM pg_catalog.pg_inherits fk
! WHERE inhparent != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.inhparent);
! ctid | inhparent
! ------+-----------
! (0 rows)
!
! SELECT ctid, lanowner
! FROM pg_catalog.pg_language fk
! WHERE lanowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.lanowner);
! ctid | lanowner
! ------+----------
! (0 rows)
!
! SELECT ctid, lanplcallfoid
! FROM pg_catalog.pg_language fk
! WHERE lanplcallfoid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.lanplcallfoid);
! ctid | lanplcallfoid
! ------+---------------
! (0 rows)
!
! SELECT ctid, laninline
! FROM pg_catalog.pg_language fk
! WHERE laninline != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.laninline);
! ctid | laninline
! ------+-----------
! (0 rows)
!
! SELECT ctid, lanvalidator
! FROM pg_catalog.pg_language fk
! WHERE lanvalidator != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.lanvalidator);
! ctid | lanvalidator
! ------+--------------
! (0 rows)
!
! SELECT ctid, loid
! FROM pg_catalog.pg_largeobject fk
! WHERE loid != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_largeobject_metadata pk WHERE pk.oid = fk.loid);
! ctid | loid
! ------+------
! (0 rows)
!
! SELECT ctid, lomowner
! FROM pg_catalog.pg_largeobject_metadata fk
! WHERE lomowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.lomowner);
! ctid | lomowner
! ------+----------
! (0 rows)
!
! SELECT ctid, nspowner
! FROM pg_catalog.pg_namespace fk
! WHERE nspowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.nspowner);
! ctid | nspowner
! ------+----------
! (0 rows)
!
! SELECT ctid, opcmethod
! FROM pg_catalog.pg_opclass fk
! WHERE opcmethod != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_am pk WHERE pk.oid = fk.opcmethod);
! ctid | opcmethod
! ------+-----------
! (0 rows)
!
! SELECT ctid, opcnamespace
! FROM pg_catalog.pg_opclass fk
! WHERE opcnamespace != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.opcnamespace);
! ctid | opcnamespace
! ------+--------------
! (0 rows)
!
! SELECT ctid, opcowner
! FROM pg_catalog.pg_opclass fk
! WHERE opcowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.opcowner);
! ctid | opcowner
! ------+----------
! (0 rows)
!
! SELECT ctid, opcfamily
! FROM pg_catalog.pg_opclass fk
! WHERE opcfamily != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opfamily pk WHERE pk.oid = fk.opcfamily);
! ctid | opcfamily
! ------+-----------
! (0 rows)
!
! SELECT ctid, opcintype
! FROM pg_catalog.pg_opclass fk
! WHERE opcintype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.opcintype);
! ctid | opcintype
! ------+-----------
! (0 rows)
!
! SELECT ctid, opckeytype
! FROM pg_catalog.pg_opclass fk
! WHERE opckeytype != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.opckeytype);
! ctid | opckeytype
! ------+------------
! (0 rows)
!
! SELECT ctid, oprnamespace
! FROM pg_catalog.pg_operator fk
! WHERE oprnamespace != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.oprnamespace);
! ctid | oprnamespace
! ------+--------------
! (0 rows)
!
! SELECT ctid, oprowner
! FROM pg_catalog.pg_operator fk
! WHERE oprowner != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.oprowner);
! ctid | oprowner
! ------+----------
! (0 rows)
!
! SELECT ctid, oprleft
! FROM pg_catalog.pg_operator fk
! WHERE oprleft != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.oprleft);
! ctid | oprleft
! ------+---------
! (0 rows)
!
! SELECT ctid, oprright
! FROM pg_catalog.pg_operator fk
! WHERE oprright != 0 AND
! NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.oprright);
! ctid | oprright
! ------+----------
! (0 rows)
!
! SELECT ctid, oprresult
! FROM pg_catalog.pg_operator fk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment