summaryrefslogtreecommitdiff
path: root/sql/ha_ndbcluster_cond.cc
diff options
context:
space:
mode:
authorunknown <pekka@sama.ndb.mysql.com>2007-10-04 18:37:49 +0200
committerunknown <pekka@sama.ndb.mysql.com>2007-10-04 18:37:49 +0200
commita4d767cbabbe88afce29575b3fe88743e1341054 (patch)
tree1a9987cddd83d89d690c94781c4b1791b4b53c56 /sql/ha_ndbcluster_cond.cc
parent060588696e5fcad6039a9145661e1a9cccf9d2d3 (diff)
parentd0d6fb96a634fcb894522d13a366edf073f1e67f (diff)
downloadmariadb-git-a4d767cbabbe88afce29575b3fe88743e1341054.tar.gz
Merge sama.ndb.mysql.com:/export/space/pekka/ndb/version/my50-ndb
into sama.ndb.mysql.com:/export/space/pekka/ndb/version/my51-bug29390 sql/ha_ndbcluster_cond.cc: Auto merged mysql-test/suite/ndb/r/ndb_condition_pushdown.result: Auto merged mysql-test/suite/ndb/t/ndb_condition_pushdown.test: Auto merged storage/ndb/include/kernel/signaldata/ScanTab.hpp: Auto merged storage/ndb/include/ndbapi/NdbScanFilter.hpp: Auto merged storage/ndb/include/ndbapi/ndbapi_limits.h: Auto merged storage/ndb/src/ndbapi/NdbScanFilter.cpp: Auto merged storage/ndb/src/ndbapi/NdbScanOperation.cpp: Auto merged storage/ndb/src/ndbapi/ndberror.c: ul, add code (4294) in post-merge storage/ndb/include/ndbapi/Ndb.hpp: SCCS merged
Diffstat (limited to 'sql/ha_ndbcluster_cond.cc')
-rw-r--r--sql/ha_ndbcluster_cond.cc20
1 files changed, 17 insertions, 3 deletions
diff --git a/sql/ha_ndbcluster_cond.cc b/sql/ha_ndbcluster_cond.cc
index 94342c6d2ad..d8dff3c7e2f 100644
--- a/sql/ha_ndbcluster_cond.cc
+++ b/sql/ha_ndbcluster_cond.cc
@@ -1338,9 +1338,23 @@ ha_ndbcluster_cond::generate_scan_filter(NdbScanOperation *op)
if (m_cond_stack)
{
- NdbScanFilter filter(op);
+ NdbScanFilter filter(op, false); // don't abort on too large
- DBUG_RETURN(generate_scan_filter_from_cond(filter));
+ int ret=generate_scan_filter_from_cond(filter);
+ if (ret != 0)
+ {
+ const NdbError& err=filter.getNdbError();
+ if (err.code == NdbScanFilter::FilterTooLarge)
+ {
+ // err.message has static storage
+ DBUG_PRINT("info", ("%s", err.message));
+ push_warning(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ err.code, err.message);
+ ret=0;
+ }
+ }
+ if (ret != 0)
+ DBUG_RETURN(ret);
}
else
{
@@ -1391,7 +1405,7 @@ int ha_ndbcluster_cond::generate_scan_filter_from_key(NdbScanOperation *op,
{
KEY_PART_INFO* key_part= key_info->key_part;
KEY_PART_INFO* end= key_part+key_info->key_parts;
- NdbScanFilter filter(op);
+ NdbScanFilter filter(op, true); // abort on too large
int res;
DBUG_ENTER("generate_scan_filter_from_key");