Loading innobase/include/data0type.h +2 −1 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ Created 1/16/1996 Heikki Tuuri extern ulint data_mysql_default_charset_coll; #define DATA_MYSQL_LATIN1_SWEDISH_CHARSET_COLL 8 #define DATA_MYSQL_BINARY_CHARSET_COLL 63 /* SQL data type struct */ typedef struct dtype_struct dtype_t; Loading Loading @@ -311,7 +312,7 @@ dtype_get_pad_char( /*===============*/ /* out: padding character code, or ULINT_UNDEFINED if no padding specified */ dtype_t* type); /* in: type */ const dtype_t* type); /* in: type */ /*************************************************************************** Returns the size of a fixed size data type, 0 if not a fixed size type. */ UNIV_INLINE Loading innobase/include/data0type.ic +24 −15 Original line number Diff line number Diff line Loading @@ -188,27 +188,36 @@ dtype_get_pad_char( /*===============*/ /* out: padding character code, or ULINT_UNDEFINED if no padding specified */ dtype_t* type) /* in: type */ const dtype_t* type) /* in: type */ { if (type->mtype == DATA_CHAR || type->mtype == DATA_VARCHAR || type->mtype == DATA_BINARY || type->mtype == DATA_FIXBINARY || type->mtype == DATA_MYSQL || type->mtype == DATA_VARMYSQL || (type->mtype == DATA_BLOB && (type->prtype & DATA_BINARY_TYPE) == 0)) { switch (type->mtype) { case DATA_FIXBINARY: case DATA_BINARY: if (UNIV_UNLIKELY(dtype_get_charset_coll(type->prtype) == DATA_MYSQL_BINARY_CHARSET_COLL)) { /* Starting from 5.0.18, do not pad VARBINARY or BINARY columns. */ return(ULINT_UNDEFINED); } /* Fall through */ case DATA_CHAR: case DATA_VARCHAR: case DATA_MYSQL: case DATA_VARMYSQL: /* Space is the padding character for all char and binary strings, and starting from 5.0.3, also for TEXT strings. */ return((ulint)' '); return(0x20); case DATA_BLOB: if ((type->prtype & DATA_BINARY_TYPE) == 0) { return(0x20); } /* Fall through */ default: /* No padding specified */ return(ULINT_UNDEFINED); } } /************************************************************************** Stores for a type the information which determines its alphabetical ordering Loading innobase/include/lock0lock.h +12 −8 Original line number Diff line number Diff line Loading @@ -64,14 +64,6 @@ lock_clust_rec_some_has_impl( dict_index_t* index, /* in: clustered index */ const ulint* offsets);/* in: rec_get_offsets(rec, index) */ /***************************************************************** Resets the lock bits for a single record. Releases transactions waiting for lock requests here. */ void lock_rec_reset_and_release_wait( /*============================*/ rec_t* rec); /* in: record whose locks bits should be reset */ /***************************************************************** Makes a record to inherit the locks of another record as gap type locks, but does not reset the lock bits of the other record. Also waiting lock requests on rec are inherited as GRANTED gap locks. */ Loading Loading @@ -427,6 +419,18 @@ lock_is_on_table( /*=============*/ /* out: TRUE if there are lock(s) */ dict_table_t* table); /* in: database table in dictionary cache */ /***************************************************************** Removes a granted record lock of a transaction from the queue and grants locks to other transactions waiting in the queue if they now are entitled to a lock. */ void lock_rec_unlock( /*============*/ trx_t* trx, /* in: transaction that has set a record lock */ rec_t* rec, /* in: record */ ulint lock_mode); /* in: LOCK_S or LOCK_X */ /************************************************************************* Releases a table lock. Releases possible other transactions waiting for this lock. */ Loading innobase/include/os0file.h +3 −2 Original line number Diff line number Diff line Loading @@ -91,9 +91,10 @@ log. */ #define OS_FILE_NOT_FOUND 71 #define OS_FILE_DISK_FULL 72 #define OS_FILE_ALREADY_EXISTS 73 #define OS_FILE_AIO_RESOURCES_RESERVED 74 /* wait for OS aio resources #define OS_FILE_PATH_ERROR 74 #define OS_FILE_AIO_RESOURCES_RESERVED 75 /* wait for OS aio resources to become available again */ #define OS_FILE_ERROR_NOT_SPECIFIED 75 #define OS_FILE_ERROR_NOT_SPECIFIED 76 /* Types for aio operations */ #define OS_FILE_READ 10 Loading innobase/include/row0mysql.h +3 −2 Original line number Diff line number Diff line Loading @@ -250,7 +250,8 @@ trx_register_new_rec_lock() to store the information which new record locks really were set. This function removes a newly set lock under prebuilt->pcur, and also under prebuilt->clust_pcur. Currently, this is only used and tested in the case of an UPDATE or a DELETE statement, where the row lock is of the LOCK_X type. LOCK_X or LOCK_S type. Thus, this implements a 'mini-rollback' that releases the latest record locks we set. */ Loading Loading
innobase/include/data0type.h +2 −1 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ Created 1/16/1996 Heikki Tuuri extern ulint data_mysql_default_charset_coll; #define DATA_MYSQL_LATIN1_SWEDISH_CHARSET_COLL 8 #define DATA_MYSQL_BINARY_CHARSET_COLL 63 /* SQL data type struct */ typedef struct dtype_struct dtype_t; Loading Loading @@ -311,7 +312,7 @@ dtype_get_pad_char( /*===============*/ /* out: padding character code, or ULINT_UNDEFINED if no padding specified */ dtype_t* type); /* in: type */ const dtype_t* type); /* in: type */ /*************************************************************************** Returns the size of a fixed size data type, 0 if not a fixed size type. */ UNIV_INLINE Loading
innobase/include/data0type.ic +24 −15 Original line number Diff line number Diff line Loading @@ -188,27 +188,36 @@ dtype_get_pad_char( /*===============*/ /* out: padding character code, or ULINT_UNDEFINED if no padding specified */ dtype_t* type) /* in: type */ const dtype_t* type) /* in: type */ { if (type->mtype == DATA_CHAR || type->mtype == DATA_VARCHAR || type->mtype == DATA_BINARY || type->mtype == DATA_FIXBINARY || type->mtype == DATA_MYSQL || type->mtype == DATA_VARMYSQL || (type->mtype == DATA_BLOB && (type->prtype & DATA_BINARY_TYPE) == 0)) { switch (type->mtype) { case DATA_FIXBINARY: case DATA_BINARY: if (UNIV_UNLIKELY(dtype_get_charset_coll(type->prtype) == DATA_MYSQL_BINARY_CHARSET_COLL)) { /* Starting from 5.0.18, do not pad VARBINARY or BINARY columns. */ return(ULINT_UNDEFINED); } /* Fall through */ case DATA_CHAR: case DATA_VARCHAR: case DATA_MYSQL: case DATA_VARMYSQL: /* Space is the padding character for all char and binary strings, and starting from 5.0.3, also for TEXT strings. */ return((ulint)' '); return(0x20); case DATA_BLOB: if ((type->prtype & DATA_BINARY_TYPE) == 0) { return(0x20); } /* Fall through */ default: /* No padding specified */ return(ULINT_UNDEFINED); } } /************************************************************************** Stores for a type the information which determines its alphabetical ordering Loading
innobase/include/lock0lock.h +12 −8 Original line number Diff line number Diff line Loading @@ -64,14 +64,6 @@ lock_clust_rec_some_has_impl( dict_index_t* index, /* in: clustered index */ const ulint* offsets);/* in: rec_get_offsets(rec, index) */ /***************************************************************** Resets the lock bits for a single record. Releases transactions waiting for lock requests here. */ void lock_rec_reset_and_release_wait( /*============================*/ rec_t* rec); /* in: record whose locks bits should be reset */ /***************************************************************** Makes a record to inherit the locks of another record as gap type locks, but does not reset the lock bits of the other record. Also waiting lock requests on rec are inherited as GRANTED gap locks. */ Loading Loading @@ -427,6 +419,18 @@ lock_is_on_table( /*=============*/ /* out: TRUE if there are lock(s) */ dict_table_t* table); /* in: database table in dictionary cache */ /***************************************************************** Removes a granted record lock of a transaction from the queue and grants locks to other transactions waiting in the queue if they now are entitled to a lock. */ void lock_rec_unlock( /*============*/ trx_t* trx, /* in: transaction that has set a record lock */ rec_t* rec, /* in: record */ ulint lock_mode); /* in: LOCK_S or LOCK_X */ /************************************************************************* Releases a table lock. Releases possible other transactions waiting for this lock. */ Loading
innobase/include/os0file.h +3 −2 Original line number Diff line number Diff line Loading @@ -91,9 +91,10 @@ log. */ #define OS_FILE_NOT_FOUND 71 #define OS_FILE_DISK_FULL 72 #define OS_FILE_ALREADY_EXISTS 73 #define OS_FILE_AIO_RESOURCES_RESERVED 74 /* wait for OS aio resources #define OS_FILE_PATH_ERROR 74 #define OS_FILE_AIO_RESOURCES_RESERVED 75 /* wait for OS aio resources to become available again */ #define OS_FILE_ERROR_NOT_SPECIFIED 75 #define OS_FILE_ERROR_NOT_SPECIFIED 76 /* Types for aio operations */ #define OS_FILE_READ 10 Loading
innobase/include/row0mysql.h +3 −2 Original line number Diff line number Diff line Loading @@ -250,7 +250,8 @@ trx_register_new_rec_lock() to store the information which new record locks really were set. This function removes a newly set lock under prebuilt->pcur, and also under prebuilt->clust_pcur. Currently, this is only used and tested in the case of an UPDATE or a DELETE statement, where the row lock is of the LOCK_X type. LOCK_X or LOCK_S type. Thus, this implements a 'mini-rollback' that releases the latest record locks we set. */ Loading