-- pg_regress should ensure that this default value applies; however
-- we can't rely on any specific default value of vacuum_cost_delay
SHOW datestyle;
   DateStyle   
---------------
 Postgres, MDY
(1 row)

-- SET to some nondefault value
SET vacuum_cost_delay TO 400;
SET datestyle = 'ISO, YMD';
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 400ms
(1 row)

SHOW datestyle;
 DateStyle 
-----------
 ISO, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

-- SET LOCAL has no effect outside of a transaction
SET LOCAL vacuum_cost_delay TO 500;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 400ms
(1 row)

SET LOCAL datestyle = 'SQL';
SHOW datestyle;
 DateStyle 
-----------
 ISO, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

-- SET LOCAL within a transaction that commits
BEGIN;
SET LOCAL vacuum_cost_delay TO 500;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 500ms
(1 row)

SET LOCAL datestyle = 'SQL';
SHOW datestyle;
 DateStyle 
-----------
 SQL, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
       timestamptz       
-------------------------
 08/13/2006 12:34:56 PDT
(1 row)

COMMIT;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 400ms
(1 row)

SHOW datestyle;
 DateStyle 
-----------
 ISO, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

-- SET should be reverted after ROLLBACK
BEGIN;
SET vacuum_cost_delay TO 600;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 600ms
(1 row)

SET datestyle = 'German';
SHOW datestyle;
  DateStyle  
-------------
 German, DMY
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
       timestamptz       
-------------------------
 13.08.2006 12:34:56 PDT
(1 row)

ROLLBACK;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 400ms
(1 row)

SHOW datestyle;
 DateStyle 
-----------
 ISO, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

-- Some tests with subtransactions
BEGIN;
SET vacuum_cost_delay TO 700;
SET datestyle = 'MDY';
SHOW datestyle;
 DateStyle 
-----------
 ISO, MDY
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

SAVEPOINT first_sp;
SET vacuum_cost_delay TO 800;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 800ms
(1 row)

SET datestyle = 'German, DMY';
SHOW datestyle;
  DateStyle  
-------------
 German, DMY
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
       timestamptz       
-------------------------
 13.08.2006 12:34:56 PDT
(1 row)

ROLLBACK TO first_sp;
SHOW datestyle;
 DateStyle 
-----------
 ISO, MDY
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

SAVEPOINT second_sp;
SET vacuum_cost_delay TO 900;
SET datestyle = 'SQL, YMD';
SHOW datestyle;
 DateStyle 
-----------
 SQL, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
       timestamptz       
-------------------------
 08/13/2006 12:34:56 PDT
(1 row)

SAVEPOINT third_sp;
SET vacuum_cost_delay TO 1000;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 1s
(1 row)

SET datestyle = 'Postgres, MDY';
SHOW datestyle;
   DateStyle   
---------------
 Postgres, MDY
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
         timestamptz          
------------------------------
 Sun Aug 13 12:34:56 2006 PDT
(1 row)

ROLLBACK TO third_sp;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 900ms
(1 row)

SHOW datestyle;
 DateStyle 
-----------
 SQL, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
       timestamptz       
-------------------------
 08/13/2006 12:34:56 PDT
(1 row)

ROLLBACK TO second_sp;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 700ms
(1 row)

SHOW datestyle;
 DateStyle 
-----------
 ISO, MDY
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

ROLLBACK;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 400ms
(1 row)

SHOW datestyle;
 DateStyle 
-----------
 ISO, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

-- SET LOCAL with Savepoints
BEGIN;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 400ms
(1 row)

SHOW datestyle;
 DateStyle 
-----------
 ISO, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

SAVEPOINT sp;
SET LOCAL vacuum_cost_delay TO 300;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 300ms
(1 row)

SET LOCAL datestyle = 'Postgres, MDY';
SHOW datestyle;
   DateStyle   
---------------
 Postgres, MDY
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
         timestamptz          
------------------------------
 Sun Aug 13 12:34:56 2006 PDT
(1 row)

ROLLBACK TO sp;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 400ms
(1 row)

SHOW datestyle;
 DateStyle 
-----------
 ISO, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

ROLLBACK;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 400ms
(1 row)

SHOW datestyle;
 DateStyle 
-----------
 ISO, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

-- SET followed by SET LOCAL
BEGIN;
SET vacuum_cost_delay TO 400;
SET LOCAL vacuum_cost_delay TO 500;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 500ms
(1 row)

SET datestyle = 'ISO, DMY';
SET LOCAL datestyle = 'Postgres, MDY';
SHOW datestyle;
   DateStyle   
---------------
 Postgres, MDY
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
         timestamptz          
------------------------------
 Sun Aug 13 12:34:56 2006 PDT
(1 row)

COMMIT;
SHOW vacuum_cost_delay;
 vacuum_cost_delay 
-------------------
 400ms
(1 row)

SHOW datestyle;
 DateStyle 
-----------
 ISO, DMY
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

--
-- Test RESET.  We use datestyle because the reset value is forced by
-- pg_regress, so it doesn't depend on the installation's configuration.
--
SET datestyle = iso, ymd;
SHOW datestyle;
 DateStyle 
-----------
 ISO, YMD
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
      timestamptz       
------------------------
 2006-08-13 12:34:56-07
(1 row)

RESET datestyle;
SHOW datestyle;
   DateStyle   
---------------
 Postgres, MDY
(1 row)

SELECT '2006-08-13 12:34:56'::timestamptz;
         timestamptz          
------------------------------
 Sun Aug 13 12:34:56 2006 PDT
(1 row)

