Add missing operators of the form interval-plus-datetime, as required for
authorTom Lane
Fri, 2 Jul 2004 22:50:23 +0000 (22:50 +0000)
committerTom Lane
Fri, 2 Jul 2004 22:50:23 +0000 (22:50 +0000)
better SQL compliance in this area, per recent discussion.  Mark related
operators as commutators where possible.  (The system doesn't actually care
about commutator marking for operators not returning boolean, at the moment,
but this seems forward-thinking and besides it made it easier to verify
that we hadn't missed any.)
Also, remove interval-minus-time and interval-minus-timetz operators.
I'm not sure how these got in, but they are nonstandard and had very
obviously broken behavior.  (minus is not commutative in anyone's book.)
I doubt anyone had ever used 'em, because we'd surely have gotten a bug
report about it if so.

doc/src/sgml/func.sgml
src/backend/utils/adt/date.c
src/include/catalog/catversion.h
src/include/catalog/pg_operator.h
src/include/catalog/pg_proc.h
src/include/utils/date.h
src/test/regress/expected/horology.out
src/test/regress/sql/horology.sql

index 8a624614e8d196b0dc9730c9fa31f35c3f8ccfe8..cb7a5a00d981115911b43758da245f5dee336c6a 100644 (file)
@@ -1,5 +1,5 @@
 
 
@@ -4689,7 +4689,10 @@ substring('foobar' from 'o(.)b')   o
    All the functions and operators described below that take time or timestamp
    inputs actually come in two variants: one that takes time with time zone or timestamp
    with time zone, and one that takes time without time zone or timestamp without time zone.
-   For brevity, these variants are not shown separately.
+   For brevity, these variants are not shown separately.  Also, the
+   + and * operators come in commutative pairs (for
+   example both date + integer and integer + date); we show only one of each
+   such pair.
   
 
     
@@ -4723,12 +4726,6 @@ substring('foobar' from 'o(.)b')   o
         timestamp '2001-09-28 03:00'
        
 
-       
-         + 
-        time '03:00' + date '2001-09-28'
-        timestamp '2001-09-28 03:00'
-       
-
        
          + 
         interval '1 day' + interval '1 hour'
@@ -4747,12 +4744,6 @@ substring('foobar' from 'o(.)b')   o
         time '04:00'
        
 
-       
-         + 
-        interval '3 hours' + time '01:00'
-        time '04:00'
-       
-
        
          - 
         - interval '23 hours'
@@ -4801,24 +4792,12 @@ substring('foobar' from 'o(.)b')   o
         interval '23:00'
        
 
-       
-         - 
-        interval '2 hours' - time '05:00'
-        time '03:00'
-       
-
        
          - 
         timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00'
         interval '1 day 15:00'
        
 
-       
-         * 
-        double precision '3.5' * interval '1 hour'
-        interval '03:30'
-       
-
        
          * 
         interval '1 hour' * double precision '3.5'
@@ -7332,7 +7311,7 @@ SELECT pg_type_is_visible('myschema.widget'::regtype);
       
        pg_tablespace_databases(tablespace_oid)
        setof oid
-       get set of database oids that have objects in the tablespace
+       get set of database OIDs that have objects in the tablespace
       
      
     
@@ -7373,12 +7352,13 @@ SELECT pg_type_is_visible('myschema.widget'::regtype);
 
   
   pg_tablespace_databases allows usage examination of a
-  tablespace. It will return a set of database oids, that have objects
+  tablespace. It will return a set of OIDs of databases that have objects
   stored in the tablespace. If this function returns any row, the
-  tablespace is assumed not to be empty and cannot be dropped. To
-  display the actual objects populating the tablespace, you will need
-  to connect to the databases returned by 
-  pg_tablespace_databases to query pg_class.
+  tablespace is not empty and cannot be dropped. To
+  display the specific objects populating the tablespace, you will need
+  to connect to the databases identified by 
+  pg_tablespace_databases and query their
+  pg_class catalogs.
   
 
    
index 1caa68d774ba5a191a5394deeb077111ad7ec35e..c4fe0b71dcd5a7a92c215968b896c68f880f4b8a 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.99 2004/06/03 02:08:04 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.100 2004/07/02 22:49:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1531,18 +1531,6 @@ time_mi_interval(PG_FUNCTION_ARGS)
    PG_RETURN_TIMEADT(result);
 }
 
-/* interval_pl_time()
- * Add time to interval.
- */
-Datum
-interval_pl_time(PG_FUNCTION_ARGS)
-{
-   Datum       span = PG_GETARG_DATUM(0);
-   Datum       time = PG_GETARG_DATUM(1);
-
-   return DirectFunctionCall2(time_pl_interval, time, span);
-}
-
 
 /* time_text()
  * Convert time to text data type.
index 98e554e759992b7892526c4cc9c7c60cb7939a02..4550e67057f33b7a0e868f0d50f83b968cae315b 100644 (file)
@@ -37,7 +37,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.242 2004/07/02 18:59:24 joe Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.243 2004/07/02 22:49:48 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,6 +53,6 @@
  */
 
 /*                         yyyymmddN */
-#define CATALOG_VERSION_NO 200407021
+#define CATALOG_VERSION_NO 200407022
 
 #endif
index d0761b148e29980a4ff0aa8d193668c20ee078a4..3305e64dbe0a475009e7ff5f86bb498a660ae8db 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/pg_operator.h,v 1.125 2004/03/22 01:38:17 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/pg_operator.h,v 1.126 2004/07/02 22:49:48 tgl Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -451,7 +451,7 @@ DATA(insert OID = 1074 (  "<="     PGNSP PGUID b f 2277 2277 16 1075 1073  0 0 0
 DATA(insert OID = 1075 (  ">="    PGNSP PGUID b f 2277 2277 16 1074 1072  0 0 0 0 array_ge scalargtsel scalargtjoinsel ));
 
 /* date operators */
-DATA(insert OID = 1076 ( "+"      PGNSP PGUID b f  1082    1186 1114 0 0 0 0 0 0 date_pl_interval - - ));
+DATA(insert OID = 1076 ( "+"      PGNSP PGUID b f  1082    1186 1114 2551 0 0 0 0 0 date_pl_interval - - ));
 DATA(insert OID = 1077 ( "-"      PGNSP PGUID b f  1082    1186 1114 0 0 0 0 0 0 date_mi_interval - - ));
 DATA(insert OID = 1093 ( "="      PGNSP PGUID b t  1082    1082   16 1093 1094 1095 1095 1095 1097 date_eq eqsel eqjoinsel ));
 DATA(insert OID = 1094 ( "<>"     PGNSP PGUID b f  1082    1082   16 1094 1093  0 0 0 0 date_ne neqsel neqjoinsel ));
@@ -460,7 +460,7 @@ DATA(insert OID = 1096 ( "<="      PGNSP PGUID b f  1082    1082   16 1098 1097  0 0 0
 DATA(insert OID = 1097 ( ">"      PGNSP PGUID b f  1082    1082   16 1095 1096  0 0 0 0 date_gt scalargtsel scalargtjoinsel ));
 DATA(insert OID = 1098 ( ">="     PGNSP PGUID b f  1082    1082   16 1096 1095  0 0 0 0 date_ge scalargtsel scalargtjoinsel ));
 DATA(insert OID = 1099 ( "-"      PGNSP PGUID b f  1082    1082   23 0 0 0 0 0 0 date_mi - - ));
-DATA(insert OID = 1100 ( "+"      PGNSP PGUID b f  1082      23 1082 0 0 0 0 0 0 date_pli - - ));
+DATA(insert OID = 1100 ( "+"      PGNSP PGUID b f  1082      23 1082 2555 0 0 0 0 0 date_pli - - ));
 DATA(insert OID = 1101 ( "-"      PGNSP PGUID b f  1082      23 1082 0 0 0 0 0 0 date_mii - - ));
 
 /* time operators */
@@ -470,10 +470,8 @@ DATA(insert OID = 1110 ( "<"      PGNSP PGUID b f  1083    1083  16 1112 1113  0 0   0
 DATA(insert OID = 1111 ( "<="     PGNSP PGUID b f  1083    1083  16 1113 1112  0 0   0   0 time_le scalarltsel scalarltjoinsel ));
 DATA(insert OID = 1112 ( ">"      PGNSP PGUID b f  1083    1083  16 1110 1111  0 0   0   0 time_gt scalargtsel scalargtjoinsel ));
 DATA(insert OID = 1113 ( ">="     PGNSP PGUID b f  1083    1083  16 1111 1110  0 0   0   0 time_ge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 1269 (  "-"     PGNSP PGUID b f  1186 1083 1083 0 0 0 0 0 0 interval_mi_time - - ));
 
 /* timetz operators */
-DATA(insert OID = 1295 (  "-"     PGNSP PGUID b f  1186 1266 1266 0 0 0 0 0 0 interval_mi_timetz - - ));
 DATA(insert OID = 1550 ( "="      PGNSP PGUID b t  1266 1266   16 1550 1551 1552 1552 1552 1554 timetz_eq eqsel eqjoinsel ));
 DATA(insert OID = 1551 ( "<>"     PGNSP PGUID b f  1266 1266   16 1551 1550    0 0   0   0 timetz_ne neqsel neqjoinsel ));
 DATA(insert OID = 1552 ( "<"      PGNSP PGUID b f  1266 1266   16 1554 1555    0 0   0   0 timetz_lt scalarltsel scalarltjoinsel ));
@@ -535,7 +533,7 @@ DATA(insert OID = 1322 (  "<"      PGNSP PGUID b f 1184 1184     16 1324 1325 0 0 0 0
 DATA(insert OID = 1323 (  "<="    PGNSP PGUID b f 1184 1184     16 1325 1324 0 0 0 0 timestamptz_le scalarltsel scalarltjoinsel ));
 DATA(insert OID = 1324 (  ">"     PGNSP PGUID b f 1184 1184     16 1322 1323 0 0 0 0 timestamptz_gt scalargtsel scalargtjoinsel ));
 DATA(insert OID = 1325 (  ">="    PGNSP PGUID b f 1184 1184     16 1323 1322 0 0 0 0 timestamptz_ge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 1327 (  "+"     PGNSP PGUID b f 1184 1186 1184     0 0 0 0 0 timestamptz_pl_interval - - ));
+DATA(insert OID = 1327 (  "+"     PGNSP PGUID b f 1184 1186 1184    2554 0 0 0 0 0 timestamptz_pl_interval - - ));
 DATA(insert OID = 1328 (  "-"     PGNSP PGUID b f 1184 1184 1186    0  0 0 0 0 0 timestamptz_mi - - ));
 DATA(insert OID = 1329 (  "-"     PGNSP PGUID b f 1184 1186 1184    0  0 0 0 0 0 timestamptz_mi_interval - - ));
 
@@ -551,10 +549,10 @@ DATA(insert OID = 1336 (  "-"    PGNSP PGUID l f  0 1186 1186    0    0 0 0 0 0 inte
 DATA(insert OID = 1337 (  "+"     PGNSP PGUID b f 1186 1186 1186 1337  0 0 0 0 0 interval_pl - - ));
 DATA(insert OID = 1338 (  "-"     PGNSP PGUID b f 1186 1186 1186    0  0 0 0 0 0 interval_mi - - ));
 
-DATA(insert OID = 1360 (  "+"     PGNSP PGUID b f 1082 1083 1114    0  0 0 0 0 0 datetime_pl - - ));
-DATA(insert OID = 1361 (  "+"     PGNSP PGUID b f 1082 1266 1184    0  0 0 0 0 0 datetimetz_pl - - ));
-DATA(insert OID = 1363 (  "+"     PGNSP PGUID b f 1083 1082 1114    0  0 0 0 0 0 timedate_pl - - ));
-DATA(insert OID = 1366 (  "+"     PGNSP PGUID b f 1266 1082 1184    0  0 0 0 0 0 timetzdate_pl - - ));
+DATA(insert OID = 1360 (  "+"     PGNSP PGUID b f 1082 1083 1114   1363 0 0 0 0 0 datetime_pl - - ));
+DATA(insert OID = 1361 (  "+"     PGNSP PGUID b f 1082 1266 1184   1366 0 0 0 0 0 datetimetz_pl - - ));
+DATA(insert OID = 1363 (  "+"     PGNSP PGUID b f 1083 1082 1114   1360 0 0 0 0 0 timedate_pl - - ));
+DATA(insert OID = 1366 (  "+"     PGNSP PGUID b f 1266 1082 1184   1361 0 0 0 0 0 timetzdate_pl - - ));
 
 DATA(insert OID = 1399 (  "-"     PGNSP PGUID b f 1083 1083 1186    0  0 0 0 0 0 time_mi_time - - ));
 
@@ -616,8 +614,8 @@ DATA(insert OID = 1567 (  "##"    PGNSP PGUID b f  601  603  600      0  0 0 0 0 0 cl
 DATA(insert OID = 1568 (  "##"   PGNSP PGUID b f  628  603  600      0  0 0 0 0 0 close_lb - - ));
 DATA(insert OID = 1577 (  "##"   PGNSP PGUID b f  628  601  600      0  0 0 0 0 0 close_ls - - ));
 DATA(insert OID = 1578 (  "##"   PGNSP PGUID b f  601  601  600      0  0 0 0 0 0 close_lseg - - ));
-DATA(insert OID = 1583 (  "*"    PGNSP PGUID b f 1186  701 1186      0  0 0 0 0 0 interval_mul - - ));
-DATA(insert OID = 1584 (  "*"    PGNSP PGUID b f  701 1186 1186      0  0 0 0 0 0 mul_d_interval - - ));
+DATA(insert OID = 1583 (  "*"    PGNSP PGUID b f 1186  701 1186    1584 0 0 0 0 0 interval_mul - - ));
+DATA(insert OID = 1584 (  "*"    PGNSP PGUID b f  701 1186 1186    1583 0 0 0 0 0 mul_d_interval - - ));
 DATA(insert OID = 1585 (  "/"    PGNSP PGUID b f 1186  701 1186      0  0 0 0 0 0 interval_div - - ));
 
 DATA(insert OID = 1586 (  "<>"   PGNSP PGUID b f  601  601 16 1586 1535 0 0 0 0 lseg_ne neqsel neqjoinsel ));
@@ -716,9 +714,9 @@ DATA(insert OID = 1795 (  "<<"    PGNSP PGUID b f 1560   23 1560      0    0    0    0   0
 DATA(insert OID = 1796 (  ">>"   PGNSP PGUID b f 1560   23 1560      0    0    0    0   0   0 bitshiftright - - ));
 DATA(insert OID = 1797 (  "||"   PGNSP PGUID b f 1560 1560 1560      0    0    0    0   0   0 bitcat - - ));
 
-DATA(insert OID = 1800 (  "+"     PGNSP PGUID b f 1083 1186 1083     0 0 0 0 0 time_pl_interval - - ));
+DATA(insert OID = 1800 (  "+"     PGNSP PGUID b f 1083 1186 1083    1849 0 0 0 0 0 time_pl_interval - - ));
 DATA(insert OID = 1801 (  "-"     PGNSP PGUID b f 1083 1186 1083    0  0 0 0 0 0 time_mi_interval - - ));
-DATA(insert OID = 1802 (  "+"     PGNSP PGUID b f 1266 1186 1266     0 0 0 0 0 timetz_pl_interval - - ));
+DATA(insert OID = 1802 (  "+"     PGNSP PGUID b f 1266 1186 1266    2552 0 0 0 0 0 timetz_pl_interval - - ));
 DATA(insert OID = 1803 (  "-"     PGNSP PGUID b f 1266 1186 1266    0  0 0 0 0 0 timetz_mi_interval - - ));
 
 DATA(insert OID = 1804 (  "="    PGNSP PGUID b f 1562 1562 16 1804 1805 1806 1806 1806 1807 varbiteq eqsel eqjoinsel ));
@@ -728,7 +726,7 @@ DATA(insert OID = 1807 (  ">"     PGNSP PGUID b f 1562 1562 16 1806 1808    0    0   0
 DATA(insert OID = 1808 (  "<="   PGNSP PGUID b f 1562 1562 16 1809 1807    0    0   0   0 varbitle scalarltsel scalarltjoinsel ));
 DATA(insert OID = 1809 (  ">="   PGNSP PGUID b f 1562 1562 16 1808 1806    0    0   0   0 varbitge scalargtsel scalargtjoinsel ));
 
-DATA(insert OID = 1849 (  "+"     PGNSP PGUID b f 1186 1083 1083     0 0 0 0 0 interval_pl_time - - ));
+DATA(insert OID = 1849 (  "+"     PGNSP PGUID b f 1186 1083 1083    1800 0 0 0 0 0 interval_pl_time - - ));
 
 DATA(insert OID = 1862 ( "="      PGNSP PGUID b f  21  20  16 1868  1863  95 412 1864 1865 int28eq eqsel eqjoinsel ));
 DATA(insert OID = 1863 ( "<>"     PGNSP PGUID b f  21  20  16 1869  1862   0   0   0   0 int28ne neqsel neqjoinsel ));
@@ -791,7 +789,7 @@ DATA(insert OID = 2062 (  "<"      PGNSP PGUID b f 1114 1114     16 2064 2065 0 0 0 0
 DATA(insert OID = 2063 (  "<="    PGNSP PGUID b f 1114 1114     16 2065 2064 0 0 0 0 timestamp_le scalarltsel scalarltjoinsel ));
 DATA(insert OID = 2064 (  ">"     PGNSP PGUID b f 1114 1114     16 2062 2063 0 0 0 0 timestamp_gt scalargtsel scalargtjoinsel ));
 DATA(insert OID = 2065 (  ">="    PGNSP PGUID b f 1114 1114     16 2063 2062 0 0 0 0 timestamp_ge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 2066 (  "+"     PGNSP PGUID b f 1114 1186 1114     0 0 0 0 0 timestamp_pl_interval - - ));
+DATA(insert OID = 2066 (  "+"     PGNSP PGUID b f 1114 1186 1114    2553 0 0 0 0 0 timestamp_pl_interval - - ));
 DATA(insert OID = 2067 (  "-"     PGNSP PGUID b f 1114 1114 1186    0  0 0 0 0 0 timestamp_mi - - ));
 DATA(insert OID = 2068 (  "-"     PGNSP PGUID b f 1114 1186 1114    0  0 0 0 0 0 timestamp_mi_interval - - ));
 
@@ -864,6 +862,13 @@ DATA(insert OID = 2543 ( ">="     PGNSP PGUID b f  1184    1114   16 2535 2540  0 0 0
 DATA(insert OID = 2544 ( ">"      PGNSP PGUID b f  1184    1114   16 2534 2541  0 0 0 0 timestamptz_gt_timestamp scalargtsel scalargtjoinsel ));
 DATA(insert OID = 2545 ( "<>"     PGNSP PGUID b f  1184    1114   16 2539 2542  0 0 0 0 timestamptz_ne_timestamp neqsel neqjoinsel ));
 
+/* formerly-missing interval + datetime operators */
+DATA(insert OID = 2551 (  "+"     PGNSP PGUID b f  1186 1082 1114 1076 0 0 0 0 0 interval_pl_date - - ));
+DATA(insert OID = 2552 (  "+"     PGNSP PGUID b f  1186 1266 1266 1802 0 0 0 0 0 interval_pl_timetz - - ));
+DATA(insert OID = 2553 (  "+"     PGNSP PGUID b f  1186 1114 1114 2066 0 0 0 0 0 interval_pl_timestamp - - ));
+DATA(insert OID = 2554 (  "+"     PGNSP PGUID b f  1186 1184 1184 1327 0 0 0 0 0 interval_pl_timestamptz - - ));
+DATA(insert OID = 2555 (  "+"     PGNSP PGUID b f  23 1082 1082 1100 0 0 0 0 0 integer_pl_date - - ));
+
 
 /*
  * function prototypes
index 8d2485c168d5393379ae9f3c8bf283b5cea38f30..263a3492db5440613125d4c7286abba52f718164 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.340 2004/07/02 18:59:24 joe Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.341 2004/07/02 22:49:48 tgl Exp $
  *
  * NOTES
  *   The script catalog/genbki.sh reads this file and generates .bki
@@ -2677,7 +2677,7 @@ DESCR("encode text from encoding to ASCII text");
 DATA(insert OID = 1847 ( to_ascii  PGNSP PGUID 12 f f t f i 2  25 "25 19" _null_   to_ascii_encname - _null_ ));
 DESCR("encode text from encoding to ASCII text");
 
-DATA(insert OID = 1848 ( interval_pl_time      PGNSP PGUID 12 f f t f i 2 1083 "1186 1083" _null_  interval_pl_time - _null_ ));
+DATA(insert OID = 1848 ( interval_pl_time  PGNSP PGUID 14 f f t f i 2 1083 "1186 1083" _null_  "select $2 + $1" - _null_ ));
 DESCR("plus");
 
 DATA(insert OID = 1850 (  int28eq         PGNSP PGUID 12 f f t f i 2 16 "21 20" _null_ int28eq - _null_ ));
@@ -2938,10 +2938,6 @@ DATA(insert OID = 2048 (  isfinite           PGNSP PGUID 12 f f t f i 1   16 "1114" _null
 DESCR("finite timestamp?");
 DATA(insert OID = 2049 ( to_char           PGNSP PGUID 12 f f t f s 2  25 "1114 25" _null_  timestamp_to_char - _null_ ));
 DESCR("format timestamp to text");
-DATA(insert OID = 2050 ( interval_mi_time  PGNSP PGUID 14 f f t f i 2 1083 "1186 1083" _null_  "select $2 - $1" - _null_ ));
-DESCR("minus");
-DATA(insert OID = 2051 ( interval_mi_timetz PGNSP PGUID 14 f f t f i 2 1266 "1186 1266" _null_  "select $2 - $1" - _null_ ));
-DESCR("minus");
 DATA(insert OID = 2052 (  timestamp_eq     PGNSP PGUID 12 f f t f i 2 16 "1114 1114" _null_  timestamp_eq - _null_ ));
 DESCR("equal");
 DATA(insert OID = 2053 (  timestamp_ne     PGNSP PGUID 12 f f t f i 2 16 "1114 1114" _null_  timestamp_ne - _null_ ));
@@ -3553,19 +3549,16 @@ DATA(insert OID = 1066 (  generate_series PGNSP PGUID 12 f f t t v 3 23 "23 23 2
 DESCR("non-persistent series generator");
 DATA(insert OID = 1067 (  generate_series PGNSP PGUID 12 f f t t v 2 23 "23 23" _null_ generate_series_int4 - _null_ ));
 DESCR("non-persistent series generator");
-
 DATA(insert OID = 1068 (  generate_series PGNSP PGUID 12 f f t t v 3 20 "20 20 20" _null_ generate_series_step_int8 - _null_ ));
 DESCR("non-persistent series generator");
 DATA(insert OID = 1069 (  generate_series PGNSP PGUID 12 f f t t v 2 20 "20 20" _null_ generate_series_int8 - _null_ ));
 DESCR("non-persistent series generator");
 
-
 /* boolean aggregates */
 DATA(insert OID = 2515 ( booland_statefunc             PGNSP PGUID 12 f f t f i 2 16 "16 16" _null_ booland_statefunc - _null_ ));
 DESCR("boolean-and aggregate transition function");
 DATA(insert OID = 2516 ( boolor_statefunc              PGNSP PGUID 12 f f t f i 2 16 "16 16" _null_ boolor_statefunc - _null_ ));
 DESCR("boolean-or aggregate transition function");
-
 DATA(insert OID = 2517 ( bool_and                     PGNSP PGUID 12 t f f f i 1 16 "16" _null_ aggregate_dummy - _null_ ));
 DESCR("boolean-and aggregate");
 /* ANY, SOME? These names conflict with subquery operators. See doc. */
@@ -3579,25 +3572,30 @@ DATA(insert OID = 2236 ( bit_and                       PGNSP PGUID 12 t f f f i 1 21 "21" _nul
 DESCR("bitwise-and smallint aggregate");
 DATA(insert OID = 2237 ( bit_or                           PGNSP PGUID 12 t f f f i 1 21 "21" _null_ aggregate_dummy - _null_));
 DESCR("bitwise-or smallint aggregate");
-
 DATA(insert OID = 2238 ( bit_and                      PGNSP PGUID 12 t f f f i 1 23 "23" _null_ aggregate_dummy - _null_));
 DESCR("bitwise-and integer aggregate");
 DATA(insert OID = 2239 ( bit_or                           PGNSP PGUID 12 t f f f i 1 23 "23" _null_ aggregate_dummy - _null_));
 DESCR("bitwise-or integer aggregate");
-
 DATA(insert OID = 2240 ( bit_and                      PGNSP PGUID 12 t f f f i 1 20 "20" _null_ aggregate_dummy - _null_));
 DESCR("bitwise-and bigint aggregate");
 DATA(insert OID = 2241 ( bit_or                           PGNSP PGUID 12 t f f f i 1 20 "20" _null_ aggregate_dummy - _null_));
 DESCR("bitwise-or bigint aggregate");
-
 DATA(insert OID = 2242 ( bit_and                      PGNSP PGUID 12 t f f f i 1 1560 "1560" _null_ aggregate_dummy - _null_));
 DESCR("bitwise-and bit aggregate");
 DATA(insert OID = 2243 ( bit_or                           PGNSP PGUID 12 t f f f i 1 1560 "1560" _null_ aggregate_dummy - _null_));
 DESCR("bitwise-or bit aggregate");
 
-DATA(insert OID = 2554(  pg_tablespace_databases       PGNSP PGUID 12 f f t t s 1 26 "26" _null_ pg_tablespace_databases - _null_));
+/* formerly-missing interval + datetime operators */
+DATA(insert OID = 2546 ( interval_pl_date          PGNSP PGUID 14 f f t f i 2 1114 "1186 1082" _null_  "select $2 + $1" - _null_ ));
+DATA(insert OID = 2547 ( interval_pl_timetz            PGNSP PGUID 14 f f t f i 2 1266 "1186 1266" _null_  "select $2 + $1" - _null_ ));
+DATA(insert OID = 2548 ( interval_pl_timestamp     PGNSP PGUID 14 f f t f i 2 1114 "1186 1114" _null_  "select $2 + $1" - _null_ ));
+DATA(insert OID = 2549 ( interval_pl_timestamptz   PGNSP PGUID 14 f f t f i 2 1184 "1186 1184" _null_  "select $2 + $1" - _null_ ));
+DATA(insert OID = 2550 ( integer_pl_date           PGNSP PGUID 14 f f t f i 2 1082 "23 1082" _null_  "select $2 + $1" - _null_ ));
+
+DATA(insert OID = 2556 ( pg_tablespace_databases   PGNSP PGUID 12 f f t t s 1 26 "26" _null_ pg_tablespace_databases - _null_));
 DESCR("returns database oids in a tablespace");
 
+
 /*
  * Symbolic values for provolatile column: these indicate whether the result
  * of a function is dependent *only* on the values of its explicit arguments,
index 910bac4ec4a75998990cbad0dd666a7720c75025..64d448b389c33d227a29c4b4f472e710e3351167 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/utils/date.h,v 1.26 2004/02/14 20:16:18 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/utils/date.h,v 1.27 2004/07/02 22:50:06 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -147,7 +147,6 @@ extern Datum text_time(PG_FUNCTION_ARGS);
 extern Datum time_text(PG_FUNCTION_ARGS);
 extern Datum time_pl_interval(PG_FUNCTION_ARGS);
 extern Datum time_mi_interval(PG_FUNCTION_ARGS);
-extern Datum interval_pl_time(PG_FUNCTION_ARGS);
 extern Datum time_part(PG_FUNCTION_ARGS);
 
 extern Datum timetz_in(PG_FUNCTION_ARGS);
index 4523947b5652784acd598400d72d8d2009fe58ed..188b8e7b78ae008dbc180dc10c884e6c0589700e 100644 (file)
@@ -805,12 +805,6 @@ SELECT time '03:30' + interval '1 month 04:01' AS "07:31:00";
  07:31:00
 (1 row)
 
-SELECT interval '04:30' - time '01:02' AS "20:32:00";
- 20:32:00 
-----------
- 20:32: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
 SELECT CAST(interval '02:03' AS time with time zone) AS "02:03:00-08";
@@ -846,12 +840,6 @@ SELECT CAST(cast(date 'today' + time with time zone '03:30'
  07:31:00
 (1 row)
 
-SELECT interval '04:30' - time with time zone '01:02-05' AS "20:32:00-05";
- 20:32:00-05 
--------------
- 20:32:00-05
-(1 row)
-
 SELECT t.d1 + i.f1 AS "102" 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';
index c9171b28bdd0f47b5789c00a2c19f6536c8d4fac..874700c4b92d901f4ecd5c38836d7b978654467b 100644 (file)
@@ -133,7 +133,6 @@ SELECT time '01:30' + interval '02:01' AS "03:31:00";
 SELECT time '01:30' - interval '02:01' AS "23:29:00";
 SELECT time '02:30' + interval '36:01' AS "14:31:00";
 SELECT time '03:30' + interval '1 month 04:01' AS "07:31:00";
-SELECT interval '04:30' - time '01:02' AS "20:32:00";
 SELECT CAST(time with time zone '01:02-08' AS interval) AS "+00:01";
 SELECT CAST(interval '02:03' AS time with time zone) AS "02:03:00-08";
 SELECT time with time zone '01:30-08' - interval '02:01' AS "23:29:00-08";
@@ -151,8 +150,6 @@ SELECT CAST(CAST(date 'today' + time with time zone '01:30'
 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";
 
-SELECT interval '04:30' - time with time zone '01:02-05' AS "20:32:00-05";
-
 SELECT t.d1 + i.f1 AS "102" 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';