summaryrefslogtreecommitdiff
path: root/ndb/src/kernel
diff options
context:
space:
mode:
authorunknown <jonas@perch.ndb.mysql.com>2006-11-22 15:42:03 +0100
committerunknown <jonas@perch.ndb.mysql.com>2006-11-22 15:42:03 +0100
commit1ca32bbc29064db2f36da47a63e720da99d1b55b (patch)
tree1c0d35ee0e986df61616d14b9b857b3c4ff22e49 /ndb/src/kernel
parentbb4c84e69e6a9d83a5b3398d0614aad01a358e29 (diff)
downloadmariadb-git-1ca32bbc29064db2f36da47a63e720da99d1b55b.tar.gz
ndb - bug#24503
Fix scan filter on bit types (note should probably be enabled in condition pushdown aswell) ndb/src/common/util/NdbSqlUtil.cpp: Add support for comparing bit types ndb/src/kernel/blocks/dbtup/Dbtup.hpp: Add new error code ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp: Add new error code ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp: Add correct handling of unsupported type ndb/src/ndbapi/ndberror.c: Add new error code
Diffstat (limited to 'ndb/src/kernel')
-rw-r--r--ndb/src/kernel/blocks/dbtup/Dbtup.hpp1
-rw-r--r--ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp5
-rw-r--r--ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp10
3 files changed, 16 insertions, 0 deletions
diff --git a/ndb/src/kernel/blocks/dbtup/Dbtup.hpp b/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
index 0b66d9a45bb..c068a993792 100644
--- a/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
+++ b/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
@@ -196,6 +196,7 @@
#define ZTRY_TO_UPDATE_ERROR 888
#define ZCALL_ERROR 890
#define ZTEMPORARY_RESOURCE_FAILURE 891
+#define ZUNSUPPORTED_BRANCH 892
#define ZSTORED_SEIZE_ATTRINBUFREC_ERROR 873 // Part of Scan
diff --git a/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp b/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp
index e9043a8b52d..07babd72ce1 100644
--- a/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp
+++ b/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp
@@ -444,6 +444,11 @@ int Dbtup::TUPKEY_abort(Signal* signal, int error_type)
}//if
break;
+ case 40:
+ ljam();
+ terrorCode = ZUNSUPPORTED_BRANCH;
+ break;
+
default:
ndbrequire(false);
break;
diff --git a/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp b/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
index 13c0bad9c7a..9917ac4e340 100644
--- a/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
+++ b/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
@@ -1876,6 +1876,11 @@ int Dbtup::interpreterNextLab(Signal* signal,
// NULL==NULL and NULL<not-NULL
res1 = r1_null && r2_null ? 0 : r1_null ? -1 : 1;
} else {
+ jam();
+ if (unlikely(sqlType.m_cmp == 0))
+ {
+ return TUPKEY_abort(signal, 40);
+ }
res1 = (*sqlType.m_cmp)(cs, s1, attrLen, s2, argLen, true);
}
} else {
@@ -1883,6 +1888,11 @@ int Dbtup::interpreterNextLab(Signal* signal,
// NULL like NULL is true (has no practical use)
res1 = r1_null && r2_null ? 0 : -1;
} else {
+ jam();
+ if (unlikely(sqlType.m_like == 0))
+ {
+ return TUPKEY_abort(signal, 40);
+ }
res1 = (*sqlType.m_like)(cs, s1, attrLen, s2, argLen);
}
}