You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by od...@apache.org on 2016/11/23 00:37:10 UTC
incubator-hawq git commit: HAWQ-1169. HAWQ Bridge incorrectly pushes
T_NullTest predicates with byte arrays.
Repository: incubator-hawq
Updated Branches:
refs/heads/master cb6811182 -> 2a0dd7dd3
HAWQ-1169. HAWQ Bridge incorrectly pushes T_NullTest predicates with byte arrays.
Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/2a0dd7dd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/2a0dd7dd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/2a0dd7dd
Branch: refs/heads/master
Commit: 2a0dd7dd337348a6571c31313e6914cd8a91c0a6
Parents: cb68111
Author: Oleksandr Diachenko <od...@pivotal.io>
Authored: Tue Nov 22 16:37:00 2016 -0800
Committer: Oleksandr Diachenko <od...@pivotal.io>
Committed: Tue Nov 22 16:37:00 2016 -0800
----------------------------------------------------------------------
src/backend/access/external/pxffilters.c | 13 ++++++++++---
src/backend/access/external/test/pxffilters_test.c | 3 +--
2 files changed, 11 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/2a0dd7dd/src/backend/access/external/pxffilters.c
----------------------------------------------------------------------
diff --git a/src/backend/access/external/pxffilters.c b/src/backend/access/external/pxffilters.c
index 3961b48..6699b84 100644
--- a/src/backend/access/external/pxffilters.c
+++ b/src/backend/access/external/pxffilters.c
@@ -184,7 +184,6 @@ Oid pxf_supported_types[] =
VARCHAROID,
BPCHAROID,
CHAROID,
- BYTEAOID,
BOOLOID,
DATEOID,
TIMESTAMPOID
@@ -434,15 +433,23 @@ pxf_serialize_filter_list(List *expressionItems)
{
elog(DEBUG1, "pxf_serialize_filter_list: node tag %d (T_NullTest)", tag);
NullTest *expr = (NullTest *) node;
+ Var *var = (Var *) expr->arg;
+
+ //TODO: add check for supported operation
+ if (!supported_filter_type(var->vartype))
+ {
+ elog(DEBUG1, "Query will not be optimized to use filter push-down.");
+ return NULL;
+ }
/* filter expression for T_NullTest will not have any constant value */
if (expr->nulltesttype == IS_NULL)
{
- appendStringInfo(resbuf, "%c%d%c%d", PXF_ATTR_CODE, ((Var *) expr->arg)->varattno - 1, PXF_OPERATOR_CODE, PXFOP_IS_NULL);
+ appendStringInfo(resbuf, "%c%d%c%d", PXF_ATTR_CODE, var->varattno - 1, PXF_OPERATOR_CODE, PXFOP_IS_NULL);
}
else if (expr->nulltesttype == IS_NOT_NULL)
{
- appendStringInfo(resbuf, "%c%d%c%d", PXF_ATTR_CODE, ((Var *) expr->arg)->varattno - 1, PXF_OPERATOR_CODE, PXFOP_IS_NOTNULL);
+ appendStringInfo(resbuf, "%c%d%c%d", PXF_ATTR_CODE, var->varattno - 1, PXF_OPERATOR_CODE, PXFOP_IS_NOTNULL);
}
else
{
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/2a0dd7dd/src/backend/access/external/test/pxffilters_test.c
----------------------------------------------------------------------
diff --git a/src/backend/access/external/test/pxffilters_test.c b/src/backend/access/external/test/pxffilters_test.c
index e618563..0e45eee 100644
--- a/src/backend/access/external/test/pxffilters_test.c
+++ b/src/backend/access/external/test/pxffilters_test.c
@@ -43,7 +43,6 @@ test__supported_filter_type(void **state)
VARCHAROID,
BPCHAROID,
CHAROID,
- BYTEAOID,
BOOLOID,
DATEOID,
CIRCLEOID /* unsupported type */
@@ -65,7 +64,7 @@ test__supported_filter_type(void **state)
/* go over pxf_supported_types array */
int nargs = sizeof(pxf_supported_types) / sizeof(Oid);
- assert_int_equal(nargs, 14);
+ assert_int_equal(nargs, 13);
for (i = 0; i < nargs; ++i)
{
assert_true(supported_filter_type(pxf_supported_types[i]));