summaryrefslogtreecommitdiff
path: root/sql/ha_ndbcluster_cond.cc
diff options
context:
space:
mode:
authorpekka@sama.ndb.mysql.com <>2007-10-04 18:37:49 +0200
committerpekka@sama.ndb.mysql.com <>2007-10-04 18:37:49 +0200
commit3dea240a6c254fc8e4769d376a95005bdc96c5ee (patch)
tree1a9987cddd83d89d690c94781c4b1791b4b53c56 /sql/ha_ndbcluster_cond.cc
parent1b4b234748994b489a09ac2a685774af52b57100 (diff)
parent82da7623d414086cc819302b4bca32fb40ce470c (diff)
downloadmariadb-git-3dea240a6c254fc8e4769d376a95005bdc96c5ee.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
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");