Commit e0eb5e0a authored by Peter Eisentraut's avatar Peter Eisentraut

Improve Node vs Expr use a bit

Author: Mark Dilger <hornschnorter@gmail.com>
parent 4cb82469
...@@ -1159,7 +1159,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1159,7 +1159,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec)
ListCell *cell, ListCell *cell,
*prev, *prev,
*next; *next;
Node *keyCol; Expr *keyCol;
Oid operoid; Oid operoid;
bool need_relabel, bool need_relabel,
list_has_null = false; list_has_null = false;
...@@ -1168,14 +1168,14 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1168,14 +1168,14 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec)
/* Left operand is either a simple Var or arbitrary expression */ /* Left operand is either a simple Var or arbitrary expression */
if (key->partattrs[0] != 0) if (key->partattrs[0] != 0)
keyCol = (Node *) makeVar(1, keyCol = (Expr *) makeVar(1,
key->partattrs[0], key->partattrs[0],
key->parttypid[0], key->parttypid[0],
key->parttypmod[0], key->parttypmod[0],
key->parttypcoll[0], key->parttypcoll[0],
0); 0);
else else
keyCol = (Node *) copyObject(linitial(key->partexprs)); keyCol = (Expr *) copyObject(linitial(key->partexprs));
/* /*
* We must remove any NULL value in the list; we handle it separately * We must remove any NULL value in the list; we handle it separately
...@@ -1205,7 +1205,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1205,7 +1205,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec)
* expressions * expressions
*/ */
nulltest1 = makeNode(NullTest); nulltest1 = makeNode(NullTest);
nulltest1->arg = (Expr *) keyCol; nulltest1->arg = keyCol;
nulltest1->nulltesttype = IS_NOT_NULL; nulltest1->nulltesttype = IS_NOT_NULL;
nulltest1->argisrow = false; nulltest1->argisrow = false;
nulltest1->location = -1; nulltest1->location = -1;
...@@ -1216,7 +1216,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1216,7 +1216,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec)
* Gin up a col IS NULL test that will be OR'd with other expressions * Gin up a col IS NULL test that will be OR'd with other expressions
*/ */
nulltest2 = makeNode(NullTest); nulltest2 = makeNode(NullTest);
nulltest2->arg = (Expr *) keyCol; nulltest2->arg = keyCol;
nulltest2->nulltesttype = IS_NULL; nulltest2->nulltesttype = IS_NULL;
nulltest2->argisrow = false; nulltest2->argisrow = false;
nulltest2->location = -1; nulltest2->location = -1;
...@@ -1237,7 +1237,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1237,7 +1237,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec)
operoid = get_partition_operator(key, 0, BTEqualStrategyNumber, operoid = get_partition_operator(key, 0, BTEqualStrategyNumber,
&need_relabel); &need_relabel);
if (need_relabel || key->partcollation[0] != key->parttypcoll[0]) if (need_relabel || key->partcollation[0] != key->parttypcoll[0])
keyCol = (Node *) makeRelabelType((Expr *) keyCol, keyCol = (Expr *) makeRelabelType(keyCol,
key->partopcintype[0], key->partopcintype[0],
-1, -1,
key->partcollation[0], key->partcollation[0],
...@@ -1291,7 +1291,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1291,7 +1291,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
{ {
PartitionRangeDatum *ldatum = lfirst(cell1), PartitionRangeDatum *ldatum = lfirst(cell1),
*udatum = lfirst(cell2); *udatum = lfirst(cell2);
Node *keyCol; Expr *keyCol;
Const *lower_val = NULL, Const *lower_val = NULL,
*upper_val = NULL; *upper_val = NULL;
EState *estate; EState *estate;
...@@ -1307,7 +1307,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1307,7 +1307,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
/* Left operand */ /* Left operand */
if (key->partattrs[i] != 0) if (key->partattrs[i] != 0)
{ {
keyCol = (Node *) makeVar(1, keyCol = (Expr *) makeVar(1,
key->partattrs[i], key->partattrs[i],
key->parttypid[i], key->parttypid[i],
key->parttypmod[i], key->parttypmod[i],
...@@ -1316,7 +1316,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1316,7 +1316,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
} }
else else
{ {
keyCol = (Node *) copyObject(lfirst(partexprs_item)); keyCol = copyObject(lfirst(partexprs_item));
partexprs_item = lnext(partexprs_item); partexprs_item = lnext(partexprs_item);
} }
...@@ -1329,7 +1329,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1329,7 +1329,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
if (!IsA(keyCol, Var)) if (!IsA(keyCol, Var))
{ {
nulltest = makeNode(NullTest); nulltest = makeNode(NullTest);
nulltest->arg = (Expr *) keyCol; nulltest->arg = keyCol;
nulltest->nulltesttype = IS_NOT_NULL; nulltest->nulltesttype = IS_NOT_NULL;
nulltest->argisrow = false; nulltest->argisrow = false;
nulltest->location = -1; nulltest->location = -1;
...@@ -1384,7 +1384,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1384,7 +1384,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
elog(ERROR, "invalid range bound specification"); elog(ERROR, "invalid range bound specification");
if (need_relabel || key->partcollation[i] != key->parttypcoll[i]) if (need_relabel || key->partcollation[i] != key->parttypcoll[i])
keyCol = (Node *) makeRelabelType((Expr *) keyCol, keyCol = (Expr *) makeRelabelType(keyCol,
key->partopcintype[i], key->partopcintype[i],
-1, -1,
key->partcollation[i], key->partcollation[i],
...@@ -1393,7 +1393,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1393,7 +1393,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
make_opclause(operoid, make_opclause(operoid,
BOOLOID, BOOLOID,
false, false,
(Expr *) keyCol, keyCol,
(Expr *) lower_val, (Expr *) lower_val,
InvalidOid, InvalidOid,
key->partcollation[i])); key->partcollation[i]));
...@@ -1415,7 +1415,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1415,7 +1415,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
&need_relabel); &need_relabel);
if (need_relabel || key->partcollation[i] != key->parttypcoll[i]) if (need_relabel || key->partcollation[i] != key->parttypcoll[i])
keyCol = (Node *) makeRelabelType((Expr *) keyCol, keyCol = (Expr *) makeRelabelType(keyCol,
key->partopcintype[i], key->partopcintype[i],
-1, -1,
key->partcollation[i], key->partcollation[i],
...@@ -1424,7 +1424,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1424,7 +1424,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
make_opclause(operoid, make_opclause(operoid,
BOOLOID, BOOLOID,
false, false,
(Expr *) keyCol, keyCol,
(Expr *) lower_val, (Expr *) lower_val,
InvalidOid, InvalidOid,
key->partcollation[i])); key->partcollation[i]));
...@@ -1437,7 +1437,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1437,7 +1437,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
&need_relabel); &need_relabel);
if (need_relabel || key->partcollation[i] != key->parttypcoll[i]) if (need_relabel || key->partcollation[i] != key->parttypcoll[i])
keyCol = (Node *) makeRelabelType((Expr *) keyCol, keyCol = (Expr *) makeRelabelType(keyCol,
key->partopcintype[i], key->partopcintype[i],
-1, -1,
key->partcollation[i], key->partcollation[i],
...@@ -1447,7 +1447,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec) ...@@ -1447,7 +1447,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
make_opclause(operoid, make_opclause(operoid,
BOOLOID, BOOLOID,
false, false,
(Expr *) keyCol, keyCol,
(Expr *) upper_val, (Expr *) upper_val,
InvalidOid, InvalidOid,
key->partcollation[i])); key->partcollation[i]));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment