summaryrefslogtreecommitdiff
path: root/sql/item_vers.cc
diff options
context:
space:
mode:
authorAleksey Midenkov <midenok@gmail.com>2017-08-03 10:11:49 +0300
committerAleksey Midenkov <midenok@gmail.com>2017-08-03 16:01:16 +0300
commitc2c8808a16e561bb43ef448fa1b47ae5e32a0f40 (patch)
tree5d6f0d0a1118f22053ecdc719d2f582ddbc9a36b /sql/item_vers.cc
parentd998da03069dca1aae83ec6af7eb407bbdc9fc58 (diff)
downloadmariadb-git-c2c8808a16e561bb43ef448fa1b47ae5e32a0f40.tar.gz
SQL: compare TRX_ID fields against timestamps [closes #231]
Diffstat (limited to 'sql/item_vers.cc')
-rw-r--r--sql/item_vers.cc19
1 files changed, 14 insertions, 5 deletions
diff --git a/sql/item_vers.cc b/sql/item_vers.cc
index 3562cc7fbc9..47e62d9ebf0 100644
--- a/sql/item_vers.cc
+++ b/sql/item_vers.cc
@@ -54,6 +54,14 @@ Item_func_vtq_ts::get_date(MYSQL_TIME *res, ulonglong fuzzy_date)
{
THD *thd= current_thd; // can it differ from constructor's?
DBUG_ASSERT(thd);
+ DBUG_ASSERT(args[0]);
+ if (args[0]->result_type() != INT_RESULT)
+ {
+ my_error(ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION, MYF(0),
+ args[0]->type_handler()->name().ptr(),
+ func_name());
+ return true;
+ }
ulonglong trx_id= args[0]->val_uint();
if (trx_id == ULONGLONG_MAX)
{
@@ -62,13 +70,14 @@ Item_func_vtq_ts::get_date(MYSQL_TIME *res, ulonglong fuzzy_date)
return false;
}
- if (!hton)
- return true;
-
- DBUG_ASSERT(hton->vers_query_trx_id);
+ DBUG_ASSERT(hton && hton->vers_query_trx_id);
null_value= !hton->vers_query_trx_id(thd, res, trx_id, vtq_field);
+ if (null_value)
+ {
+ my_error(ER_VERS_NO_TRX_ID, MYF(0), trx_id);
+ }
- return false;
+ return null_value;
}