mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Apply innodb-5.1-ss2360 snapshot
Fixes: - Bug #34920: auto_increment resets to 1 on foreign key creation We need to use/inherit the passed in autoinc counter for ALTER TABLE statements too. mysql-test/r/innodb.result: Apply innodb-5.1-ss2360 snapshot Revision r2345: branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc counter for ALTER TABLE statements too. mysql-test/t/innodb.test: Apply innodb-5.1-ss2360 snapshot Revision r2345: branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc counter for ALTER TABLE statements too. storage/innobase/dict/dict0dict.c: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/handler/ha_innodb.cc: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. Revision r2345: branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc counter for ALTER TABLE statements too. storage/innobase/handler/ha_innodb.h: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/include/dict0dict.h: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/include/dict0mem.h: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/include/row0sel.h: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/include/univ.i: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/row/row0sel.c: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned.
This commit is contained in:
@ -3245,3 +3245,22 @@ where table_schema='test' and table_name = 't1';
|
|||||||
table_comment data_free_is_set
|
table_comment data_free_is_set
|
||||||
this is a comment 1
|
this is a comment 1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
c2 VARCHAR(128) NOT NULL,
|
||||||
|
PRIMARY KEY(c1)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=100;
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
c1 INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
c2 INT(10) UNSIGNED DEFAULT NULL,
|
||||||
|
PRIMARY KEY(c1)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=200;
|
||||||
|
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't2';
|
||||||
|
AUTO_INCREMENT
|
||||||
|
200
|
||||||
|
ALTER TABLE t2 ADD CONSTRAINT t1_t2_1 FOREIGN KEY(c1) REFERENCES t1(c1);
|
||||||
|
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't2';
|
||||||
|
AUTO_INCREMENT
|
||||||
|
200
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -2436,6 +2436,29 @@ select table_comment, data_free > 0 as data_free_is_set
|
|||||||
where table_schema='test' and table_name = 't1';
|
where table_schema='test' and table_name = 't1';
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug 34920 test
|
||||||
|
#
|
||||||
|
CONNECTION default;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
c2 VARCHAR(128) NOT NULL,
|
||||||
|
PRIMARY KEY(c1)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=100;
|
||||||
|
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
c1 INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
c2 INT(10) UNSIGNED DEFAULT NULL,
|
||||||
|
PRIMARY KEY(c1)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=200;
|
||||||
|
|
||||||
|
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't2';
|
||||||
|
ALTER TABLE t2 ADD CONSTRAINT t1_t2_1 FOREIGN KEY(c1) REFERENCES t1(c1);
|
||||||
|
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't2';
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
# End 34920 test
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# #
|
# #
|
||||||
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
|
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
|
||||||
|
@ -429,7 +429,7 @@ void
|
|||||||
dict_table_autoinc_initialize(
|
dict_table_autoinc_initialize(
|
||||||
/*==========================*/
|
/*==========================*/
|
||||||
dict_table_t* table, /* in: table */
|
dict_table_t* table, /* in: table */
|
||||||
ib_longlong value) /* in: next value to assign to a row */
|
ib_ulonglong value) /* in: next value to assign to a row */
|
||||||
{
|
{
|
||||||
ut_ad(mutex_own(&table->autoinc_mutex));
|
ut_ad(mutex_own(&table->autoinc_mutex));
|
||||||
|
|
||||||
@ -441,7 +441,7 @@ dict_table_autoinc_initialize(
|
|||||||
Reads the next autoinc value (== autoinc counter value), 0 if not yet
|
Reads the next autoinc value (== autoinc counter value), 0 if not yet
|
||||||
initialized. */
|
initialized. */
|
||||||
|
|
||||||
ib_longlong
|
ib_ulonglong
|
||||||
dict_table_autoinc_read(
|
dict_table_autoinc_read(
|
||||||
/*====================*/
|
/*====================*/
|
||||||
/* out: value for a new row, or 0 */
|
/* out: value for a new row, or 0 */
|
||||||
@ -470,7 +470,7 @@ dict_table_autoinc_update(
|
|||||||
/*======================*/
|
/*======================*/
|
||||||
|
|
||||||
dict_table_t* table, /* in: table */
|
dict_table_t* table, /* in: table */
|
||||||
ib_longlong value) /* in: value which was assigned to a row */
|
ib_ulonglong value) /* in: value which was assigned to a row */
|
||||||
{
|
{
|
||||||
if (table->autoinc_inited && value > table->autoinc) {
|
if (table->autoinc_inited && value > table->autoinc) {
|
||||||
|
|
||||||
|
@ -3545,7 +3545,19 @@ no_commit:
|
|||||||
if (auto_inc > prebuilt->last_value) {
|
if (auto_inc > prebuilt->last_value) {
|
||||||
set_max_autoinc:
|
set_max_autoinc:
|
||||||
ut_a(prebuilt->table->autoinc_increment > 0);
|
ut_a(prebuilt->table->autoinc_increment > 0);
|
||||||
auto_inc += prebuilt->table->autoinc_increment;
|
|
||||||
|
ulonglong have;
|
||||||
|
ulonglong need;
|
||||||
|
|
||||||
|
/* Check for overflow conditions. */
|
||||||
|
need = prebuilt->table->autoinc_increment;
|
||||||
|
have = ~0x0ULL - auto_inc;
|
||||||
|
|
||||||
|
if (have < need) {
|
||||||
|
need = have;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto_inc += need;
|
||||||
|
|
||||||
err = innobase_set_max_autoinc(auto_inc);
|
err = innobase_set_max_autoinc(auto_inc);
|
||||||
|
|
||||||
@ -5105,8 +5117,15 @@ ha_innobase::create(
|
|||||||
|
|
||||||
DBUG_ASSERT(innobase_table != 0);
|
DBUG_ASSERT(innobase_table != 0);
|
||||||
|
|
||||||
if ((create_info->used_fields & HA_CREATE_USED_AUTO) &&
|
/* Note: We can't call update_thd() as prebuilt will not be
|
||||||
(create_info->auto_increment_value != 0)) {
|
setup at this stage and so we use thd. */
|
||||||
|
|
||||||
|
/* We need to copy the AUTOINC value from the old table if
|
||||||
|
this is an ALTER TABLE. */
|
||||||
|
|
||||||
|
if (((create_info->used_fields & HA_CREATE_USED_AUTO)
|
||||||
|
|| thd_sql_command(thd) == SQLCOM_ALTER_TABLE)
|
||||||
|
&& create_info->auto_increment_value != 0) {
|
||||||
|
|
||||||
/* Query was ALTER TABLE...AUTO_INCREMENT = x; or
|
/* Query was ALTER TABLE...AUTO_INCREMENT = x; or
|
||||||
CREATE TABLE ...AUTO_INCREMENT = x; Find out a table
|
CREATE TABLE ...AUTO_INCREMENT = x; Find out a table
|
||||||
@ -5856,7 +5875,7 @@ ha_innobase::info(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (flag & HA_STATUS_AUTO && table->found_next_number_field) {
|
if (flag & HA_STATUS_AUTO && table->found_next_number_field) {
|
||||||
longlong auto_inc;
|
ulonglong auto_inc;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* The following function call can the first time fail in
|
/* The following function call can the first time fail in
|
||||||
@ -7207,9 +7226,9 @@ ha_innobase::innobase_read_and_init_auto_inc(
|
|||||||
/*=========================================*/
|
/*=========================================*/
|
||||||
/* out: 0 or generic MySQL
|
/* out: 0 or generic MySQL
|
||||||
error code */
|
error code */
|
||||||
longlong* value) /* out: the autoinc value */
|
ulonglong* value) /* out: the autoinc value */
|
||||||
{
|
{
|
||||||
longlong auto_inc;
|
ulonglong auto_inc;
|
||||||
ibool stmt_start;
|
ibool stmt_start;
|
||||||
int mysql_error = 0;
|
int mysql_error = 0;
|
||||||
dict_table_t* innodb_table = prebuilt->table;
|
dict_table_t* innodb_table = prebuilt->table;
|
||||||
@ -7260,7 +7279,9 @@ ha_innobase::innobase_read_and_init_auto_inc(
|
|||||||
index, autoinc_col_name, &auto_inc);
|
index, autoinc_col_name, &auto_inc);
|
||||||
|
|
||||||
if (error == DB_SUCCESS) {
|
if (error == DB_SUCCESS) {
|
||||||
++auto_inc;
|
if (auto_inc < ~0x0ULL) {
|
||||||
|
++auto_inc;
|
||||||
|
}
|
||||||
dict_table_autoinc_initialize(innodb_table, auto_inc);
|
dict_table_autoinc_initialize(innodb_table, auto_inc);
|
||||||
} else {
|
} else {
|
||||||
ut_print_timestamp(stderr);
|
ut_print_timestamp(stderr);
|
||||||
@ -7313,14 +7334,14 @@ ha_innobase::innobase_get_auto_increment(
|
|||||||
error = innobase_autoinc_lock();
|
error = innobase_autoinc_lock();
|
||||||
|
|
||||||
if (error == DB_SUCCESS) {
|
if (error == DB_SUCCESS) {
|
||||||
ib_longlong autoinc;
|
ulonglong autoinc;
|
||||||
|
|
||||||
/* Determine the first value of the interval */
|
/* Determine the first value of the interval */
|
||||||
autoinc = dict_table_autoinc_read(prebuilt->table);
|
autoinc = dict_table_autoinc_read(prebuilt->table);
|
||||||
|
|
||||||
/* We need to initialize the AUTO-INC value, for
|
/* We need to initialize the AUTO-INC value, for
|
||||||
that we release all locks.*/
|
that we release all locks.*/
|
||||||
if (autoinc <= 0) {
|
if (autoinc == 0) {
|
||||||
trx_t* trx;
|
trx_t* trx;
|
||||||
|
|
||||||
trx = prebuilt->trx;
|
trx = prebuilt->trx;
|
||||||
@ -7339,14 +7360,11 @@ ha_innobase::innobase_get_auto_increment(
|
|||||||
mysql_error = innobase_read_and_init_auto_inc(
|
mysql_error = innobase_read_and_init_auto_inc(
|
||||||
&autoinc);
|
&autoinc);
|
||||||
|
|
||||||
if (!mysql_error) {
|
if (mysql_error) {
|
||||||
/* Should have read the proper value */
|
|
||||||
ut_a(autoinc > 0);
|
|
||||||
} else {
|
|
||||||
error = DB_ERROR;
|
error = DB_ERROR;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
*value = (ulonglong) autoinc;
|
*value = autoinc;
|
||||||
}
|
}
|
||||||
/* A deadlock error during normal processing is OK
|
/* A deadlock error during normal processing is OK
|
||||||
and can be ignored. */
|
and can be ignored. */
|
||||||
@ -7431,10 +7449,19 @@ ha_innobase::get_auto_increment(
|
|||||||
/* With old style AUTOINC locking we only update the table's
|
/* With old style AUTOINC locking we only update the table's
|
||||||
AUTOINC counter after attempting to insert the row. */
|
AUTOINC counter after attempting to insert the row. */
|
||||||
if (innobase_autoinc_lock_mode != AUTOINC_OLD_STYLE_LOCKING) {
|
if (innobase_autoinc_lock_mode != AUTOINC_OLD_STYLE_LOCKING) {
|
||||||
|
ulonglong have;
|
||||||
|
ulonglong need;
|
||||||
|
|
||||||
|
/* Check for overflow conditions. */
|
||||||
|
need = *nb_reserved_values * increment;
|
||||||
|
have = ~0x0ULL - *first_value;
|
||||||
|
|
||||||
|
if (have < need) {
|
||||||
|
need = have;
|
||||||
|
}
|
||||||
|
|
||||||
/* Compute the last value in the interval */
|
/* Compute the last value in the interval */
|
||||||
prebuilt->last_value = *first_value +
|
prebuilt->last_value = *first_value + need;
|
||||||
(*nb_reserved_values * increment);
|
|
||||||
|
|
||||||
ut_a(prebuilt->last_value >= *first_value);
|
ut_a(prebuilt->last_value >= *first_value);
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ class ha_innobase: public handler
|
|||||||
int update_thd(THD* thd);
|
int update_thd(THD* thd);
|
||||||
int change_active_index(uint keynr);
|
int change_active_index(uint keynr);
|
||||||
int general_fetch(uchar* buf, uint direction, uint match_mode);
|
int general_fetch(uchar* buf, uint direction, uint match_mode);
|
||||||
int innobase_read_and_init_auto_inc(longlong* ret);
|
int innobase_read_and_init_auto_inc(ulonglong* ret);
|
||||||
ulong innobase_autoinc_lock();
|
ulong innobase_autoinc_lock();
|
||||||
ulong innobase_set_max_autoinc(ulonglong auto_inc);
|
ulong innobase_set_max_autoinc(ulonglong auto_inc);
|
||||||
ulong innobase_reset_autoinc(ulonglong auto_inc);
|
ulong innobase_reset_autoinc(ulonglong auto_inc);
|
||||||
|
@ -185,12 +185,12 @@ void
|
|||||||
dict_table_autoinc_initialize(
|
dict_table_autoinc_initialize(
|
||||||
/*==========================*/
|
/*==========================*/
|
||||||
dict_table_t* table, /* in: table */
|
dict_table_t* table, /* in: table */
|
||||||
ib_longlong value); /* in: next value to assign to a row */
|
ib_ulonglong value); /* in: next value to assign to a row */
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Reads the next autoinc value (== autoinc counter value), 0 if not yet
|
Reads the next autoinc value (== autoinc counter value), 0 if not yet
|
||||||
initialized. */
|
initialized. */
|
||||||
|
|
||||||
ib_longlong
|
ib_ulonglong
|
||||||
dict_table_autoinc_read(
|
dict_table_autoinc_read(
|
||||||
/*====================*/
|
/*====================*/
|
||||||
/* out: value for a new row, or 0 */
|
/* out: value for a new row, or 0 */
|
||||||
@ -204,7 +204,7 @@ dict_table_autoinc_update(
|
|||||||
/*======================*/
|
/*======================*/
|
||||||
|
|
||||||
dict_table_t* table, /* in: table */
|
dict_table_t* table, /* in: table */
|
||||||
ib_longlong value); /* in: value which was assigned to a row */
|
ib_ulonglong value); /* in: value which was assigned to a row */
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Release the autoinc lock.*/
|
Release the autoinc lock.*/
|
||||||
|
|
||||||
|
@ -409,7 +409,7 @@ struct dict_table_struct{
|
|||||||
/* TRUE if the autoinc counter has been
|
/* TRUE if the autoinc counter has been
|
||||||
inited; MySQL gets the init value by executing
|
inited; MySQL gets the init value by executing
|
||||||
SELECT MAX(auto inc column) */
|
SELECT MAX(auto inc column) */
|
||||||
ib_longlong autoinc;/* autoinc counter value to give to the
|
ib_ulonglong autoinc;/* autoinc counter value to give to the
|
||||||
next inserted row */
|
next inserted row */
|
||||||
|
|
||||||
ib_longlong autoinc_increment;
|
ib_longlong autoinc_increment;
|
||||||
|
@ -181,7 +181,7 @@ row_search_max_autoinc(
|
|||||||
error code */
|
error code */
|
||||||
dict_index_t* index, /* in: index to search */
|
dict_index_t* index, /* in: index to search */
|
||||||
const char* col_name, /* in: autoinc column name */
|
const char* col_name, /* in: autoinc column name */
|
||||||
ib_longlong* value); /* out: AUTOINC value read */
|
ib_ulonglong* value); /* out: AUTOINC value read */
|
||||||
|
|
||||||
/* A structure for caching column values for prefetched rows */
|
/* A structure for caching column values for prefetched rows */
|
||||||
struct sel_buf_struct{
|
struct sel_buf_struct{
|
||||||
|
@ -212,8 +212,11 @@ typedef long int lint;
|
|||||||
|
|
||||||
#ifdef __WIN__
|
#ifdef __WIN__
|
||||||
typedef __int64 ib_longlong;
|
typedef __int64 ib_longlong;
|
||||||
|
typedef unsigned __int64 ib_ulonglong;
|
||||||
#else
|
#else
|
||||||
|
/* Note: longlong and ulonglong come from MySQL headers. */
|
||||||
typedef longlong ib_longlong;
|
typedef longlong ib_longlong;
|
||||||
|
typedef ulonglong ib_ulonglong;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef unsigned long long int ullint;
|
typedef unsigned long long int ullint;
|
||||||
|
@ -4529,7 +4529,7 @@ row_search_check_if_query_cache_permitted(
|
|||||||
Read the AUTOINC column from the current row. If the value is less than
|
Read the AUTOINC column from the current row. If the value is less than
|
||||||
0 and the type is not unsigned then we reset the value to 0. */
|
0 and the type is not unsigned then we reset the value to 0. */
|
||||||
static
|
static
|
||||||
ib_longlong
|
ib_ulonglong
|
||||||
row_search_autoinc_read_column(
|
row_search_autoinc_read_column(
|
||||||
/*===========================*/
|
/*===========================*/
|
||||||
/* out: value read from the column */
|
/* out: value read from the column */
|
||||||
@ -4540,7 +4540,7 @@ row_search_autoinc_read_column(
|
|||||||
{
|
{
|
||||||
ulint len;
|
ulint len;
|
||||||
const byte* data;
|
const byte* data;
|
||||||
ib_longlong value;
|
ib_ulonglong value;
|
||||||
mem_heap_t* heap = NULL;
|
mem_heap_t* heap = NULL;
|
||||||
/* Our requirement is that dest should be word aligned. */
|
/* Our requirement is that dest should be word aligned. */
|
||||||
byte dest[sizeof(value)];
|
byte dest[sizeof(value)];
|
||||||
@ -4567,7 +4567,7 @@ row_search_autoinc_read_column(
|
|||||||
and that dest is word aligned. */
|
and that dest is word aligned. */
|
||||||
switch (len) {
|
switch (len) {
|
||||||
case 8:
|
case 8:
|
||||||
value = *(ib_longlong*) dest;
|
value = *(ib_ulonglong*) dest;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
@ -4595,7 +4595,7 @@ row_search_autoinc_read_column(
|
|||||||
mem_heap_free(heap);
|
mem_heap_free(heap);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!unsigned_type && value < 0) {
|
if (!unsigned_type && (ib_longlong) value < 0) {
|
||||||
value = 0;
|
value = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4634,7 +4634,7 @@ row_search_max_autoinc(
|
|||||||
column name can't be found in index */
|
column name can't be found in index */
|
||||||
dict_index_t* index, /* in: index to search */
|
dict_index_t* index, /* in: index to search */
|
||||||
const char* col_name, /* in: name of autoinc column */
|
const char* col_name, /* in: name of autoinc column */
|
||||||
ib_longlong* value) /* out: AUTOINC value read */
|
ib_ulonglong* value) /* out: AUTOINC value read */
|
||||||
{
|
{
|
||||||
ulint i;
|
ulint i;
|
||||||
ulint n_cols;
|
ulint n_cols;
|
||||||
|
Reference in New Issue
Block a user