diff options
author | unknown <mskold/marty@mysql.com/linux.site> | 2006-08-15 14:31:21 +0200 |
---|---|---|
committer | unknown <mskold/marty@mysql.com/linux.site> | 2006-08-15 14:31:21 +0200 |
commit | 6464d62c7b38c5369089a69213777f3a40faa7cd (patch) | |
tree | bbd30495d1f919584fe178f9c6406266b03f73e3 /sql/ha_ndbcluster.h | |
parent | 115eb7df2e6b9f81b4659960ca978d7da701df00 (diff) | |
download | mariadb-git-6464d62c7b38c5369089a69213777f3a40faa7cd.tar.gz |
Fix for bug #21059 Server crashes on join query with large dataset with NDB tables: do not release operation records for on-going read_multi_range
Diffstat (limited to 'sql/ha_ndbcluster.h')
-rw-r--r-- | sql/ha_ndbcluster.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index 4505c7a6e0e..cfb12981b98 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -435,6 +435,11 @@ class Ndb_cond_traverse_context Ndb_rewrite_context *rewrite_stack; }; +typedef enum ndb_query_state_bits { + NDB_QUERY_NORMAL = 0, + NDB_QUERY_MULTI_READ_RANGE = 1 +} NDB_QUERY_STATE_BITS; + /* Place holder for ha_ndbcluster thread specific data */ @@ -451,6 +456,7 @@ class Thd_ndb NdbTransaction *stmt; int error; List<NDB_SHARE> changed_tables; + uint query_state; }; class ha_ndbcluster: public handler @@ -672,8 +678,8 @@ private: NdbScanOperation* op); friend int execute_commit(ha_ndbcluster*, NdbTransaction*); - friend int execute_no_commit(ha_ndbcluster*, NdbTransaction*); - friend int execute_no_commit_ie(ha_ndbcluster*, NdbTransaction*); + friend int execute_no_commit(ha_ndbcluster*, NdbTransaction*, bool); + friend int execute_no_commit_ie(ha_ndbcluster*, NdbTransaction*, bool); NdbTransaction *m_active_trans; NdbScanOperation *m_active_cursor; @@ -716,7 +722,7 @@ private: bool m_force_send; ha_rows m_autoincrement_prefetch; bool m_transaction_on; - void release_completed_operations(NdbConnection*); + void release_completed_operations(NdbTransaction*, bool); Ndb_cond_stack *m_cond_stack; bool m_disable_multi_read; |