mariadb/sql/ha_ndbcluster.h

232 lines
7 KiB
C
Raw Normal View History

Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
/* Copyright (C) 2000-2003 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/*
This file defines the NDB Cluster handler: the interface between MySQL and
NDB Cluster
*/
/* The class defining a handle to an NDB Cluster table */
#ifdef __GNUC__
#pragma interface /* gcc class implementation */
#endif
#include <ndbapi_limits.h>
#include <ndb_types.h>
class Ndb; // Forward declaration
class NdbOperation; // Forward declaration
class NdbConnection; // Forward declaration
class NdbRecAttr; // Forward declaration
class NdbResultSet; // Forward declaration
typedef enum ndb_index_type {
UNDEFINED_INDEX = 0,
PRIMARY_KEY_INDEX = 1,
UNIQUE_INDEX = 2,
ORDERED_INDEX = 3
} NDB_INDEX_TYPE;
typedef struct st_ndbcluster_share {
THR_LOCK lock;
pthread_mutex_t mutex;
char *table_name;
uint table_name_length,use_count;
} NDB_SHARE;
class ha_ndbcluster: public handler
{
public:
ha_ndbcluster(TABLE *table);
~ha_ndbcluster();
int open(const char *name, int mode, uint test_if_locked);
int close(void);
int write_row(byte *buf);
int update_row(const byte *old_data, byte *new_data);
int delete_row(const byte *buf);
int index_init(uint index);
int index_end();
int index_read(byte *buf, const byte *key, uint key_len,
enum ha_rkey_function find_flag);
int index_read_idx(byte *buf, uint index, const byte *key, uint key_len,
enum ha_rkey_function find_flag);
int index_next(byte *buf);
int index_prev(byte *buf);
int index_first(byte *buf);
int index_last(byte *buf);
int rnd_init(bool scan=1);
int rnd_end();
int rnd_next(byte *buf);
int rnd_pos(byte *buf, byte *pos);
void position(const byte *record);
int read_range_first(const key_range *start_key,
const key_range *end_key,
bool sorted);
int read_range_next(bool eq_range);
WL #1729 Handler: error text for NDB errors - New solution after discussions with Sergei, no handler specific code or error messages should be in sql layer. next_result, only check for error if check is -1 Improved index_read include/mysqld_error.h: New error codes ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG, update number to 298. Removed prevoius ER_NDB_ERROR, handler specific error should not be here. sql/ha_ndbcluster.cc: Removed print_error from ha_ndbcluster, added code to handler::print_error to ask handler::get_error_message for message for an error. Fix bug in next_result, only check for error if -1 is returned. Make index_read easier, special case where pk_read or unique_index_read is detected and as default do ordered_index_scan sql/ha_ndbcluster.h: Remplace print_error with get_error_message sql/handler.cc: Add new function get_error_message usedc to ask handler for a message for an error. Call get_error_message from print_error if error code is not known. sql/handler.h: Add new function get_error_message sql/share/czech/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/danish/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/dutch/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/english/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/estonian/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/french/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/german/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/greek/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/hungarian/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/italian/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/korean/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/norwegian-ny/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/norwegian/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/polish/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/portuguese/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/romanian/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/russian/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/serbian/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/slovak/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/spanish/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/swedish/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG sql/share/ukrainian/errmsg.txt: Error message for ER_GET_ERRMSG and ER_GET_TEMPORARY_ERRMSG
2004-05-13 11:56:45 +02:00
const char* get_error_message(int *error, bool *temporary);
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
void info(uint);
int extra(enum ha_extra_function operation);
int extra_opt(enum ha_extra_function operation, ulong cache_size);
int reset();
int external_lock(THD *thd, int lock_type);
int start_stmt(THD *thd);
const char * table_type() const { return("ndbcluster");}
const char ** bas_ext() const;
ulong table_flags(void) const { return m_table_flags; }
ulong index_flags(uint idx) const;
uint max_record_length() const { return NDB_MAX_TUPLE_SIZE; };
uint max_keys() const { return MAX_KEY; }
uint max_key_parts() const { return NDB_MAX_NO_OF_ATTRIBUTES_IN_KEY; };
uint max_key_length() const { return NDB_MAX_KEY_SIZE;};
int rename_table(const char *from, const char *to);
int delete_table(const char *name);
int create(const char *name, TABLE *form, HA_CREATE_INFO *info);
THR_LOCK_DATA **store_lock(THD *thd,
THR_LOCK_DATA **to,
enum thr_lock_type lock_type);
bool low_byte_first() const
{
#ifdef WORDS_BIGENDIAN
return false;
#else
return true;
#endif
}
bool has_transactions() { return true; }
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
const char* index_type(uint key_number) {
switch (get_index_type(key_number)) {
case ORDERED_INDEX:
return "BTREE";
case UNIQUE_INDEX:
case PRIMARY_KEY_INDEX:
default:
return "HASH";
}
}
double scan_time();
key_cmp -> key_cmp_if_same New records_in_range() interface (similar to read_range()) Macros for faster bitmap handling Simplify read_range() code (#WL1786) New general key_cmp() function to compare keys heap/hp_hash.c: New records_in_range() interface include/heap.h: New records_in_range() interface include/my_base.h: Moved 'key_range' here so that all table handlers can use it include/my_bitmap.h: Make some bitmap functions inline for faster usage in one thread include/myisam.h: New records_in_range() interface include/myisammrg.h: New records_in_range() interface myisam/mi_range.c: New records_in_range() interface myisam/mi_test2.c: New records_in_range() interface myisam/rt_test.c: New records_in_range() interface Indentation fixes myisam/sp_test.c: New records_in_range() interface Indentation fixes myisammrg/myrg_range.c: New records_in_range() interface mysys/my_bitmap.c: Make some bitmap functions inline for faster usage in one thread sql/examples/ha_example.cc: New records_in_range() interface sql/field.cc: Fixed indentation sql/ha_berkeley.cc: New records_in_range() interface sql/ha_berkeley.h: New records_in_range() interface sql/ha_heap.cc: New records_in_range() interface sql/ha_heap.h: New records_in_range() interface sql/ha_innodb.cc: New records_in_range() interface sql/ha_innodb.h: New records_in_range() interface sql/ha_isam.cc: New records_in_range() interface sql/ha_isam.h: New records_in_range() interface sql/ha_myisam.cc: New records_in_range() interface sql/ha_myisam.h: New records_in_range() interface sql/ha_myisammrg.cc: New records_in_range() interface sql/ha_myisammrg.h: New records_in_range() interface sql/ha_ndbcluster.cc: New records_in_range() interface sql/ha_ndbcluster.h: New records_in_range() interface sql/handler.cc: Simplify read_range() interface: - Add 'eq_range' to read_range_first - Remove 'eq_range' parameer from read_range_next() - Trust values from index_next_same() - Simplfy compare_key() by moving key_comparision to key.cc (as this code can be reused from other places) sql/handler.h: Move key_range to my_base.h to be used by external table handlers Simplify read_range() interface New records_in_range() interface sql/key.cc: Rename key_cmp() to key_cmp_if_same() to make it more descriptive Add new key_cmp() function usable from range and handler code. sql/mysql_priv.h: Prototypes for new functions sql/opt_range.cc: New records_in_range() interface Simplify cmp_prev() (We can in 5.0 simplify cmp_next() the same way) sql/opt_range.h: Added key_part_info to QUICK_SELECT to be able to use key_cmp() in get_next() sql/opt_sum.cc: key_cmp -> key_cmp_if_same sql/sql_acl.cc: key_cmp -> key_cmp_if_same sql/sql_select.cc: key_cmp -> key_cmp_if_same
2004-05-16 13:48:32 +02:00
ha_rows records_in_range(uint inx, key_range *min_key, key_range *max_key);
void start_bulk_insert(ha_rows rows);
int end_bulk_insert();
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
static Ndb* seize_ndb();
static void release_ndb(Ndb* ndb);
uint8 table_cache_type() { return HA_CACHE_TBL_NOCACHE; }
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
private:
int alter_table_name(const char *from, const char *to);
int drop_table();
int create_index(const char *name, KEY *key_info, bool unique);
int create_ordered_index(const char *name, KEY *key_info);
int create_unique_index(const char *name, KEY *key_info);
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
int initialize_autoincrement(const void* table);
int get_metadata(const char* path);
void release_metadata();
const char* get_index_name(uint idx_no) const;
const char* get_unique_index_name(uint idx_no) const;
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
NDB_INDEX_TYPE get_index_type(uint idx_no) const;
NDB_INDEX_TYPE get_index_type_from_table(uint index_no) const;
int pk_read(const byte *key, uint key_len,
byte *buf);
int unique_index_read(const byte *key, uint key_len,
byte *buf);
int ordered_index_scan(const key_range *start_key,
const key_range *end_key,
bool sorted, byte* buf);
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
int full_table_scan(byte * buf);
int next_result(byte *buf);
int define_read_attrs(byte* buf, NdbOperation* op);
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
int filtered_scan(const byte *key, uint key_len,
byte *buf,
enum ha_rkey_function find_flag);
WL# 1729 Handler: error text for NDB errors - Close an open scan if index_read is called without closing the previous one. - Removed some errors that occured during previous merge include/mysqld_error.h: Added two new error messages for NDB sql/ha_ndbcluster.cc: Added more error code mappings, from NDB code to MySQL Added function to print out the error message when an NDB error occurs. Added two new error codes, which will represent either a permanent or temporary NDB error. Modev get_ndb_lock_type from class to local function Removed some merge errors New function close_scan, to close an open scan. sql/ha_ndbcluster.h: Added print_error function, overrides handler::print_error Added close_scan Moved get_ndb_lock_type from class to local function sql/share/czech/errmsg.txt: Added two new error messages for NDB sql/share/danish/errmsg.txt: Added two new error messages for NDB sql/share/dutch/errmsg.txt: Added two new error messages for NDB sql/share/english/errmsg.txt: Added two new error messages for NDB sql/share/estonian/errmsg.txt: Added two new error messages for NDB sql/share/french/errmsg.txt: Added two new error messages for NDB sql/share/german/errmsg.txt: Added two new error messages for NDB sql/share/greek/errmsg.txt: Added two new error messages for NDB sql/share/hungarian/errmsg.txt: Added two new error messages for NDB sql/share/italian/errmsg.txt: Added two new error messages for NDB sql/share/japanese/errmsg.txt: Added two new error messages for NDB sql/share/korean/errmsg.txt: Added two new error messages for NDB sql/share/norwegian-ny/errmsg.txt: Added two new error messages for NDB sql/share/norwegian/errmsg.txt: Added two new error messages for NDB sql/share/polish/errmsg.txt: Added two new error messages for NDB sql/share/portuguese/errmsg.txt: Added two new error messages for NDB sql/share/romanian/errmsg.txt: Added two new error messages for NDB sql/share/russian/errmsg.txt: Added two new error messages for NDB sql/share/serbian/errmsg.txt: Added two new error messages for NDB sql/share/slovak/errmsg.txt: Added two new error messages for NDB sql/share/spanish/errmsg.txt: Added two new error messages for NDB sql/share/swedish/errmsg.txt: Added two new error messages for NDB sql/share/ukrainian/errmsg.txt: Added two new error messages for NDB
2004-05-11 13:59:22 +02:00
int close_scan();
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
void unpack_record(byte *buf);
void set_dbname(const char *pathname);
void set_tabname(const char *pathname);
void set_tabname(const char *pathname, char *tabname);
bool set_hidden_key(NdbOperation*,
uint fieldnr, const byte* field_ptr);
int set_ndb_key(NdbOperation*, Field *field,
uint fieldnr, const byte* field_ptr);
int set_ndb_value(NdbOperation*, Field *field, uint fieldnr);
int get_ndb_value(NdbOperation*, uint fieldnr, byte *field_ptr);
int set_primary_key(NdbOperation *op, const byte *key);
int set_primary_key(NdbOperation *op);
int set_primary_key_from_old_data(NdbOperation *op, const byte *old_data);
int set_bounds(NdbOperation *ndb_op, const key_range *key,
int bound);
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
int key_cmp(uint keynr, const byte * old_row, const byte * new_row);
void print_results();
longlong get_auto_increment();
int ndb_err(NdbConnection*);
private:
int check_ndb_connection();
NdbConnection *m_active_trans;
NdbResultSet *m_active_cursor;
Ndb *m_ndb;
void *m_table;
char m_dbname[FN_HEADLEN];
//char m_schemaname[FN_HEADLEN];
char m_tabname[FN_HEADLEN];
ulong m_table_flags;
THR_LOCK_DATA m_lock;
NDB_SHARE *m_share;
NDB_INDEX_TYPE m_indextype[MAX_KEY];
const char* m_unique_index_name[MAX_KEY];
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
NdbRecAttr *m_value[NDB_MAX_ATTRIBUTES_IN_TABLE];
bool m_use_write;
bool retrieve_all_fields;
ha_rows rows_to_insert;
ha_rows rows_inserted;
ha_rows bulk_insert_rows;
ha_rows ops_pending;
Added NDB storage engine include/my_base.h: Added three new errorcodes to be returned by the handler sql/Makefile.am: Add new files discover.cc, ha_ndbcluster.cc and ha_ndbcluster.h Add include path of NDB files sql/handler.cc: Added variable for keeping track of number of "discovers" Added NDB to list of storage engines Added calls to NDB for commit, rollback etc. Added function ha_discover for discovering a table from handler sql/handler.h: Added NDB to list of storage engines Added vbariable in transaction for keeping a ndb transaction handle sql/lex.h: Changed AND to AND_SYM and OR to OR_SYM to avoid nameclash sql/mysql_priv.h: Added prototypes for new functions readfrm, writefrm and create_table_from_handler sql/mysqld.cc: Added NDB support Disable NDB with --skip-ndbcluster sql/set_var.cc: Add posibilty to show if NDB handler is supported sql/ha_ndbcluster.cc: Add ifdef for whole file for not compiling anything if NDB sholdn't be included Updated timestamp handling to use new vars timestamp_default_now and timestamp_on_update_now sql/sql_base.cc: If frm file is not found on disk, ask handler if it knows about the table. Then retry the open. This new functionality is called "discover" and can be used by any handler. sql/sql_class.h: Added variable for keeping a NDB connection handle sql/sql_table.cc: Before trying to create a table, ask handler if a table with that name already exists. If user said CREATE TABLE IF NOT EXISTS, disocver the table from handler sql/sql_yacc.yy: Add NDBCLUSTER_SYM Change AND to AND_SYM Change OR to OR_SYM sql/table.cc: Fixe for probelm when NullS is returned from bas_ext of a handler.
2004-04-15 09:14:14 +02:00
};
bool ndbcluster_init(void);
bool ndbcluster_end(void);
int ndbcluster_commit(THD *thd, void* ndb_transaction);
int ndbcluster_rollback(THD *thd, void* ndb_transaction);
void ndbcluster_close_connection(THD *thd);
int ndbcluster_discover(const char* dbname, const char* name,
const void** frmblob, uint* frmlen);
int ndbcluster_drop_database(const char* path);