Improve Node vs Expr use a bit
Author: Mark Dilger <hornschnorter@gmail.com>
This commit is contained in:
parent
4cb824699e
commit
e0eb5e0aea
@ -1159,7 +1159,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec)
|
||||
ListCell *cell,
|
||||
*prev,
|
||||
*next;
|
||||
Node *keyCol;
|
||||
Expr *keyCol;
|
||||
Oid operoid;
|
||||
bool need_relabel,
|
||||
list_has_null = false;
|
||||
@ -1168,14 +1168,14 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec)
|
||||
|
||||
/* Left operand is either a simple Var or arbitrary expression */
|
||||
if (key->partattrs[0] != 0)
|
||||
keyCol = (Node *) makeVar(1,
|
||||
keyCol = (Expr *) makeVar(1,
|
||||
key->partattrs[0],
|
||||
key->parttypid[0],
|
||||
key->parttypmod[0],
|
||||
key->parttypcoll[0],
|
||||
0);
|
||||
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
|
||||
@ -1205,7 +1205,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec)
|
||||
* expressions
|
||||
*/
|
||||
nulltest1 = makeNode(NullTest);
|
||||
nulltest1->arg = (Expr *) keyCol;
|
||||
nulltest1->arg = keyCol;
|
||||
nulltest1->nulltesttype = IS_NOT_NULL;
|
||||
nulltest1->argisrow = false;
|
||||
nulltest1->location = -1;
|
||||
@ -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
|
||||
*/
|
||||
nulltest2 = makeNode(NullTest);
|
||||
nulltest2->arg = (Expr *) keyCol;
|
||||
nulltest2->arg = keyCol;
|
||||
nulltest2->nulltesttype = IS_NULL;
|
||||
nulltest2->argisrow = false;
|
||||
nulltest2->location = -1;
|
||||
@ -1237,7 +1237,7 @@ get_qual_for_list(PartitionKey key, PartitionBoundSpec *spec)
|
||||
operoid = get_partition_operator(key, 0, BTEqualStrategyNumber,
|
||||
&need_relabel);
|
||||
if (need_relabel || key->partcollation[0] != key->parttypcoll[0])
|
||||
keyCol = (Node *) makeRelabelType((Expr *) keyCol,
|
||||
keyCol = (Expr *) makeRelabelType(keyCol,
|
||||
key->partopcintype[0],
|
||||
-1,
|
||||
key->partcollation[0],
|
||||
@ -1291,7 +1291,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
|
||||
{
|
||||
PartitionRangeDatum *ldatum = lfirst(cell1),
|
||||
*udatum = lfirst(cell2);
|
||||
Node *keyCol;
|
||||
Expr *keyCol;
|
||||
Const *lower_val = NULL,
|
||||
*upper_val = NULL;
|
||||
EState *estate;
|
||||
@ -1307,7 +1307,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
|
||||
/* Left operand */
|
||||
if (key->partattrs[i] != 0)
|
||||
{
|
||||
keyCol = (Node *) makeVar(1,
|
||||
keyCol = (Expr *) makeVar(1,
|
||||
key->partattrs[i],
|
||||
key->parttypid[i],
|
||||
key->parttypmod[i],
|
||||
@ -1316,7 +1316,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
|
||||
}
|
||||
else
|
||||
{
|
||||
keyCol = (Node *) copyObject(lfirst(partexprs_item));
|
||||
keyCol = copyObject(lfirst(partexprs_item));
|
||||
partexprs_item = lnext(partexprs_item);
|
||||
}
|
||||
|
||||
@ -1329,7 +1329,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
|
||||
if (!IsA(keyCol, Var))
|
||||
{
|
||||
nulltest = makeNode(NullTest);
|
||||
nulltest->arg = (Expr *) keyCol;
|
||||
nulltest->arg = keyCol;
|
||||
nulltest->nulltesttype = IS_NOT_NULL;
|
||||
nulltest->argisrow = false;
|
||||
nulltest->location = -1;
|
||||
@ -1384,7 +1384,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
|
||||
elog(ERROR, "invalid range bound specification");
|
||||
|
||||
if (need_relabel || key->partcollation[i] != key->parttypcoll[i])
|
||||
keyCol = (Node *) makeRelabelType((Expr *) keyCol,
|
||||
keyCol = (Expr *) makeRelabelType(keyCol,
|
||||
key->partopcintype[i],
|
||||
-1,
|
||||
key->partcollation[i],
|
||||
@ -1393,7 +1393,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
|
||||
make_opclause(operoid,
|
||||
BOOLOID,
|
||||
false,
|
||||
(Expr *) keyCol,
|
||||
keyCol,
|
||||
(Expr *) lower_val,
|
||||
InvalidOid,
|
||||
key->partcollation[i]));
|
||||
@ -1415,7 +1415,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
|
||||
&need_relabel);
|
||||
|
||||
if (need_relabel || key->partcollation[i] != key->parttypcoll[i])
|
||||
keyCol = (Node *) makeRelabelType((Expr *) keyCol,
|
||||
keyCol = (Expr *) makeRelabelType(keyCol,
|
||||
key->partopcintype[i],
|
||||
-1,
|
||||
key->partcollation[i],
|
||||
@ -1424,7 +1424,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
|
||||
make_opclause(operoid,
|
||||
BOOLOID,
|
||||
false,
|
||||
(Expr *) keyCol,
|
||||
keyCol,
|
||||
(Expr *) lower_val,
|
||||
InvalidOid,
|
||||
key->partcollation[i]));
|
||||
@ -1437,7 +1437,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
|
||||
&need_relabel);
|
||||
|
||||
if (need_relabel || key->partcollation[i] != key->parttypcoll[i])
|
||||
keyCol = (Node *) makeRelabelType((Expr *) keyCol,
|
||||
keyCol = (Expr *) makeRelabelType(keyCol,
|
||||
key->partopcintype[i],
|
||||
-1,
|
||||
key->partcollation[i],
|
||||
@ -1447,7 +1447,7 @@ get_qual_for_range(PartitionKey key, PartitionBoundSpec *spec)
|
||||
make_opclause(operoid,
|
||||
BOOLOID,
|
||||
false,
|
||||
(Expr *) keyCol,
|
||||
keyCol,
|
||||
(Expr *) upper_val,
|
||||
InvalidOid,
|
||||
key->partcollation[i]));
|
||||
|
Loading…
x
Reference in New Issue
Block a user