summaryrefslogtreecommitdiff
path: root/src/backend/nodes/makefuncs.c
diff options
context:
space:
mode:
authorTom Lane2002-04-16 23:08:12 +0000
committerTom Lane2002-04-16 23:08:12 +0000
commit6cef5d2549110c6c0abb92215c2593e652024493 (patch)
tree7481a5b0bec7227c23f4b846cd7a1e40b47bf20e /src/backend/nodes/makefuncs.c
parent4da51bfd6d89762f0a3cacde6edf1ac63c09349e (diff)
Operators live in namespaces. CREATE/DROP/COMMENT ON OPERATOR take
qualified operator names directly, for example CREATE OPERATOR myschema.+ ( ... ). To qualify an operator name in an expression you need to write OPERATOR(myschema.+) (thanks to Peter for suggesting an escape hatch). I also took advantage of having to reformat pg_operator to fix something that'd been bugging me for a while: mergejoinable operators should have explicit links to the associated cross-data-type comparison operators, rather than hardwiring an assumption that they are named < and >.
Diffstat (limited to 'src/backend/nodes/makefuncs.c')
-rw-r--r--src/backend/nodes/makefuncs.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/backend/nodes/makefuncs.c b/src/backend/nodes/makefuncs.c
index 6d649ba9d1f..65f4ffcca37 100644
--- a/src/backend/nodes/makefuncs.c
+++ b/src/backend/nodes/makefuncs.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.30 2002/03/29 19:06:09 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.31 2002/04/16 23:08:10 tgl Exp $
*/
#include "postgres.h"
@@ -17,6 +17,39 @@
/*
+ * makeA_Expr -
+ * makes an A_Expr node
+ */
+A_Expr *
+makeA_Expr(int oper, List *name, Node *lexpr, Node *rexpr)
+{
+ A_Expr *a = makeNode(A_Expr);
+
+ a->oper = oper;
+ a->name = name;
+ a->lexpr = lexpr;
+ a->rexpr = rexpr;
+ return a;
+}
+
+/*
+ * makeSimpleA_Expr -
+ * As above, given a simple (unqualified) operator name
+ */
+A_Expr *
+makeSimpleA_Expr(int oper, const char *name,
+ Node *lexpr, Node *rexpr)
+{
+ A_Expr *a = makeNode(A_Expr);
+
+ a->oper = oper;
+ a->name = makeList1(makeString((char *) name));
+ a->lexpr = lexpr;
+ a->rexpr = rexpr;
+ return a;
+}
+
+/*
* makeOper -
* creates an Oper node
*/