This adds unary plus capability. No grammar changes, per Tom's request.
authorBruce Momjian
Thu, 7 Jun 2001 00:09:32 +0000 (00:09 +0000)
committerBruce Momjian
Thu, 7 Jun 2001 00:09:32 +0000 (00:09 +0000)
Marko Kreen

src/backend/commands/command.c
src/backend/utils/adt/float.c
src/backend/utils/adt/int.c
src/backend/utils/adt/int8.c
src/backend/utils/adt/numeric.c
src/include/catalog/pg_operator.h
src/include/catalog/pg_proc.h
src/include/utils/builtins.h
src/include/utils/int8.h
src/interfaces/jdbc/org/postgresql/Connection.java

index b6e745c4656e5f0610f1fcd9d717ff496f96d25d..e50b9407b7eaafac7b36fa78afe6f5584b8e60dd 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.131 2001/05/30 13:00:03 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.132 2001/06/07 00:09:28 momjian Exp $
  *
  * NOTES
  *   The PerformAddAttribute() code, like most of the relation
@@ -176,6 +176,12 @@ PerformPortalFetch(char *name,
        if (!portal->atEnd)
        {
            ExecutorRun(queryDesc, estate, EXEC_FOR, (long) count);
+           /*
+            *  I use CMD_UPDATE, because no CMD_MOVE or the like
+            *  exists, and I would like to provide the same
+            *  kind of info as CMD_UPDATE
+            */
+           UpdateCommandInfo(CMD_UPDATE, 0, estate->es_processed);
            if (estate->es_processed > 0)
                portal->atStart = false;        /* OK to back up now */
            if (count <= 0 || (int) estate->es_processed < count)
@@ -187,6 +193,12 @@ PerformPortalFetch(char *name,
        if (!portal->atStart)
        {
            ExecutorRun(queryDesc, estate, EXEC_BACK, (long) count);
+           /*
+            *  I use CMD_UPDATE, because no CMD_MOVE or the like
+            *  exists, and I would like to provide the same
+            *  kind of info as CMD_UPDATE
+            */
+           UpdateCommandInfo(CMD_UPDATE, 0, estate->es_processed);
            if (estate->es_processed > 0)
                portal->atEnd = false;  /* OK to go forward now */
            if (count <= 0 || (int) estate->es_processed < count)
index da8ed2e29d423d26a0271932fb54dc45620ba5d2..8e5408af312be5249ab284b2e57306637af0eee9 100644 (file)
@@ -8,16 +8,16 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.73 2001/06/02 20:18:30 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.74 2001/06/07 00:09:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 /*----------
  * OLD COMMENTS
  *     Basic float4 ops:
- *      float4in, float4out, float4abs, float4um
+ *      float4in, float4out, float4abs, float4um, float4up
  *     Basic float8 ops:
- *      float8in, float8out, float8abs, float8um
+ *      float8in, float8out, float8abs, float8um, float8up
  *     Arithmetic operators:
  *      float4pl, float4mi, float4mul, float4div
  *      float8pl, float8mi, float8mul, float8div
@@ -340,6 +340,13 @@ float4um(PG_FUNCTION_ARGS)
    PG_RETURN_FLOAT4((float4) -arg1);
 }
 
+Datum
+float4up(PG_FUNCTION_ARGS)
+{
+   float4      arg = PG_GETARG_FLOAT4(0);
+   PG_RETURN_FLOAT4(arg);
+}
+
 Datum
 float4larger(PG_FUNCTION_ARGS)
 {
@@ -399,6 +406,13 @@ float8um(PG_FUNCTION_ARGS)
    PG_RETURN_FLOAT8(result);
 }
 
+Datum
+float8up(PG_FUNCTION_ARGS)
+{
+   float8      arg = PG_GETARG_FLOAT8(0);
+   PG_RETURN_FLOAT8(arg);
+}
+
 Datum
 float8larger(PG_FUNCTION_ARGS)
 {
index 00c99805c9e765ac1d5907422f0d42c5fee95371..e04ae89cea059207f5d7a2466025225d4caa8a19 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/int.c,v 1.46 2001/03/22 03:59:51 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/int.c,v 1.47 2001/06/07 00:09:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -563,6 +563,14 @@ int4um(PG_FUNCTION_ARGS)
    PG_RETURN_INT32(-arg);
 }
 
+Datum
+int4up(PG_FUNCTION_ARGS)
+{
+   int32       arg = PG_GETARG_INT32(0);
+
+   PG_RETURN_INT32(arg);
+}
+
 Datum
 int4pl(PG_FUNCTION_ARGS)
 {
@@ -615,6 +623,14 @@ int2um(PG_FUNCTION_ARGS)
    PG_RETURN_INT16(-arg);
 }
 
+Datum
+int2up(PG_FUNCTION_ARGS)
+{
+   int16       arg = PG_GETARG_INT16(0);
+
+   PG_RETURN_INT16(arg);
+}
+
 Datum
 int2pl(PG_FUNCTION_ARGS)
 {
index 3f286069b7d24eb73c13b51a92e396515b2b4d34..055c8439fa46d67379150e4fc03cc78d7f7f0239 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/int8.c,v 1.29 2001/03/22 03:59:51 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/int8.c,v 1.30 2001/06/07 00:09:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -412,6 +412,14 @@ int8um(PG_FUNCTION_ARGS)
    PG_RETURN_INT64(-val);
 }
 
+Datum
+int8up(PG_FUNCTION_ARGS)
+{
+   int64       val = PG_GETARG_INT64(0);
+
+   PG_RETURN_INT64(val);
+}
+
 Datum
 int8pl(PG_FUNCTION_ARGS)
 {
index 99df5331bf6437ab20fa68e71ebbc4255bf54b0a..bb0e8b2b7ef37cfb195b2e68f3e0741b0b1af5c2 100644 (file)
@@ -5,7 +5,7 @@
  *
  * 1998 Jan Wieck
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.41 2001/05/03 19:00:36 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.42 2001/06/07 00:09:29 momjian Exp $
  *
  * ----------
  */
@@ -405,6 +405,19 @@ numeric_uminus(PG_FUNCTION_ARGS)
 }
 
 
+Datum
+numeric_uplus(PG_FUNCTION_ARGS)
+{
+   Numeric     num = PG_GETARG_NUMERIC(0);
+   Numeric     res;
+
+   res = (Numeric) palloc(num->varlen);
+   memcpy(res, num, num->varlen);
+
+   PG_RETURN_NUMERIC(res);
+}
+
+
 Datum
 numeric_sign(PG_FUNCTION_ARGS)
 {
index 7f201ea47171bd96ca62d796c0cc173c06dc5c8a..9e408a2c0361e237662f565511e9c739e42383c3 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_operator.h,v 1.88 2001/03/22 04:00:39 momjian Exp $
+ * $Id: pg_operator.h,v 1.89 2001/06/07 00:09:29 momjian Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -794,6 +794,13 @@ DATA(insert OID = 1889 ( "~"      PGUID 0 l t f   0  20  20     0    0   0  0 int8not
 DATA(insert OID = 1890 ( "<<"     PGUID 0 b t f  20  23  20     0    0   0  0 int8shl - - ));
 DATA(insert OID = 1891 ( ">>"     PGUID 0 b t f  20  23  20     0    0   0  0 int8shr - - ));
 
+DATA(insert OID = 1916 (  "+"     PGUID 0 l t f   0  20  20    0   0   0   0 int8up - - ));
+DATA(insert OID = 1917 (  "+"     PGUID 0 l t f   0  21  21    0   0   0   0 int2up - - ));
+DATA(insert OID = 1918 (  "+"     PGUID 0 l t f   0  23  23    0   0   0   0 int4up - - ));
+DATA(insert OID = 1919 (  "+"     PGUID 0 l t f   0  700 700   0   0   0   0 float4up - - ));
+DATA(insert OID = 1920 (  "+"     PGUID 0 l t f   0  701 701   0   0   0   0 float8up - - ));
+DATA(insert OID = 1921 (  "+"     PGUID 0 l t f   0 1700 1700  0   0   0   0 numeric_uplus - - ));
+
 /*
  * function prototypes
  */
index 83e1e504ccf796ade5df986f64554719b8afba17..1208e686920c9d069c2e7cbf254113304a586d9f 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_proc.h,v 1.188 2001/05/24 09:29:29 petere Exp $
+ * $Id: pg_proc.h,v 1.189 2001/06/07 00:09:30 momjian Exp $
  *
  * NOTES
  *   The script catalog/genbki.sh reads this file and generates .bki
@@ -2614,6 +2614,19 @@ DESCR("binary shift left");
 DATA(insert OID = 1909 (  int8shr         PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int8shr - ));
 DESCR("binary shift right");
 
+DATA(insert OID = 1910 (  int8up          PGUID 12 f t t t 1 f 20  "20"   100 0 0 100  int8up - ));
+DESCR("unary plus");
+DATA(insert OID = 1911 (  int2up          PGUID 12 f t t t 1 f 21  "21"   100 0 0 100  int2up - ));
+DESCR("unary plus");
+DATA(insert OID = 1912 (  int4up          PGUID 12 f t t t 1 f 23  "23"   100 0 0 100  int4up - ));
+DESCR("unary plus");
+DATA(insert OID = 1913 (  float4up        PGUID 12 f t t t 1 f 700 "700"  100 0 0 100  float4up - ));
+DESCR("unary plus");
+DATA(insert OID = 1914 (  float8up        PGUID 12 f t t t 1 f 701 "701"  100 0 0 100  float8up - ));
+DESCR("unary plus");
+DATA(insert OID = 1915 (  numeric_uplus       PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_uplus - ));
+DESCR("unary plus");
+
 /*
  * prototypes for functions pg_proc.c
  */
index 45eb70232415bd1b8f6ad66e5050e58f9976529e..53a12d67fc8cdd1e82c4c6dee197e8cf24392a5b 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: builtins.h,v 1.148 2001/03/22 04:01:11 momjian Exp $
+ * $Id: builtins.h,v 1.149 2001/06/07 00:09:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -96,6 +96,7 @@ extern Datum int42le(PG_FUNCTION_ARGS);
 extern Datum int42gt(PG_FUNCTION_ARGS);
 extern Datum int42ge(PG_FUNCTION_ARGS);
 extern Datum int4um(PG_FUNCTION_ARGS);
+extern Datum int4up(PG_FUNCTION_ARGS);
 extern Datum int4pl(PG_FUNCTION_ARGS);
 extern Datum int4mi(PG_FUNCTION_ARGS);
 extern Datum int4mul(PG_FUNCTION_ARGS);
@@ -103,6 +104,7 @@ extern Datum int4div(PG_FUNCTION_ARGS);
 extern Datum int4abs(PG_FUNCTION_ARGS);
 extern Datum int4inc(PG_FUNCTION_ARGS);
 extern Datum int2um(PG_FUNCTION_ARGS);
+extern Datum int2up(PG_FUNCTION_ARGS);
 extern Datum int2pl(PG_FUNCTION_ARGS);
 extern Datum int2mi(PG_FUNCTION_ARGS);
 extern Datum int2mul(PG_FUNCTION_ARGS);
@@ -184,10 +186,12 @@ extern Datum float8in(PG_FUNCTION_ARGS);
 extern Datum float8out(PG_FUNCTION_ARGS);
 extern Datum float4abs(PG_FUNCTION_ARGS);
 extern Datum float4um(PG_FUNCTION_ARGS);
+extern Datum float4up(PG_FUNCTION_ARGS);
 extern Datum float4larger(PG_FUNCTION_ARGS);
 extern Datum float4smaller(PG_FUNCTION_ARGS);
 extern Datum float8abs(PG_FUNCTION_ARGS);
 extern Datum float8um(PG_FUNCTION_ARGS);
+extern Datum float8up(PG_FUNCTION_ARGS);
 extern Datum float8larger(PG_FUNCTION_ARGS);
 extern Datum float8smaller(PG_FUNCTION_ARGS);
 extern Datum float4pl(PG_FUNCTION_ARGS);
@@ -532,6 +536,7 @@ extern Datum numeric_out(PG_FUNCTION_ARGS);
 extern Datum numeric(PG_FUNCTION_ARGS);
 extern Datum numeric_abs(PG_FUNCTION_ARGS);
 extern Datum numeric_uminus(PG_FUNCTION_ARGS);
+extern Datum numeric_uplus(PG_FUNCTION_ARGS);
 extern Datum numeric_sign(PG_FUNCTION_ARGS);
 extern Datum numeric_round(PG_FUNCTION_ARGS);
 extern Datum numeric_trunc(PG_FUNCTION_ARGS);
index 4130bec64f057dce64c9413dc0882dd4315291dd..2b96d83791b721e726f23f5e84fbb1d966ec6178 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: int8.h,v 1.25 2001/01/24 19:43:28 momjian Exp $
+ * $Id: int8.h,v 1.26 2001/06/07 00:09:32 momjian Exp $
  *
  * NOTES
  * These data types are supported on all 64-bit architectures, and may
@@ -66,6 +66,7 @@ extern Datum int28le(PG_FUNCTION_ARGS);
 extern Datum int28ge(PG_FUNCTION_ARGS);
 
 extern Datum int8um(PG_FUNCTION_ARGS);
+extern Datum int8up(PG_FUNCTION_ARGS);
 extern Datum int8pl(PG_FUNCTION_ARGS);
 extern Datum int8mi(PG_FUNCTION_ARGS);
 extern Datum int8mul(PG_FUNCTION_ARGS);
index 521005e3c9a49c934f28ef853dde34ec7ec7eb3b..357a4ee9e4253b4e6654365988e1212b3309fc67 100644 (file)
@@ -10,7 +10,7 @@ import org.postgresql.largeobject.*;
 import org.postgresql.util.*;
 
 /**
- * $Id: Connection.java,v 1.16 2001/06/01 20:57:58 momjian Exp $
+ * $Id: Connection.java,v 1.17 2001/06/07 00:09:32 momjian Exp $
  *
  * This abstract class is used by org.postgresql.Driver to open either the JDBC1 or
  * JDBC2 versions of the Connection class.
@@ -505,7 +505,7 @@ public abstract class Connection
                recv_status = pg_stream.ReceiveString(receive_sbuf,8192,getEncoding());
 
                // Now handle the update count correctly.
-               if(recv_status.startsWith("INSERT") || recv_status.startsWith("UPDATE") || recv_status.startsWith("DELETE")) {
+               if(recv_status.startsWith("INSERT") || recv_status.startsWith("UPDATE") || recv_status.startsWith("DELETE") || recv_status.startsWith("MOVE")) {
                    try {
                        update_count = Integer.parseInt(recv_status.substring(1+recv_status.lastIndexOf(' ')));
                    } catch(NumberFormatException nfe) {