Commit fff42272 authored by marko@hundin.mysql.fi's avatar marko@hundin.mysql.fi

Merge marko@build.mysql.com:/home/bk/mysql-4.1

into hundin.mysql.fi:/home/marko/j/mysql-4.1
parents 8eadb180 03f19377
......@@ -70,7 +70,7 @@ dict_col_reposition_in_cache(
/*=========================*/
dict_table_t* table, /* in: table */
dict_col_t* col, /* in: column */
char* new_name); /* in: new table name */
const char* new_name); /* in: new table name */
/**************************************************************************
Removes a column from the data dictionary hash table. */
static
......@@ -309,7 +309,7 @@ dict_table_get_index_noninline(
/*===========================*/
/* out: index, NULL if does not exist */
dict_table_t* table, /* in: table */
char* name) /* in: index name */
const char* name) /* in: index name */
{
return(dict_table_get_index(table, name));
}
......@@ -693,9 +693,10 @@ directory dict_table_get_low is usually the appropriate function. */
dict_table_t*
dict_table_get(
/*===========*/
/* out: table, NULL if does not exist */
char* table_name, /* in: table name */
trx_t* trx) /* in: transaction handle or NULL */
/* out: table, NULL if
does not exist */
const char* table_name, /* in: table name */
trx_t* trx) /* in: transaction handle or NULL */
{
dict_table_t* table;
......@@ -722,9 +723,10 @@ Returns a table object and increments MySQL open handle count on the table. */
dict_table_t*
dict_table_get_and_increment_handle_count(
/*======================================*/
/* out: table, NULL if does not exist */
char* table_name, /* in: table name */
trx_t* trx) /* in: transaction handle or NULL */
/* out: table, NULL if
does not exist */
const char* table_name, /* in: table name */
trx_t* trx) /* in: transaction handle or NULL */
{
dict_table_t* table;
......@@ -886,7 +888,7 @@ dict_table_rename_in_cache(
/*=======================*/
/* out: TRUE if success */
dict_table_t* table, /* in: table */
char* new_name, /* in: new name */
const char* new_name, /* in: new name */
ibool rename_also_foreigns)/* in: in ALTER TABLE we want
to preserve the original table name
in constraints which reference it */
......@@ -1294,7 +1296,7 @@ dict_col_reposition_in_cache(
/*=========================*/
dict_table_t* table, /* in: table */
dict_col_t* col, /* in: column */
char* new_name) /* in: new table name */
const char* new_name) /* in: new table name */
{
ulint fold;
......@@ -2019,7 +2021,7 @@ dict_foreign_find_index(
column types must match */
{
dict_index_t* index;
char* col_name;
const char* col_name;
ulint i;
index = dict_table_get_first_index(table);
......@@ -2564,14 +2566,14 @@ static
char*
dict_strip_comments(
/*================*/
/* out, own: SQL string stripped from
comments; the caller must free this
with mem_free()! */
char* sql_string) /* in: SQL string */
/* out, own: SQL string stripped from
comments; the caller must free this
with mem_free()! */
const char* sql_string) /* in: SQL string */
{
char* str;
char* sptr;
char* ptr;
char* str;
const char* sptr;
char* ptr;
str = mem_alloc(strlen(sql_string) + 1);
......@@ -2970,7 +2972,8 @@ col_loop1:
}
foreign->foreign_table = table;
foreign->foreign_table_name = table->name;
foreign->foreign_table_name = mem_heap_strdup(foreign->heap,
table->name);
foreign->foreign_index = index;
foreign->n_fields = i;
foreign->foreign_col_names = mem_heap_alloc(foreign->heap,
......@@ -3244,16 +3247,19 @@ allowed to contain more fields than mentioned in the constraint. */
ulint
dict_create_foreign_constraints(
/*============================*/
/* out: error code or DB_SUCCESS */
trx_t* trx, /* in: transaction */
char* sql_string, /* in: table create or ALTER TABLE
statement where foreign keys are declared like:
FOREIGN KEY (a, b) REFERENCES table2(c, d),
table2 can be written also with the database
name before it: test.table2; the default
database is the database of parameter name */
char* name) /* in: table full name in the normalized form
database_name/table_name */
/* out: error code or DB_SUCCESS */
trx_t* trx, /* in: transaction */
const char* sql_string, /* in: table create statement where
foreign keys are declared like:
FOREIGN KEY (a, b) REFERENCES
table2(c, d), table2 can be written
also with the database
name before it: test.table2; the
default database id the database of
parameter name */
const char* name) /* in: table full name in the
normalized form
database_name/table_name */
{
char* str;
ulint err;
......
......@@ -27,9 +27,10 @@ Finds the first table name in the given database. */
char*
dict_get_first_table_name_in_db(
/*============================*/
/* out, own: table name, NULL if does not exist;
the caller must free the memory in the string! */
char* name) /* in: database name which ends to '/' */
/* out, own: table name, NULL if
does not exist; the caller must
free the memory in the string! */
const char* name) /* in: database name which ends to '/' */
{
dict_table_t* sys_tables;
btr_pcur_t pcur;
......@@ -389,8 +390,8 @@ Report that an index field or index for a table has been delete marked. */
static
void
dict_load_report_deleted_index(
char* name, /* in: table name */
ulint field) /* in: index field, or ULINT_UNDEFINED */
const char* name, /* in: table name */
ulint field) /* in: index field, or ULINT_UNDEFINED */
{
fputs("InnoDB: Error: data dictionary entry"
" for table ", stderr);
......@@ -688,12 +689,13 @@ dictionary cache. */
dict_table_t*
dict_load_table(
/*============*/
/* out: table, NULL if does not exist; if the table is
stored in an .ibd file, but the file does not exist,
then we set the ibd_file_missing flag TRUE in the table
object we return */
char* name) /* in: table name in the databasename/tablename
format */
/* out: table, NULL if does not exist;
if the table is stored in an .ibd file,
but the file does not exist,
then we set the ibd_file_missing flag TRUE
in the table object we return */
const char* name) /* in: table name in the
databasename/tablename format */
{
ibool ibd_file_missing = FALSE;
dict_table_t* table;
......@@ -1185,8 +1187,8 @@ already in the dictionary cache. */
ulint
dict_load_foreigns(
/*===============*/
/* out: DB_SUCCESS or error code */
char* table_name) /* in: table name */
/* out: DB_SUCCESS or error code */
const char* table_name) /* in: table name */
{
btr_pcur_t pcur;
mem_heap_t* heap;
......
......@@ -30,15 +30,14 @@ dict_table_t*
dict_mem_table_create(
/*==================*/
/* out, own: table object */
char* name, /* in: table name */
ulint space, /* in: space where the clustered index of
const char* name, /* in: table name */
ulint space, /* in: space where the clustered index of
the table is placed; this parameter is
ignored if the table is made a member of
a cluster */
ulint n_cols) /* in: number of columns */
ulint n_cols) /* in: number of columns */
{
dict_table_t* table;
char* str;
mem_heap_t* heap;
ut_ad(name);
......@@ -48,11 +47,9 @@ dict_mem_table_create(
table = mem_heap_alloc(heap, sizeof(dict_table_t));
table->heap = heap;
str = mem_heap_strdup(heap, name);
table->type = DICT_TABLE_ORDINARY;
table->name = str;
table->name = mem_heap_strdup(heap, name);
table->space = space;
table->ibd_file_missing = FALSE;
table->tablespace_discarded = FALSE;
......@@ -103,11 +100,11 @@ dict_table_t*
dict_mem_cluster_create(
/*====================*/
/* out, own: cluster object */
char* name, /* in: cluster name */
ulint space, /* in: space where the clustered indexes
const char* name, /* in: cluster name */
ulint space, /* in: space where the clustered indexes
of the member tables are placed */
ulint n_cols, /* in: number of columns */
ulint mix_len) /* in: length of the common key prefix in the
ulint n_cols, /* in: number of columns */
ulint mix_len)/* in: length of the common key prefix in the
cluster */
{
dict_table_t* cluster;
......@@ -127,7 +124,7 @@ void
dict_mem_table_make_cluster_member(
/*===============================*/
dict_table_t* table, /* in: non-published table */
char* cluster_name) /* in: cluster name */
const char* cluster_name) /* in: cluster name */
{
table->type = DICT_TABLE_CLUSTER_MEMBER;
table->cluster_name = cluster_name;
......@@ -140,7 +137,7 @@ void
dict_mem_table_add_col(
/*===================*/
dict_table_t* table, /* in: table */
char* name, /* in: column name */
const char* name, /* in: column name */
ulint mtype, /* in: main datatype */
ulint prtype, /* in: precise type */
ulint len, /* in: length */
......@@ -174,14 +171,15 @@ Creates an index memory object. */
dict_index_t*
dict_mem_index_create(
/*==================*/
/* out, own: index object */
char* table_name, /* in: table name */
char* index_name, /* in: index name */
ulint space, /* in: space where the index tree is placed,
ignored if the index is of the clustered
type */
ulint type, /* in: DICT_UNIQUE, DICT_CLUSTERED, ... ORed */
ulint n_fields) /* in: number of fields */
/* out, own: index object */
const char* table_name, /* in: table name */
const char* index_name, /* in: index name */
ulint space, /* in: space where the index tree is
placed, ignored if the index is of
the clustered type */
ulint type, /* in: DICT_UNIQUE,
DICT_CLUSTERED, ... ORed */
ulint n_fields) /* in: number of fields */
{
dict_index_t* index;
mem_heap_t* heap;
......@@ -259,7 +257,7 @@ void
dict_mem_index_add_field(
/*=====================*/
dict_index_t* index, /* in: index */
char* name, /* in: column name */
const char* name, /* in: column name */
ulint order, /* in: order criterion; 0 means an
ascending order */
ulint prefix_len) /* in: 0 or the column prefix length
......
......@@ -390,11 +390,12 @@ Appends a new file to the chain of files of a space. File must be closed. */
void
fil_node_create(
/*============*/
char* name, /* in: file name (file must be closed) */
ulint size, /* in: file size in database blocks, rounded downwards
to an integer */
ulint id, /* in: space id where to append */
ibool is_raw) /* in: TRUE if a raw device or a raw disk partition */
const char* name, /* in: file name (file must be closed) */
ulint size, /* in: file size in database blocks, rounded
downwards to an integer */
ulint id, /* in: space id where to append */
ibool is_raw) /* in: TRUE if a raw device or
a raw disk partition */
{
fil_system_t* system = fil_system;
fil_node_t* node;
......@@ -804,10 +805,10 @@ there is an error, prints an error message to the .err log. */
ibool
fil_space_create(
/*=============*/
/* out: TRUE if success */
char* name, /* in: space name */
ulint id, /* in: space id */
ulint purpose)/* in: FIL_TABLESPACE, or FIL_LOG if log */
/* out: TRUE if success */
const char* name, /* in: space name */
ulint id, /* in: space id */
ulint purpose)/* in: FIL_TABLESPACE, or FIL_LOG if log */
{
fil_system_t* system = fil_system;
fil_space_t* space;
......@@ -1542,16 +1543,18 @@ static
void
fil_op_write_log(
/*=============*/
ulint type, /* in: MLOG_FILE_CREATE, MLOG_FILE_DELETE, or
MLOG_FILE_RENAME */
ulint space_id, /* in: space id */
char* name, /* in: table name in the familiar
'databasename/tablename' format, or the file
path in the case of MLOG_FILE_DELETE */
char* new_name, /* in: if type is MLOG_FILE_RENAME, the new
table name in the 'databasename/tablename'
format */
mtr_t* mtr) /* in: mini-transaction handle */
ulint type, /* in: MLOG_FILE_CREATE,
MLOG_FILE_DELETE, or
MLOG_FILE_RENAME */
ulint space_id, /* in: space id */
const char* name, /* in: table name in the familiar
'databasename/tablename' format, or
the file path in the case of
MLOG_FILE_DELETE */
const char* new_name, /* in: if type is MLOG_FILE_RENAME,
the new table name in the
'databasename/tablename' format */
mtr_t* mtr) /* in: mini-transaction handle */
{
byte* log_ptr;
......@@ -1960,14 +1963,15 @@ tablespace memory cache. */
ibool
fil_rename_tablespace(
/*==================*/
/* out: TRUE if success */
char* old_name, /* in: old table name in the standard
databasename/tablename format of InnoDB, or
NULL if we do the rename based on the space
id only */
ulint id, /* in: space id */
char* new_name) /* in: new table name in the standard
databasename/tablename format of InnoDB */
/* out: TRUE if success */
const char* old_name, /* in: old table name in the standard
databasename/tablename format of
InnoDB, or NULL if we do the rename
based on the space id only */
ulint id, /* in: space id */
const char* new_name) /* in: new table name in the standard
databasename/tablename format
of InnoDB */
{
fil_system_t* system = fil_system;
ibool success;
......@@ -2124,15 +2128,16 @@ path '.'. */
ulint
fil_create_new_single_table_tablespace(
/*===================================*/
/* out: DB_SUCCESS or error code */
ulint* space_id, /* in/out: space id; if this is != 0, then
this is an input parameter, otherwise
output */
char* tablename, /* in: the table name in the usual
databasename/tablename format of InnoDB */
ulint size) /* in: the initial size of the tablespace file
in pages, must be >= FIL_IBD_FILE_INITIAL_SIZE
*/
/* out: DB_SUCCESS or error code */
ulint* space_id, /* in/out: space id; if this is != 0,
then this is an input parameter,
otherwise output */
const char* tablename, /* in: the table name in the usual
databasename/tablename format
of InnoDB */
ulint size) /* in: the initial size of the
tablespace file in pages,
must be >= FIL_IBD_FILE_INITIAL_SIZE */
{
os_file_t file;
ibool ret;
......@@ -2293,12 +2298,12 @@ lsn's just by looking at that flush lsn. */
ibool
fil_reset_too_high_lsns(
/*====================*/
/* out: TRUE if success */
char* name, /* in: table name in the databasename/tablename
format */
dulint current_lsn) /* in: reset lsn's if the lsn stamped to
FIL_PAGE_FILE_FLUSH_LSN in the first page is
too high */
/* out: TRUE if success */
const char* name, /* in: table name in the
databasename/tablename format */
dulint current_lsn) /* in: reset lsn's if the lsn stamped
to FIL_PAGE_FILE_FLUSH_LSN in the
first page is too high */
{
os_file_t file;
char* filepath;
......@@ -2433,10 +2438,10 @@ closes it after we have looked at the space id in it. */
ibool
fil_open_single_table_tablespace(
/*=============================*/
/* out: TRUE if success */
ulint id, /* in: space id */
char* name) /* in: table name in the databasename/tablename
format */
/* out: TRUE if success */
ulint id, /* in: space id */
const char* name) /* in: table name in the
databasename/tablename format */
{
os_file_t file;
char* filepath;
......@@ -2937,20 +2942,22 @@ there may be many tablespaces which are not yet in the memory cache. */
ibool
fil_space_for_table_exists_in_mem(
/*==============================*/
/* out: TRUE if a matching tablespace exists
in the memory cache */
ulint id, /* in: space id */
char* name, /* in: table name in the standard
'databasename/tablename' format */
ibool mark_space, /* in: in crash recovery, at database startup
we mark all spaces which have an associated
table in the InnoDB data dictionary, so that
we can print a warning about orphaned
tablespaces */
ibool print_error_if_does_not_exist)
/* in: print detailed error information to
the .err log if a matching tablespace is
not found from memory */
/* out: TRUE if a matching tablespace
exists in the memory cache */
ulint id, /* in: space id */
const char* name, /* in: table name in the standard
'databasename/tablename' format */
ibool mark_space, /* in: in crash recovery, at database
startup we mark all spaces which have
an associated table in the InnoDB
data dictionary, so that
we can print a warning about orphaned
tablespaces */
ibool print_error_if_does_not_exist)
/* in: print detailed error
information to the .err log if a
matching tablespace is not found from
memory */
{
fil_system_t* system = fil_system;
fil_space_t* namespace;
......
......@@ -86,7 +86,7 @@ void
dfield_set_data(
/*============*/
dfield_t* field, /* in: field */
void* data, /* in: data */
const void* data, /* in: data */
ulint len); /* in: length or UNIV_SQL_NULL */
/**************************************************************************
Writes an SQL null field full of zeros. */
......
......@@ -93,7 +93,7 @@ void
dfield_set_data(
/*============*/
dfield_t* field, /* in: field */
void* data, /* in: data */
const void* data, /* in: data */
ulint len) /* in: length or UNIV_SQL_NULL */
{
ut_ad(field);
......
......@@ -166,7 +166,7 @@ dict_table_rename_in_cache(
/*=======================*/
/* out: TRUE if success */
dict_table_t* table, /* in: table */
char* new_name, /* in: new name */
const char* new_name, /* in: new name */
ibool rename_also_foreigns);/* in: in ALTER TABLE we want
to preserve the original table name
in constraints which reference it */
......@@ -210,16 +210,19 @@ fields than mentioned in the constraint. */
ulint
dict_create_foreign_constraints(
/*============================*/
/* out: error code or DB_SUCCESS */
trx_t* trx, /* in: transaction */
char* sql_string, /* in: table create statement where
foreign keys are declared like:
FOREIGN KEY (a, b) REFERENCES table2(c, d),
table2 can be written also with the database
name before it: test.table2; the default
database id the database of parameter name */
char* name); /* in: table full name in the normalized form
database_name/table_name */
/* out: error code or DB_SUCCESS */
trx_t* trx, /* in: transaction */
const char* sql_string, /* in: table create statement where
foreign keys are declared like:
FOREIGN KEY (a, b) REFERENCES
table2(c, d), table2 can be written
also with the database
name before it: test.table2; the
default database id the database of
parameter name */
const char* name); /* in: table full name in the
normalized form
database_name/table_name */
/**************************************************************************
Parses the CONSTRAINT id's to be dropped in an ALTER TABLE statement. */
......@@ -246,9 +249,10 @@ directory dict_table_get_low is usually the appropriate function. */
dict_table_t*
dict_table_get(
/*===========*/
/* out: table, NULL if does not exist */
char* table_name, /* in: table name */
trx_t* trx); /* in: transaction handle */
/* out: table, NULL if
does not exist */
const char* table_name, /* in: table name */
trx_t* trx); /* in: transaction handle */
/**************************************************************************
Returns a table object and increments MySQL open handle count on the table.
*/
......@@ -256,9 +260,10 @@ Returns a table object and increments MySQL open handle count on the table.
dict_table_t*
dict_table_get_and_increment_handle_count(
/*======================================*/
/* out: table, NULL if does not exist */
char* table_name, /* in: table name */
trx_t* trx); /* in: transaction handle or NULL */
/* out: table, NULL if
does not exist */
const char* table_name, /* in: table name */
trx_t* trx); /* in: transaction handle or NULL */
/**************************************************************************
Returns a table object, based on table id, and memoryfixes it. */
......@@ -290,8 +295,8 @@ UNIV_INLINE
dict_table_t*
dict_table_check_if_in_cache_low(
/*==============================*/
/* out: table, NULL if not found */
char* table_name); /* in: table name */
/* out: table, NULL if not found */
const char* table_name); /* in: table name */
/**************************************************************************
Gets a table; loads it to the dictionary cache if necessary. A low-level
function. */
......@@ -299,8 +304,8 @@ UNIV_INLINE
dict_table_t*
dict_table_get_low(
/*===============*/
/* out: table, NULL if not found */
char* table_name); /* in: table name */
/* out: table, NULL if not found */
const char* table_name); /* in: table name */
/**************************************************************************
Returns an index object. */
UNIV_INLINE
......@@ -309,7 +314,7 @@ dict_table_get_index(
/*=================*/
/* out: index, NULL if does not exist */
dict_table_t* table, /* in: table */
char* name); /* in: index name */
const char* name); /* in: index name */
/**************************************************************************
Returns an index object. */
......@@ -318,7 +323,7 @@ dict_table_get_index_noninline(
/*===========================*/
/* out: index, NULL if does not exist */
dict_table_t* table, /* in: table */
char* name); /* in: index name */
const char* name); /* in: index name */
/**************************************************************************
Prints a table data. */
......@@ -340,7 +345,7 @@ Prints a table data when we know the table name. */
void
dict_table_print_by_name(
/*=====================*/
char* name);
const char* name);
#endif /* UNIV_DEBUG */
/**************************************************************************
Outputs info on foreign keys of a table. */
......
......@@ -536,8 +536,8 @@ UNIV_INLINE
dict_table_t*
dict_table_check_if_in_cache_low(
/*==============================*/
/* out: table, NULL if not found */
char* table_name) /* in: table name */
/* out: table, NULL if not found */
const char* table_name) /* in: table name */
{
dict_table_t* table;
ulint table_fold;
......@@ -562,8 +562,8 @@ UNIV_INLINE
dict_table_t*
dict_table_get_low(
/*===============*/
/* out: table, NULL if not found */
char* table_name) /* in: table name */
/* out: table, NULL if not found */
const char* table_name) /* in: table name */
{
dict_table_t* table;
......@@ -642,7 +642,7 @@ dict_table_get_index(
/*=================*/
/* out: index, NULL if does not exist */
dict_table_t* table, /* in: table */
char* name) /* in: index name */
const char* name) /* in: index name */
{
dict_index_t* index = NULL;
......
......@@ -31,9 +31,10 @@ Finds the first table name in the given database. */
char*
dict_get_first_table_name_in_db(
/*============================*/
/* out, own: table name, NULL if does not exist;
the caller must free the memory in the string! */
char* name); /* in: database name which ends to '/' */
/* out, own: table name, NULL if
does not exist; the caller must free
the memory in the string! */
const char* name); /* in: database name which ends to '/' */
/************************************************************************
Loads a table definition and also all its index definitions, and also
the cluster definition if the table is a member in a cluster. Also loads
......@@ -43,11 +44,13 @@ a foreign key references columns in this table. */
dict_table_t*
dict_load_table(
/*============*/
/* out: table, NULL if does not exist; if the table is
stored in an .ibd file, but the file does not exist,
then we set the ibd_file_missing flag TRUE in the table
object we return */
char* name); /* in: table name */
/* out: table, NULL if does not exist;
if the table is stored in an .ibd file,
but the file does not exist,
then we set the ibd_file_missing flag TRUE
in the table object we return */
const char* name); /* in: table name in the
databasename/tablename format */
/***************************************************************************
Loads a table object based on the table id. */
......@@ -75,8 +78,8 @@ already in the dictionary cache. */
ulint
dict_load_foreigns(
/*===============*/
/* out: DB_SUCCESS or error code */
char* table_name); /* in: table name */
/* out: DB_SUCCESS or error code */
const char* table_name); /* in: table name */
/************************************************************************
Prints to the standard output information on all tables found in the data
dictionary system table. */
......
......@@ -48,27 +48,28 @@ Creates a table memory object. */
dict_table_t*
dict_mem_table_create(
/*==================*/
/* out, own: table object */
char* name, /* in: table name */
ulint space, /* in: space where the clustered index of
the table is placed; this parameter is
ignored if the table is made a member of
a cluster */
ulint n_cols); /* in: number of columns */
/* out, own: table object */
const char* name, /* in: table name */
ulint space, /* in: space where the clustered index
of the table is placed; this parameter
is ignored if the table is made
a member of a cluster */
ulint n_cols); /* in: number of columns */
/**************************************************************************
Creates a cluster memory object. */
dict_cluster_t*
dict_mem_cluster_create(
/*====================*/
/* out, own: cluster object (where the type
dict_cluster_t == dict_table_t) */
char* name, /* in: cluster name */
ulint space, /* in: space where the clustered indexes
of the member tables are placed */
ulint n_cols, /* in: number of columns */
ulint mix_len); /* in: length of the common key prefix in the
cluster */
/* out, own: cluster object (where the
type dict_cluster_t == dict_table_t) */
const char* name, /* in: cluster name */
ulint space, /* in: space where the clustered
indexes of the member tables are
placed */
ulint n_cols, /* in: number of columns */
ulint mix_len); /* in: length of the common key prefix
in the cluster */
/**************************************************************************
Declares a non-published table as a member in a cluster. */
......@@ -76,7 +77,7 @@ void
dict_mem_table_make_cluster_member(
/*===============================*/
dict_table_t* table, /* in: non-published table */
char* cluster_name); /* in: cluster name */
const char* cluster_name); /* in: cluster name */
/**************************************************************************
Adds a column definition to a table. */
......@@ -84,7 +85,7 @@ void
dict_mem_table_add_col(
/*===================*/
dict_table_t* table, /* in: table */
char* name, /* in: column name */
const char* name, /* in: column name */
ulint mtype, /* in: main datatype */
ulint prtype, /* in: precise type */
ulint len, /* in: length */
......@@ -95,14 +96,15 @@ Creates an index memory object. */
dict_index_t*
dict_mem_index_create(
/*==================*/
/* out, own: index object */
char* table_name, /* in: table name */
char* index_name, /* in: index name */
ulint space, /* in: space where the index tree is placed,
ignored if the index is of the clustered
type */
ulint type, /* in: DICT_UNIQUE, DICT_CLUSTERED, ... ORed */
ulint n_fields); /* in: number of fields */
/* out, own: index object */
const char* table_name, /* in: table name */
const char* index_name, /* in: index name */
ulint space, /* in: space where the index tree is
placed, ignored if the index is of
the clustered type */
ulint type, /* in: DICT_UNIQUE,
DICT_CLUSTERED, ... ORed */
ulint n_fields); /* in: number of fields */
/**************************************************************************
Adds a field definition to an index. NOTE: does not take a copy
of the column name if the field is a column. The memory occupied
......@@ -112,7 +114,7 @@ void
dict_mem_index_add_field(
/*=====================*/
dict_index_t* index, /* in: index */
char* name, /* in: column name */
const char* name, /* in: column name */
ulint order, /* in: order criterion; 0 means an
ascending order */
ulint prefix_len); /* in: 0 or the column prefix length
......@@ -142,7 +144,7 @@ struct dict_col_struct{
clustered index */
ulint ord_part;/* count of how many times this column
appears in ordering fields of an index */
char* name; /* name */
const char* name; /* name */
dtype_t type; /* data type */
dict_table_t* table; /* back pointer to table of this column */
ulint aux; /* this is used as an auxiliary variable
......@@ -154,7 +156,7 @@ struct dict_col_struct{
/* Data structure for a field in an index */
struct dict_field_struct{
dict_col_t* col; /* pointer to the table column */
char* name; /* name of the column */
const char* name; /* name of the column */
ulint order; /* flags for ordering this field:
DICT_DESCEND, ... */
ulint prefix_len; /* 0 or the length of the column
......@@ -197,8 +199,8 @@ struct dict_index_struct{
dulint id; /* id of the index */
mem_heap_t* heap; /* memory heap */
ulint type; /* index type */
char* name; /* index name */
char* table_name; /* table name */
const char* name; /* index name */
const char* table_name; /* table name */
dict_table_t* table; /* back pointer to table */
ulint space; /* space where the index tree is placed */
ulint page_no;/* page number of the index tree root */
......@@ -254,12 +256,12 @@ struct dict_foreign_struct{
or DICT_FOREIGN_ON_DELETE_SET_NULL */
char* foreign_table_name;/* foreign table name */
dict_table_t* foreign_table; /* table where the foreign key is */
char** foreign_col_names;/* names of the columns in the
const char** foreign_col_names;/* names of the columns in the
foreign key */
char* referenced_table_name;/* referenced table name */
dict_table_t* referenced_table;/* table where the referenced key
is */
char** referenced_col_names;/* names of the referenced
const char** referenced_col_names;/* names of the referenced
columns in the referenced table */
ulint n_fields; /* number of indexes' first fields
for which the the foreign key
......@@ -295,7 +297,7 @@ struct dict_table_struct{
dulint id; /* id of the table or cluster */
ulint type; /* DICT_TABLE_ORDINARY, ... */
mem_heap_t* heap; /* memory heap */
char* name; /* table name */
const char* name; /* table name */
ulint space; /* space where the clustered index of the
table is placed */
ibool ibd_file_missing;/* TRUE if this is in a single-table
......@@ -363,7 +365,7 @@ struct dict_table_struct{
byte mix_id_buf[12];
/* mix id of a mixed table written in
a compressed form */
char* cluster_name; /* if the table is a member in a
const char* cluster_name; /* if the table is a member in a
cluster, this is the name of the cluster */
/*----------------------*/
ibool does_not_fit_in_memory;
......
......@@ -132,11 +132,12 @@ Appends a new file to the chain of files of a space. File must be closed. */
void
fil_node_create(
/*============*/
char* name, /* in: file name (file must be closed) */
ulint size, /* in: file size in database blocks, rounded downwards
to an integer */
ulint id, /* in: space id where to append */
ibool is_raw);/* in: TRUE if a raw device or a raw disk partition */
const char* name, /* in: file name (file must be closed) */
ulint size, /* in: file size in database blocks, rounded
downwards to an integer */
ulint id, /* in: space id where to append */
ibool is_raw);/* in: TRUE if a raw device or
a raw disk partition */
/********************************************************************
Drops files from the start of a file space, so that its size is cut by
the amount given. */
......@@ -155,10 +156,10 @@ there is an error, prints an error message to the .err log. */
ibool
fil_space_create(
/*=============*/
/* out: TRUE if success */
char* name, /* in: space name */
ulint id, /* in: space id */
ulint purpose);/* in: FIL_TABLESPACE, or FIL_LOG if log */
/* out: TRUE if success */
const char* name, /* in: space name */
ulint id, /* in: space id */
ulint purpose);/* in: FIL_TABLESPACE, or FIL_LOG if log */
/***********************************************************************
Frees a space object from a the tablespace memory cache. Closes the files in
the chain but does not delete them. */
......@@ -327,14 +328,15 @@ tablespace memory cache. */
ibool
fil_rename_tablespace(
/*==================*/
/* out: TRUE if success */
char* old_name, /* in: old table name in the standard
databasename/tablename format of InnoDB, or
NULL if we do the rename based on the space
id only */
ulint id, /* in: space id */
char* new_name); /* in: new table name in the standard
databasename/tablename format of InnoDB */
/* out: TRUE if success */
const char* old_name, /* in: old table name in the standard
databasename/tablename format of
InnoDB, or NULL if we do the rename
based on the space id only */
ulint id, /* in: space id */
const char* new_name); /* in: new table name in the standard
databasename/tablename format
of InnoDB */
/***********************************************************************
Creates a new single-table tablespace to a database directory of MySQL.
Database directories are under the 'datadir' of MySQL. The datadir is the
......@@ -344,14 +346,16 @@ path '.'. */
ulint
fil_create_new_single_table_tablespace(
/*===================================*/
/* out: DB_SUCCESS or error code */
ulint* space_id, /* in/out: space id; if this is != 0, then
this is an input parameter, otherwise
output */
char* tablename, /* in: the table name in the usual
databasename/tablename format of InnoDB */
ulint size); /* in: the initial size of the tablespace file
in pages, must be > 0 */
/* out: DB_SUCCESS or error code */
ulint* space_id, /* in/out: space id; if this is != 0,
then this is an input parameter,
otherwise output */
const char* tablename, /* in: the table name in the usual
databasename/tablename format
of InnoDB */
ulint size); /* in: the initial size of the
tablespace file in pages,
must be >= FIL_IBD_FILE_INITIAL_SIZE */
/************************************************************************
Tries to open a single-table tablespace and checks the space id is right in
it. If does not succeed, prints an error message to the .err log. This
......@@ -362,10 +366,10 @@ protection of the dictionary mutex, so that two users cannot race here. */
ibool
fil_open_single_table_tablespace(
/*=============================*/
/* out: TRUE if success */
ulint id, /* in: space id */
char* name); /* in: table name in the databasename/tablename
format */
/* out: TRUE if success */
ulint id, /* in: space id */
const char* name); /* in: table name in the
databasename/tablename format */
/************************************************************************
It is possible, though very improbable, that the lsn's in the tablespace to be
imported have risen above the current system lsn, if a lengthy purge, ibuf
......@@ -379,12 +383,12 @@ lsn's just by looking at that flush lsn. */
ibool
fil_reset_too_high_lsns(
/*====================*/
/* out: TRUE if success */
char* name, /* in: table name in the databasename/tablename
format */
dulint current_lsn); /* in: reset lsn's if the lsn stamped to
FIL_PAGE_FILE_FLUSH_LSN in the first page is
too high */
/* out: TRUE if success */
const char* name, /* in: table name in the
databasename/tablename format */
dulint current_lsn); /* in: reset lsn's if the lsn stamped
to FIL_PAGE_FILE_FLUSH_LSN in the
first page is too high */
/************************************************************************
At the server startup, if we need crash recovery, scans the database
directories under the MySQL datadir, looking for .ibd files. Those files are
......@@ -436,20 +440,22 @@ there may be many tablespaces which are not yet in the memory cache. */
ibool
fil_space_for_table_exists_in_mem(
/*==============================*/
/* out: TRUE if a matching tablespace
exists in the memory cache */
ulint id, /* in: space id */
char* name, /* in: table name in the standard
'databasename/tablename' format */
ibool mark_space, /* in: in crash recovery, at database startup
we mark all spaces which have an associated
table in the InnoDB data dictionary, so that
we can print a warning about orphaned
tablespaces */
ibool print_error_if_does_not_exist);
/* in: print detailed error information to
the .err log if a matching tablespace is
not found from memory */
/* out: TRUE if a matching tablespace
exists in the memory cache */
ulint id, /* in: space id */
const char* name, /* in: table name in the standard
'databasename/tablename' format */
ibool mark_space, /* in: in crash recovery, at database
startup we mark all spaces which have
an associated table in the InnoDB
data dictionary, so that
we can print a warning about orphaned
tablespaces */
ibool print_error_if_does_not_exist);
/* in: print detailed error
information to the .err log if a
matching tablespace is not found from
memory */
/**************************************************************************
Tries to extend a data file so that it would accommodate the number of pages
given. The tablespace must be cached in the memory cache. If the space is big
......
......@@ -177,13 +177,15 @@ and '..' items at the start of the directory listing. */
os_file_dir_t
os_file_opendir(
/*============*/
/* out: directory stream, NULL if error */
char* dirname, /* in: directory name; it must not contain
a trailing '\' or '/' */
ibool error_is_fatal);/* in: TRUE if we should treat an error as a
fatal error; if we try to open symlinks then
we do not wish a fatal error if it happens
not to be a directory */
/* out: directory stream, NULL if
error */
const char* dirname, /* in: directory name; it must not
contain a trailing '\' or '/' */
ibool error_is_fatal);/* in: TRUE if we should treat an
error as a fatal error; if we try to
open symlinks then we do not wish a
fatal error if it happens not to be
a directory */
/***************************************************************************
Closes a directory stream. */
......@@ -201,7 +203,7 @@ os_file_readdir_next_file(
/*======================*/
/* out: 0 if ok, -1 if error, 1 if at the end
of the directory */
char* dirname,/* in: directory name or path */
const char* dirname,/* in: directory name or path */
os_file_dir_t dir, /* in: directory stream */
os_file_stat_t* info); /* in/out: buffer where the info is returned */
/*********************************************************************
......@@ -213,81 +215,89 @@ fail_if_exists arguments is true. */
ibool
os_file_create_directory(
/*=====================*/
/* out: TRUE if call succeeds, FALSE on
error */
char* pathname, /* in: directory name as null-terminated
string */
ibool fail_if_exists);/* in: if TRUE, pre-existing directory is
treated as an error. */
/* out: TRUE if call succeeds,
FALSE on error */
const char* pathname, /* in: directory name as
null-terminated string */
ibool fail_if_exists);/* in: if TRUE, pre-existing directory
is treated as an error. */
/********************************************************************
A simple function to open or create a file. */
os_file_t
os_file_create_simple(
/*==================*/
/* out, own: handle to the file, not defined if error,
error number can be retrieved with
os_file_get_last_error */
char* name, /* in: name of the file or path as a null-terminated
string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file is opened
(if does not exist, error), or OS_FILE_CREATE if a new
file is created (if exists, error), or
OS_FILE_CREATE_PATH if new file (if exists, error) and
subdirectories along its path are created (if needed)*/
ulint access_type,/* in: OS_FILE_READ_ONLY or OS_FILE_READ_WRITE */
ibool* success);/* out: TRUE if succeed, FALSE if error */
/* out, own: handle to the file, not defined
if error, error number can be retrieved with
os_file_get_last_error */
const char* name, /* in: name of the file or path as a
null-terminated string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file is
opened (if does not exist, error), or
OS_FILE_CREATE if a new file is created
(if exists, error), or
OS_FILE_CREATE_PATH if new file
(if exists, error) and subdirectories along
its path are created (if needed)*/
ulint access_type,/* in: OS_FILE_READ_ONLY or
OS_FILE_READ_WRITE */
ibool* success);/* out: TRUE if succeed, FALSE if error */
/********************************************************************
A simple function to open or create a file. */
os_file_t
os_file_create_simple_no_error_handling(
/*====================================*/
/* out, own: handle to the file, not defined if error,
error number can be retrieved with
os_file_get_last_error */
char* name, /* in: name of the file or path as a null-terminated
string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file is opened
(if does not exist, error), or OS_FILE_CREATE if a new
file is created (if exists, error) */
ulint access_type,/* in: OS_FILE_READ_ONLY, OS_FILE_READ_WRITE, or
OS_FILE_READ_ALLOW_DELETE; the last option is used by
a backup program reading the file */
ibool* success);/* out: TRUE if succeed, FALSE if error */
/* out, own: handle to the file, not defined
if error, error number can be retrieved with
os_file_get_last_error */
const char* name, /* in: name of the file or path as a
null-terminated string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file
is opened (if does not exist, error), or
OS_FILE_CREATE if a new file is created
(if exists, error) */
ulint access_type,/* in: OS_FILE_READ_ONLY,
OS_FILE_READ_WRITE, or
OS_FILE_READ_ALLOW_DELETE; the last option is
used by a backup program reading the file */
ibool* success);/* out: TRUE if succeed, FALSE if error */
/********************************************************************
Opens an existing file or creates a new. */
os_file_t
os_file_create(
/*===========*/
/* out, own: handle to the file, not defined if error,
error number can be retrieved with
os_file_get_last_error */
char* name, /* in: name of the file or path as a null-terminated
string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file is opened
(if does not exist, error), or OS_FILE_CREATE if a new
file is created (if exists, error), OS_FILE_OVERWRITE
if a new file is created or an old overwritten;
OS_FILE_OPEN_RAW, if a raw device or disk partition
should be opened */
ulint purpose,/* in: OS_FILE_AIO, if asynchronous, non-buffered i/o
is desired, OS_FILE_NORMAL, if any normal file;
NOTE that it also depends on type, os_aio_.. and srv_..
variables whether we really use async i/o or
unbuffered i/o: look in the function source code for
the exact rules */
ulint type, /* in: OS_DATA_FILE or OS_LOG_FILE */
ibool* success);/* out: TRUE if succeed, FALSE if error */
/* out, own: handle to the file, not defined
if error, error number can be retrieved with
os_file_get_last_error */
const char* name, /* in: name of the file or path as a
null-terminated string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file
is opened (if does not exist, error), or
OS_FILE_CREATE if a new file is created
(if exists, error),
OS_FILE_OVERWRITE if a new file is created
or an old overwritten;
OS_FILE_OPEN_RAW, if a raw device or disk
partition should be opened */
ulint purpose,/* in: OS_FILE_AIO, if asynchronous,
non-buffered i/o is desired,
OS_FILE_NORMAL, if any normal file;
NOTE that it also depends on type, os_aio_..
and srv_.. variables whether we really use
async i/o or unbuffered i/o: look in the
function source code for the exact rules */
ulint type, /* in: OS_DATA_FILE or OS_LOG_FILE */
ibool* success);/* out: TRUE if succeed, FALSE if error */
/***************************************************************************
Deletes a file. The file has to be closed before calling this. */
ibool
os_file_delete(
/*===========*/
/* out: TRUE if success */
char* name); /* in: file path as a null-terminated string */
/* out: TRUE if success */
const char* name); /* in: file path as a null-terminated string */
/***************************************************************************
Deletes a file if it exists. The file has to be closed before calling this. */
......@@ -295,8 +305,8 @@ Deletes a file if it exists. The file has to be closed before calling this. */
ibool
os_file_delete_if_exists(
/*=====================*/
/* out: TRUE if success */
char* name); /* in: file path as a null-terminated string */
/* out: TRUE if success */
const char* name); /* in: file path as a null-terminated string */
/***************************************************************************
Renames a file (can also move it to another directory). It is safest that the
file is closed before calling this function. */
......@@ -304,10 +314,10 @@ file is closed before calling this function. */
ibool
os_file_rename(
/*===========*/
/* out: TRUE if success */
char* oldpath, /* in: old file path as a null-terminated
string */
char* newpath); /* in: new file path */
/* out: TRUE if success */
const char* oldpath, /* in: old file path as a
null-terminated string */
const char* newpath); /* in: new file path */
/***************************************************************************
Closes a file handle. In case of error, error number can be retrieved with
os_file_get_last_error. */
......@@ -351,7 +361,7 @@ ibool
os_file_set_size(
/*=============*/
/* out: TRUE if success */
char* name, /* in: name of the file or path as a
const char* name, /* in: name of the file or path as a
null-terminated string */
os_file_t file, /* in: handle to a file */
ulint size, /* in: least significant 32 bits of file
......@@ -426,10 +436,10 @@ os_file_write(
/*==========*/
/* out: TRUE if request was
successful, FALSE if fail */
char* name, /* in: name of the file or path as a
const char* name, /* in: name of the file or path as a
null-terminated string */
os_file_t file, /* in: handle to a file */
void* buf, /* in: buffer from which to write */
const void* buf, /* in: buffer from which to write */
ulint offset, /* in: least significant 32 bits of file
offset where to write */
ulint offset_high,/* in: most significant 32 bits of
......@@ -442,8 +452,8 @@ ibool
os_file_status(
/*===========*/
/* out: TRUE if call succeeded */
char * path, /* in: pathname of the file */
ibool * exists, /* out: TRUE if file exists */
const char* path, /* in: pathname of the file */
ibool* exists, /* out: TRUE if file exists */
os_file_type_t* type); /* out: type of the file (if it exists) */
/********************************************************************
The function os_file_dirname returns a directory component of a
......@@ -478,7 +488,7 @@ os_file_dirname(
/*============*/
/* out, own: directory component of the
pathname */
char* path); /* in: pathname */
const char* path); /* in: pathname */
/********************************************************************
Creates all missing subdirectories along the given path. */
......@@ -487,7 +497,7 @@ os_file_create_subdirs_if_needed(
/*=============================*/
/* out: TRUE if call succeeded
FALSE otherwise */
char* path); /* in: path name */
const char* path); /* in: path name */
/****************************************************************************
Initializes the asynchronous io system. Creates separate aio array for
non-ibuf read and write, a third aio array for the ibuf i/o, with just one
......@@ -527,7 +537,7 @@ os_aio(
because i/os are not actually handled until
all have been posted: use with great
caution! */
char* name, /* in: name of the file or path as a
const char* name, /* in: name of the file or path as a
null-terminated string */
os_file_t file, /* in: handle to a file */
void* buf, /* in: buffer where to read or from which
......
......@@ -87,9 +87,9 @@ explicitly by calling sync_os_reset_event. */
os_event_t
os_event_create(
/*============*/
/* out: the event handle */
char* name); /* in: the name of the event, if NULL
the event is created without a name */
/* out: the event handle */
const char* name); /* in: the name of the event, if NULL
the event is created without a name */
#ifdef __WIN__
/*************************************************************
Creates an auto-reset event semaphore, i.e., an event which is automatically
......@@ -98,9 +98,9 @@ reset when a single thread is released. Works only in Windows. */
os_event_t
os_event_create_auto(
/*=================*/
/* out: the event handle */
char* name); /* in: the name of the event, if NULL
the event is created without a name */
/* out: the event handle */
const char* name); /* in: the name of the event, if NULL
the event is created without a name */
#endif
/**************************************************************
Sets an event semaphore to the signaled state: lets waiting threads
......@@ -171,9 +171,9 @@ mutex semaphore of InnoDB itself (mutex_t) should be used where possible. */
os_mutex_t
os_mutex_create(
/*============*/
/* out: the mutex handle */
char* name); /* in: the name of the mutex, if NULL
the mutex is created without a name */
/* out: the mutex handle */
const char* name); /* in: the name of the mutex, if NULL
the mutex is created without a name */
/**************************************************************
Acquires ownership of a mutex semaphore. */
......
......@@ -74,8 +74,8 @@ Parses an SQL string returning the query graph. */
que_t*
pars_sql(
/*=====*/
/* out, own: the query graph */
char* str); /* in: SQL string */
/* out, own: the query graph */
const char* str); /* in: SQL string */
/*****************************************************************
Retrieves characters to the lexical analyzer. */
......
......@@ -122,7 +122,7 @@ struct sym_node_struct{
SYM_IMPLICIT_VAR,
SYM_LIT, SYM_TABLE,
SYM_CURSOR, ... */
char* name; /* name of an id */
const char* name; /* name of an id */
ulint name_len; /* id name length */
dict_table_t* table; /* table definition
if a table id or a
......@@ -150,7 +150,7 @@ struct sym_tab_struct{
que_t* query_graph;
/* query graph generated by the
parser */
char* sql_string;
const char* sql_string;
/* SQL string to parse */
int string_len;
/* SQL string length */
......
......@@ -316,15 +316,16 @@ fields than mentioned in the constraint. */
int
row_table_add_foreign_constraints(
/*==============================*/
/* out: error code or DB_SUCCESS */
trx_t* trx, /* in: transaction */
char* sql_string, /* in: table create statement where
foreign keys are declared like:
/* out: error code or DB_SUCCESS */
trx_t* trx, /* in: transaction */
const char* sql_string, /* in: table create statement where
foreign keys are declared like:
FOREIGN KEY (a, b) REFERENCES table2(c, d),
table2 can be written also with the database
name before it: test.table2 */
char* name); /* in: table full name in the normalized form
database_name/table_name */
table2 can be written also with the
database name before it: test.table2 */
const char* name); /* in: table full name in the
normalized form
database_name/table_name */
/*************************************************************************
The master thread in srv0srv.c calls this regularly to drop tables which
we must drop in background after queries to them have ended. Such lazy
......@@ -351,10 +352,10 @@ output by the master thread. */
int
row_drop_table_for_mysql(
/*=====================*/
/* out: error code or DB_SUCCESS */
char* name, /* in: table name */
trx_t* trx, /* in: transaction handle */
ibool drop_db);/* in: TRUE=dropping whole database */
/* out: error code or DB_SUCCESS */
const char* name, /* in: table name */
trx_t* trx, /* in: transaction handle */
ibool drop_db);/* in: TRUE=dropping whole database */
/*************************************************************************
Discards the tablespace of a table which stored in an .ibd file. Discarding
......@@ -382,9 +383,9 @@ discard ongoing operations. */
int
row_discard_tablespace_for_mysql(
/*=============================*/
/* out: error code or DB_SUCCESS */
char* name, /* in: table name */
trx_t* trx); /* in: transaction handle */
/* out: error code or DB_SUCCESS */
const char* name, /* in: table name */
trx_t* trx); /* in: transaction handle */
/*********************************************************************
Imports a tablespace. The space id in the .ibd file must match the space id
of the table in the data dictionary. */
......@@ -392,28 +393,28 @@ of the table in the data dictionary. */
int
row_import_tablespace_for_mysql(
/*============================*/
/* out: error code or DB_SUCCESS */
char* name, /* in: table name */
trx_t* trx); /* in: transaction handle */
/* out: error code or DB_SUCCESS */
const char* name, /* in: table name */
trx_t* trx); /* in: transaction handle */
/*************************************************************************
Drops a database for MySQL. */
int
row_drop_database_for_mysql(
/*========================*/
/* out: error code or DB_SUCCESS */
char* name, /* in: database name which ends to '/' */
trx_t* trx); /* in: transaction handle */
/* out: error code or DB_SUCCESS */
const char* name, /* in: database name which ends to '/' */
trx_t* trx); /* in: transaction handle */
/*************************************************************************
Renames a table for MySQL. */
int
row_rename_table_for_mysql(
/*=======================*/
/* out: error code or DB_SUCCESS */
char* old_name, /* in: old table name */
char* new_name, /* in: new table name */
trx_t* trx); /* in: transaction handle */
/* out: error code or DB_SUCCESS */
const char* old_name, /* in: old table name */
const char* new_name, /* in: new table name */
trx_t* trx); /* in: transaction handle */
/*************************************************************************
Checks a table for corruption. */
......
......@@ -144,11 +144,11 @@ consistent read result, or store it to the query cache. */
ibool
row_search_check_if_query_cache_permitted(
/*======================================*/
/* out: TRUE if storing or retrieving from
the query cache is permitted */
trx_t* trx, /* in: transaction object */
char* norm_name); /* in: concatenation of database name, '/'
char, table name */
/* out: TRUE if storing or retrieving
from the query cache is permitted */
trx_t* trx, /* in: transaction object */
const char* norm_name); /* in: concatenation of database name,
'/' char, table name */
/* A structure for caching column values for prefetched rows */
......
......@@ -193,7 +193,7 @@ trx_rollback_to_savepoint_for_mysql(
DB_NO_SAVEPOINT,
otherwise DB_SUCCESS */
trx_t* trx, /* in: transaction handle */
char* savepoint_name, /* in: savepoint name */
const char* savepoint_name, /* in: savepoint name */
ib_longlong* mysql_binlog_cache_pos);/* out: the MySQL binlog cache
position corresponding to this
savepoint; MySQL needs this
......@@ -211,7 +211,7 @@ trx_savepoint_for_mysql(
/*====================*/
/* out: always DB_SUCCESS */
trx_t* trx, /* in: transaction handle */
char* savepoint_name, /* in: savepoint name */
const char* savepoint_name, /* in: savepoint name */
ib_longlong binlog_cache_pos); /* in: MySQL binlog cache
position corresponding to this
connection at the time of the
......
......@@ -258,7 +258,7 @@ replication has proceeded. */
void
trx_sys_update_mysql_binlog_offset(
/*===============================*/
char* file_name,/* in: MySQL log file name */
const char* file_name,/* in: MySQL log file name */
ib_longlong offset, /* in: position in that log file */
ulint field, /* in: offset of the MySQL log info field in
the trx sys header */
......
......@@ -315,7 +315,7 @@ struct trx_struct{
ulint magic_n;
/* All the next fields are protected by the kernel mutex, except the
undo logs which are protected by undo_mutex */
char* op_info; /* English text describing the
const char* op_info; /* English text describing the
current operation, or an empty
string */
ulint type; /* TRX_USER, TRX_PURGE */
......@@ -358,7 +358,7 @@ struct trx_struct{
char** mysql_query_str;/* pointer to the field in mysqld_thd
which contains the pointer to the
current SQL query string */
char* mysql_log_file_name;
const char* mysql_log_file_name;
/* if MySQL binlog is used, this field
contains a pointer to the latest file
name; this is NULL if binlog is not
......@@ -366,7 +366,7 @@ struct trx_struct{
ib_longlong mysql_log_offset;/* if MySQL binlog is used, this field
contains the end offset of the binlog
entry */
char* mysql_master_log_file_name;
const char* mysql_master_log_file_name;
/* if the database server is a MySQL
replication slave, we have here the
master binlog name up to which
......
......@@ -92,17 +92,17 @@ UNIV_INLINE
ulint
ut_fold_string(
/*===========*/
/* out: folded value */
char* str); /* in: null-terminated string */
/* out: folded value */
const char* str); /* in: null-terminated string */
/*****************************************************************
Folds a binary string. */
UNIV_INLINE
ulint
ut_fold_binary(
/*===========*/
/* out: folded value */
byte* str, /* in: string of bytes */
ulint len); /* in: length */
/* out: folded value */
const byte* str, /* in: string of bytes */
ulint len); /* in: length */
/***************************************************************
Looks for a prime number slightly greater than the given argument.
The prime is chosen so that it is not near any power of 2. */
......
......@@ -173,8 +173,8 @@ UNIV_INLINE
ulint
ut_fold_string(
/*===========*/
/* out: folded value */
char* str) /* in: null-terminated string */
/* out: folded value */
const char* str) /* in: null-terminated string */
{
#ifdef UNIV_DEBUG
ulint i = 0;
......@@ -203,9 +203,9 @@ UNIV_INLINE
ulint
ut_fold_binary(
/*===========*/
/* out: folded value */
byte* str, /* in: string of bytes */
ulint len) /* in: length */
/* out: folded value */
const byte* str, /* in: string of bytes */
ulint len) /* in: length */
{
ulint i;
ulint fold = 0;
......
......@@ -17,21 +17,6 @@ Created 1/20/1994 Heikki Tuuri
typedef time_t ib_time_t;
/************************************************************
On the 64-bit Windows we substitute the format string
%l -> %I64
because we define ulint as unsigned __int64 and lint as __int64 on Windows,
and both the Microsoft and Intel C compilers require the format string
%I64 in that case instead of %l. */
int
ut_printf(
/*======*/
/* out: the number of characters written, or
negative in case of an error */
const char* format, /* in: format of prints */
...); /* in: arguments to be printed */
/************************************************************
On the 64-bit Windows we substitute the format string
%l -> %I64
......
......@@ -70,7 +70,7 @@ struct os_aio_slot_struct{
bytes */
ulint offset_high; /* 32 high bits of file offset */
os_file_t file; /* file where to read or write */
char* name; /* file name or path */
const char* name; /* file name or path */
ibool io_already_done;/* used only in simulated aio:
TRUE if the physical i/o already
made and only the slot message
......@@ -415,7 +415,7 @@ os_file_handle_error_no_exit(
/* out: TRUE if we should retry the
operation */
os_file_t file, /* in: file pointer */
char* name, /* in: name of a file or NULL */
const char* name, /* in: name of a file or NULL */
const char* operation)/* in: operation */
{
ulint err;
......@@ -493,13 +493,15 @@ and '..' items at the start of the directory listing. */
os_file_dir_t
os_file_opendir(
/*============*/
/* out: directory stream, NULL if error */
char* dirname, /* in: directory name; it must not contain
a trailing '\' or '/' */
ibool error_is_fatal) /* in: TRUE if we should treat an error as a
fatal error; if we try to open symlinks then
we do not wish a fatal error if it happens
not to be a directory */
/* out: directory stream, NULL if
error */
const char* dirname, /* in: directory name; it must not
contain a trailing '\' or '/' */
ibool error_is_fatal) /* in: TRUE if we should treat an
error as a fatal error; if we try to
open symlinks then we do not wish a
fatal error if it happens not to be
a directory */
{
os_file_dir_t dir;
#ifdef __WIN__
......@@ -585,7 +587,7 @@ os_file_readdir_next_file(
/*======================*/
/* out: 0 if ok, -1 if error, 1 if at the end
of the directory */
char* dirname,/* in: directory name or path */
const char* dirname,/* in: directory name or path */
os_file_dir_t dir, /* in: directory stream */
os_file_stat_t* info) /* in/out: buffer where the info is returned */
{
......@@ -704,12 +706,12 @@ fail_if_exists arguments is true. */
ibool
os_file_create_directory(
/*=====================*/
/* out: TRUE if call succeeds, FALSE on
error */
char* pathname, /* in: directory name as null-terminated
string */
ibool fail_if_exists) /* in: if TRUE, pre-existing directory is
treated as an error. */
/* out: TRUE if call succeeds,
FALSE on error */
const char* pathname, /* in: directory name as
null-terminated string */
ibool fail_if_exists) /* in: if TRUE, pre-existing directory
is treated as an error. */
{
#ifdef __WIN__
BOOL rcode;
......@@ -746,18 +748,21 @@ A simple function to open or create a file. */
os_file_t
os_file_create_simple(
/*==================*/
/* out, own: handle to the file, not defined if error,
error number can be retrieved with
os_file_get_last_error */
char* name, /* in: name of the file or path as a null-terminated
string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file is opened
(if does not exist, error), or OS_FILE_CREATE if a new
file is created (if exists, error), or
OS_FILE_CREATE_PATH if new file (if exists, error) and
subdirectories along its path are created (if needed)*/
ulint access_type,/* in: OS_FILE_READ_ONLY or OS_FILE_READ_WRITE */
ibool* success)/* out: TRUE if succeed, FALSE if error */
/* out, own: handle to the file, not defined
if error, error number can be retrieved with
os_file_get_last_error */
const char* name, /* in: name of the file or path as a
null-terminated string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file is
opened (if does not exist, error), or
OS_FILE_CREATE if a new file is created
(if exists, error), or
OS_FILE_CREATE_PATH if new file
(if exists, error) and subdirectories along
its path are created (if needed)*/
ulint access_type,/* in: OS_FILE_READ_ONLY or
OS_FILE_READ_WRITE */
ibool* success)/* out: TRUE if succeed, FALSE if error */
{
#ifdef __WIN__
os_file_t file;
......@@ -882,18 +887,20 @@ A simple function to open or create a file. */
os_file_t
os_file_create_simple_no_error_handling(
/*====================================*/
/* out, own: handle to the file, not defined if error,
error number can be retrieved with
os_file_get_last_error */
char* name, /* in: name of the file or path as a null-terminated
string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file is opened
(if does not exist, error), or OS_FILE_CREATE if a new
file is created (if exists, error) */
ulint access_type,/* in: OS_FILE_READ_ONLY, OS_FILE_READ_WRITE, or
OS_FILE_READ_ALLOW_DELETE; the last option is used by
a backup program reading the file */
ibool* success)/* out: TRUE if succeed, FALSE if error */
/* out, own: handle to the file, not defined
if error, error number can be retrieved with
os_file_get_last_error */
const char* name, /* in: name of the file or path as a
null-terminated string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file
is opened (if does not exist, error), or
OS_FILE_CREATE if a new file is created
(if exists, error) */
ulint access_type,/* in: OS_FILE_READ_ONLY,
OS_FILE_READ_WRITE, or
OS_FILE_READ_ALLOW_DELETE; the last option is
used by a backup program reading the file */
ibool* success)/* out: TRUE if succeed, FALSE if error */
{
#ifdef __WIN__
os_file_t file;
......@@ -991,25 +998,28 @@ Opens an existing file or creates a new. */
os_file_t
os_file_create(
/*===========*/
/* out, own: handle to the file, not defined if error,
error number can be retrieved with
os_file_get_last_error */
char* name, /* in: name of the file or path as a null-terminated
string */
ulint create_mode, /* in: OS_FILE_OPEN if an existing file is opened
(if does not exist, error), or OS_FILE_CREATE if a new
file is created (if exists, error), OS_FILE_OVERWRITE
if a new is created or an old overwritten,
OS_FILE_OPEN_RAW, if a raw device or disk partition
should be opened */
ulint purpose,/* in: OS_FILE_AIO, if asynchronous, non-buffered i/o
is desired, OS_FILE_NORMAL, if any normal file;
NOTE that it also depends on type, os_aio_.. and srv_..
variables whether we really use async i/o or
unbuffered i/o: look in the function source code for
the exact rules */
ulint type, /* in: OS_DATA_FILE or OS_LOG_FILE */
ibool* success)/* out: TRUE if succeed, FALSE if error */
/* out, own: handle to the file, not defined
if error, error number can be retrieved with
os_file_get_last_error */
const char* name, /* in: name of the file or path as a
null-terminated string */
ulint create_mode,/* in: OS_FILE_OPEN if an existing file
is opened (if does not exist, error), or
OS_FILE_CREATE if a new file is created
(if exists, error),
OS_FILE_OVERWRITE if a new file is created
or an old overwritten;
OS_FILE_OPEN_RAW, if a raw device or disk
partition should be opened */
ulint purpose,/* in: OS_FILE_AIO, if asynchronous,
non-buffered i/o is desired,
OS_FILE_NORMAL, if any normal file;
NOTE that it also depends on type, os_aio_..
and srv_.. variables whether we really use
async i/o or unbuffered i/o: look in the
function source code for the exact rules */
ulint type, /* in: OS_DATA_FILE or OS_LOG_FILE */
ibool* success)/* out: TRUE if succeed, FALSE if error */
{
#ifdef __WIN__
os_file_t file;
......@@ -1202,8 +1212,8 @@ Deletes a file if it exists. The file has to be closed before calling this. */
ibool
os_file_delete_if_exists(
/*=====================*/
/* out: TRUE if success */
char* name) /* in: file path as a null-terminated string */
/* out: TRUE if success */
const char* name) /* in: file path as a null-terminated string */
{
#ifdef __WIN__
BOOL ret;
......@@ -1263,8 +1273,8 @@ Deletes a file. The file has to be closed before calling this. */
ibool
os_file_delete(
/*===========*/
/* out: TRUE if success */
char* name) /* in: file path as a null-terminated string */
/* out: TRUE if success */
const char* name) /* in: file path as a null-terminated string */
{
#ifdef __WIN__
BOOL ret;
......@@ -1327,9 +1337,9 @@ ibool
os_file_rename(
/*===========*/
/* out: TRUE if success */
char* oldpath, /* in: old file path as a null-terminated
const char* oldpath,/* in: old file path as a null-terminated
string */
char* newpath) /* in: new file path */
const char* newpath)/* in: new file path */
{
#ifdef __WIN__
BOOL ret;
......@@ -1340,7 +1350,7 @@ os_file_rename(
return(TRUE);
}
os_file_handle_error(NULL, oldpath, "delete");
os_file_handle_error(NULL, oldpath, "rename");
return(FALSE);
#else
......@@ -1516,7 +1526,7 @@ ibool
os_file_set_size(
/*=============*/
/* out: TRUE if success */
char* name, /* in: name of the file or path as a
const char* name, /* in: name of the file or path as a
null-terminated string */
os_file_t file, /* in: handle to a file */
ulint size, /* in: least significant 32 bits of file
......@@ -1777,7 +1787,7 @@ os_file_pwrite(
/*===========*/
/* out: number of bytes written, -1 if error */
os_file_t file, /* in: handle to a file */
void* buf, /* in: buffer from where to write */
const void* buf, /* in: buffer from where to write */
ulint n, /* in: number of bytes to write */
ulint offset, /* in: least significant 32 bits of file
offset where to write */
......@@ -2057,10 +2067,10 @@ os_file_write(
/*==========*/
/* out: TRUE if request was
successful, FALSE if fail */
char* name, /* in: name of the file or path as a
const char* name, /* in: name of the file or path as a
null-terminated string */
os_file_t file, /* in: handle to a file */
void* buf, /* in: buffer from which to write */
const void* buf, /* in: buffer from which to write */
ulint offset, /* in: least significant 32 bits of file
offset where to write */
ulint offset_high, /* in: most significant 32 bits of
......@@ -2214,7 +2224,7 @@ ibool
os_file_status(
/*===========*/
/* out: TRUE if call succeeded */
char* path, /* in: pathname of the file */
const char* path, /* in: pathname of the file */
ibool* exists, /* out: TRUE if file exists */
os_file_type_t* type) /* out: type of the file (if it exists) */
{
......@@ -2319,7 +2329,7 @@ os_file_dirname(
/*============*/
/* out, own: directory component of the
pathname */
char* path) /* in: pathname */
const char* path) /* in: pathname */
{
char* dir;
int i, length, last_slash;
......@@ -2356,7 +2366,7 @@ os_file_create_subdirs_if_needed(
/*=============================*/
/* out: TRUE if call succeeded
FALSE otherwise */
char* path) /* in: path name */
const char* path) /* in: path name */
{
char* subdir;
static char rootdir[2] = { OS_FILE_PATH_SEPARATOR, 0 };
......@@ -2753,7 +2763,7 @@ os_aio_array_reserve_slot(
void* message2,/* in: message to be passed along with
the aio operation */
os_file_t file, /* in: file handle */
char* name, /* in: name of the file or path as a
const char* name, /* in: name of the file or path as a
null-terminated string */
void* buf, /* in: buffer where to read or from which
to write */
......@@ -3000,7 +3010,7 @@ os_aio(
because i/os are not actually handled until
all have been posted: use with great
caution! */
char* name, /* in: name of the file or path as a
const char* name, /* in: name of the file or path as a
null-terminated string */
os_file_t file, /* in: handle to a file */
void* buf, /* in: buffer where to read or from which
......@@ -3543,6 +3553,7 @@ consecutive_loop:
if (n_consecutive == 1) {
/* We can use the buffer of the i/o request */
combined_buf = slot->buf;
combined_buf2 = NULL;
} else {
combined_buf2 = ut_malloc(total_len + UNIV_PAGE_SIZE);
......@@ -3638,7 +3649,7 @@ consecutive_loop:
}
}
if (n_consecutive > 1) {
if (combined_buf2) {
ut_free(combined_buf2);
}
......
......@@ -109,9 +109,9 @@ must be reset explicitly by calling sync_os_reset_event. */
os_event_t
os_event_create(
/*============*/
/* out: the event handle */
char* name) /* in: the name of the event, if NULL
the event is created without a name */
/* out: the event handle */
const char* name) /* in: the name of the event, if NULL
the event is created without a name */
{
#ifdef __WIN__
os_event_t event;
......@@ -166,9 +166,9 @@ reset when a single thread is released. Works only in Windows. */
os_event_t
os_event_create_auto(
/*=================*/
/* out: the event handle */
char* name) /* in: the name of the event, if NULL
the event is created without a name */
/* out: the event handle */
const char* name) /* in: the name of the event, if NULL
the event is created without a name */
{
os_event_t event;
......@@ -430,9 +430,9 @@ mutex semaphore of InnoDB itself (mutex_t) should be used where possible. */
os_mutex_t
os_mutex_create(
/*============*/
/* out: the mutex handle */
char* name) /* in: the name of the mutex, if NULL
the mutex is created without a name */
/* out: the mutex handle */
const char* name) /* in: the name of the mutex, if NULL
the mutex is created without a name */
{
#ifdef __WIN__
HANDLE mutex;
......
......@@ -1729,8 +1729,8 @@ Parses an SQL string returning the query graph. */
que_t*
pars_sql(
/*=====*/
/* out, own: the query graph */
char* str) /* in: SQL string */
/* out, own: the query graph */
const char* str) /* in: SQL string */
{
sym_node_t* sym_node;
mem_heap_t* heap;
......
......@@ -217,13 +217,10 @@ sym_tab_add_id(
node->common.type = QUE_NODE_SYMBOL;
node->name = mem_heap_alloc(sym_tab->heap, len + 1);
node->resolved = FALSE;
node->indirection = NULL;
ut_memcpy(node->name, name, len);
node->name[len] = '\0';
node->name = mem_heap_strdupl(sym_tab->heap, name, len + 1);
node->name_len = len;
UT_LIST_ADD_LAST(sym_list, sym_tab->sym_list, node);
......
......@@ -1686,15 +1686,16 @@ constraints which reference this table are ok. */
int
row_table_add_foreign_constraints(
/*==============================*/
/* out: error code or DB_SUCCESS */
trx_t* trx, /* in: transaction */
char* sql_string, /* in: table create statement where
foreign keys are declared like:
/* out: error code or DB_SUCCESS */
trx_t* trx, /* in: transaction */
const char* sql_string, /* in: table create statement where
foreign keys are declared like:
FOREIGN KEY (a, b) REFERENCES table2(c, d),
table2 can be written also with the database
name before it: test.table2 */
char* name) /* in: table full name in the normalized form
database_name/table_name */
table2 can be written also with the
database name before it: test.table2 */
const char* name) /* in: table full name in the
normalized form
database_name/table_name */
{
ulint err;
......@@ -1940,9 +1941,9 @@ discard ongoing operations. */
int
row_discard_tablespace_for_mysql(
/*=============================*/
/* out: error code or DB_SUCCESS */
char* name, /* in: table name */
trx_t* trx) /* in: transaction handle */
/* out: error code or DB_SUCCESS */
const char* name, /* in: table name */
trx_t* trx) /* in: transaction handle */
{
dulint new_id;
dict_table_t* table;
......@@ -2071,9 +2072,9 @@ of the table in the data dictionary. */
int
row_import_tablespace_for_mysql(
/*============================*/
/* out: error code or DB_SUCCESS */
char* name, /* in: table name */
trx_t* trx) /* in: transaction handle */
/* out: error code or DB_SUCCESS */
const char* name, /* in: table name */
trx_t* trx) /* in: transaction handle */
{
dict_table_t* table;
ibool success;
......@@ -2177,10 +2178,10 @@ the corresponding monitor output by the master thread. */
int
row_drop_table_for_mysql(
/*=====================*/
/* out: error code or DB_SUCCESS */
char* name, /* in: table name */
trx_t* trx, /* in: transaction handle */
ibool drop_db)/* in: TRUE=dropping whole database */
/* out: error code or DB_SUCCESS */
const char* name, /* in: table name */
trx_t* trx, /* in: transaction handle */
ibool drop_db)/* in: TRUE=dropping whole database */
{
dict_foreign_t* foreign;
dict_table_t* table;
......@@ -2519,9 +2520,9 @@ Drops a database for MySQL. */
int
row_drop_database_for_mysql(
/*========================*/
/* out: error code or DB_SUCCESS */
char* name, /* in: database name which ends to '/' */
trx_t* trx) /* in: transaction handle */
/* out: error code or DB_SUCCESS */
const char* name, /* in: database name which ends to '/' */
trx_t* trx) /* in: transaction handle */
{
dict_table_t* table;
char* table_name;
......@@ -2611,10 +2612,10 @@ Renames a table for MySQL. */
int
row_rename_table_for_mysql(
/*=======================*/
/* out: error code or DB_SUCCESS */
char* old_name, /* in: old table name */
char* new_name, /* in: new table name */
trx_t* trx) /* in: transaction handle */
/* out: error code or DB_SUCCESS */
const char* old_name, /* in: old table name */
const char* new_name, /* in: new table name */
trx_t* trx) /* in: transaction handle */
{
dict_table_t* table;
que_thr_t* thr;
......
......@@ -3585,11 +3585,11 @@ consistent read result, or store it to the query cache. */
ibool
row_search_check_if_query_cache_permitted(
/*======================================*/
/* out: TRUE if storing or retrieving from
the query cache is permitted */
trx_t* trx, /* in: transaction object */
char* norm_name) /* in: concatenation of database name, '/'
char, table name */
/* out: TRUE if storing or retrieving
from the query cache is permitted */
trx_t* trx, /* in: transaction object */
const char* norm_name) /* in: concatenation of database name,
'/' char, table name */
{
dict_table_t* table;
ibool ret = FALSE;
......
......@@ -200,7 +200,7 @@ trx_rollback_to_savepoint_for_mysql(
DB_NO_SAVEPOINT,
otherwise DB_SUCCESS */
trx_t* trx, /* in: transaction handle */
char* savepoint_name, /* in: savepoint name */
const char* savepoint_name, /* in: savepoint name */
ib_longlong* mysql_binlog_cache_pos) /* out: the MySQL binlog cache
position corresponding to this
savepoint; MySQL needs this
......@@ -265,7 +265,7 @@ trx_savepoint_for_mysql(
/*====================*/
/* out: always DB_SUCCESS */
trx_t* trx, /* in: transaction handle */
char* savepoint_name, /* in: savepoint name */
const char* savepoint_name, /* in: savepoint name */
ib_longlong binlog_cache_pos) /* in: MySQL binlog cache
position corresponding to this
connection at the time of the
......
......@@ -569,7 +569,7 @@ replication has proceeded. */
void
trx_sys_update_mysql_binlog_offset(
/*===============================*/
char* file_name,/* in: MySQL log file name */
const char* file_name,/* in: MySQL log file name */
ib_longlong offset, /* in: position in that log file */
ulint field, /* in: offset of the MySQL log info field in
the trx sys header */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment