Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
572891bf
Commit
572891bf
authored
Jul 29, 2002
by
monty@mashka.mysql.fi
Browse files
Options
Browse Files
Download
Plain Diff
Merge work:/my/mysql-3.23 into mashka.mysql.fi:/home/my/mysql-3.23
parents
1ea4690b
d686ef72
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
99 additions
and
89 deletions
+99
-89
Docs/manual.texi
Docs/manual.texi
+2
-0
sql/gen_lex_hash.cc
sql/gen_lex_hash.cc
+1
-1
sql/ha_innobase.cc
sql/ha_innobase.cc
+80
-73
sql/lex.h
sql/lex.h
+2
-2
sql/log.cc
sql/log.cc
+5
-5
sql/sql_yacc.yy
sql/sql_yacc.yy
+8
-8
support-files/mysql.spec.sh
support-files/mysql.spec.sh
+1
-0
No files found.
Docs/manual.texi
View file @
572891bf
...
...
@@ -46928,6 +46928,8 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.52
@itemize @bullet
@item
Added name of 'administrator command' logs.
@item
Fixed bug with creating an auto-increment value on second part of a
@code{UNIQUE()} key where first part could contain NULL values.
@item
sql/gen_lex_hash.cc
View file @
572891bf
...
...
@@ -481,7 +481,7 @@ int main(int argc,char **argv)
int
error
;
MY_INIT
(
argv
[
0
]);
start_value
=
6130115L
;
best_t1
=
3632784L
;
best_t2
=
86437L
;
best_type
=
3
;
/* mode=4229 add=2
type: 0 */
start_value
=
7740512L
;
best_t1
=
7953583L
;
best_t2
=
6918639L
;
best_type
=
1
;
/* mode=5449 add=1
type: 0 */
if
(
get_options
(
argc
,(
char
**
)
argv
))
exit
(
1
);
...
...
sql/ha_innobase.cc
View file @
572891bf
/* Copyright (C) 2000 MySQL AB &
MySQL Finland AB &
InnoDB Oy
/* Copyright (C) 2000 MySQL AB & InnoDB Oy
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
@@ -93,8 +93,8 @@ are determined in innobase_init below: */
/* innobase_data_file_path=ibdata:15,idata2:1,... */
char
*
innobase_data_home_dir
=
NULL
;
char
*
innobase_data_file_path
=
NULL
;
char
*
innobase_data_home_dir
=
NULL
;
char
*
innobase_log_group_home_dir
=
NULL
;
char
*
innobase_log_arch_dir
=
NULL
;
char
*
innobase_unix_file_flush_method
=
NULL
;
...
...
@@ -254,8 +254,6 @@ convert_error_code_to_mysql(
return
(
HA_ERR_TO_BIG_ROW
);
}
else
{
dbug_assert
(
0
);
return
(
-
1
);
// Unknown error
}
}
...
...
@@ -277,29 +275,40 @@ innobase_mysql_print_thd(
thd
=
(
THD
*
)
input_thd
;
buf
+=
sprintf
(
buf
,
"MySQL thread id %lu, query id %lu"
,
thd
->
thread_id
,
thd
->
query_id
);
if
(
thd
->
host
)
{
buf
+=
sprintf
(
buf
,
" %.30s"
,
thd
->
host
);
/* We can't use value of sprintf() as this is not portable */
buf
=
my_sprintf
(
buf
,
(
buf
,
"MySQL thread id %lu, query id %lu"
,
thd
->
thread_id
,
thd
->
query_id
));
if
(
thd
->
host
)
{
*
buf
++=
' '
;
buf
=
strnmov
(
buf
,
thd
->
host
,
30
);
}
if
(
thd
->
ip
)
{
buf
+=
sprintf
(
buf
,
" %.20s"
,
thd
->
ip
);
if
(
thd
->
ip
)
{
*
buf
++=
' '
;
buf
=
strnmov
(
buf
,
thd
->
ip
,
20
);
}
if
(
thd
->
user
)
{
buf
+=
sprintf
(
buf
,
" %.20s"
,
thd
->
user
);
if
(
thd
->
user
)
{
*
buf
++=
' '
;
buf
=
strnmov
(
buf
,
thd
->
user
,
20
);
}
if
(
thd
->
proc_info
)
{
buf
+=
sprintf
(
buf
,
" %.50s"
,
thd
->
proc_info
);
if
(
thd
->
proc_info
)
{
*
buf
++=
' '
;
buf
=
strnmov
(
buf
,
thd
->
procinfo
,
50
);
}
if
(
thd
->
query
)
{
buf
+=
sprintf
(
buf
,
"
\n
%.150s"
,
thd
->
query
);
if
(
thd
->
query
)
{
*
buf
++=
' '
;
buf
=
strnmov
(
buf
,
thd
->
query
,
150
);
}
buf
+=
sprintf
(
buf
,
"
\n
"
);
*
buf
=
'\n'
;
}
}
...
...
@@ -401,6 +410,11 @@ innobase_init(void)
os_innodb_umask
=
(
ulint
)
my_umask
;
/* Use current_dir if no paths are set */
current_dir
[
0
]
=
FN_CURLIB
;
current_dir
[
1
]
=
FN_LIBCHAR
;
current_dir
[
2
]
=
0
;
if
(
specialflag
&
SPECIAL_NO_PRIOR
)
{
srv_set_thread_priorities
=
FALSE
;
}
else
{
...
...
@@ -408,11 +422,6 @@ innobase_init(void)
srv_query_thread_priority
=
QUERY_PRIOR
;
}
/* Use current_dir if no paths are set */
current_dir
[
0
]
=
FN_CURLIB
;
current_dir
[
1
]
=
FN_LIBCHAR
;
current_dir
[
2
]
=
0
;
/* Set InnoDB initialization parameters according to the values
read from MySQL .cnf file */
...
...
@@ -452,9 +461,8 @@ innobase_init(void)
DBUG_RETURN
(
TRUE
);
}
if
(
!
innobase_log_group_home_dir
)
{
if
(
!
innobase_log_group_home_dir
)
innobase_log_group_home_dir
=
current_dir
;
}
ret
=
(
bool
)
srv_parse_log_group_home_dirs
(
innobase_log_group_home_dir
,
...
...
@@ -797,7 +805,7 @@ normalize_table_name(
name_ptr
=
ptr
+
1
;
dbug_assert
(
ptr
>
name
);
DBUG_ASSERT
(
ptr
>
name
);
ptr
--
;
...
...
@@ -824,7 +832,7 @@ normalize_table_name(
}
/*********************************************************************
Creates and opens a handle to a table which already exists in an Inn
n
obase
Creates and opens a handle to a table which already exists in an Innobase
database. */
int
...
...
@@ -909,20 +917,22 @@ ha_innobase::open(
primary_key
=
0
;
key_used_on_scan
=
0
;
/* MySQL allocates the buffer for ref */
/*
MySQL allocates the buffer for ref.
This includes all keys + one byte for each column
that may be NULL.
The ref_length must be exact as possible as
all reference buffers are allocated based on this.
*/
ref_length
=
table
->
key_info
->
key_length
+
table
->
key_info
->
key_parts
+
10
;
/* One byte per key field is consumed to the SQL NULL
info of the field; we add also 10 bytes of safety margin */
ref_length
=
table
->
key_info
->
key_length
;
}
else
{
((
row_prebuilt_t
*
)
innobase_prebuilt
)
->
clust_index_was_generated
=
TRUE
;
ref_length
=
DATA_ROW_ID_LEN
+
10
;
ref_length
=
DATA_ROW_ID_LEN
;
dbug_assert
(
key_used_on_scan
==
MAX_KEY
);
DBUG_ASSERT
(
key_used_on_scan
==
MAX_KEY
);
}
auto_inc_counter_for_this_stat
=
0
;
...
...
@@ -1069,8 +1079,8 @@ innobase_mysql_cmp(
enum_field_types
mysql_tp
;
int
ret
;
dbug_assert
(
a_length
!=
UNIV_SQL_NULL
);
dbug_assert
(
b_length
!=
UNIV_SQL_NULL
);
DBUG_ASSERT
(
a_length
!=
UNIV_SQL_NULL
);
DBUG_ASSERT
(
b_length
!=
UNIV_SQL_NULL
);
mysql_tp
=
(
enum_field_types
)
mysql_type
;
...
...
@@ -1108,11 +1118,11 @@ get_innobase_type_from_mysql_type(
8 bits: this is used in ibuf and also when DATA_NOT_NULL is
ORed to the type */
dbug_assert
((
ulint
)
FIELD_TYPE_STRING
<
256
);
dbug_assert
((
ulint
)
FIELD_TYPE_VAR_STRING
<
256
);
dbug_assert
((
ulint
)
FIELD_TYPE_DOUBLE
<
256
);
dbug_assert
((
ulint
)
FIELD_TYPE_FLOAT
<
256
);
dbug_assert
((
ulint
)
FIELD_TYPE_DECIMAL
<
256
);
DBUG_ASSERT
((
ulint
)
FIELD_TYPE_STRING
<
256
);
DBUG_ASSERT
((
ulint
)
FIELD_TYPE_VAR_STRING
<
256
);
DBUG_ASSERT
((
ulint
)
FIELD_TYPE_DOUBLE
<
256
);
DBUG_ASSERT
((
ulint
)
FIELD_TYPE_FLOAT
<
256
);
DBUG_ASSERT
((
ulint
)
FIELD_TYPE_DECIMAL
<
256
);
switch
(
field
->
type
())
{
case
FIELD_TYPE_VAR_STRING
:
if
(
field
->
flags
&
BINARY_FLAG
)
{
...
...
@@ -1204,7 +1214,12 @@ ha_innobase::store_key_val_for_row(
buff
+=
key_part
->
length
;
}
DBUG_RETURN
(
buff
-
buff_start
);
/*
We have to zero-fill the buffer to be able to compare two
keys to see if they are equal
*/
bzero
(
buff
,
(
ref_length
-
(
uint
)
(
buff
-
buff_start
)));
DBUG_RETURN
(
ref_length
);
}
/******************************************************************
...
...
@@ -1994,7 +2009,7 @@ ha_innobase::change_active_index(
statistic_increment
(
ha_read_key_count
,
&
LOCK_status
);
DBUG_ENTER
(
"
index_read_id
x"
);
DBUG_ENTER
(
"
change_active_inde
x"
);
active_index
=
keynr
;
...
...
@@ -2013,10 +2028,10 @@ ha_innobase::change_active_index(
"InnoDB: Could not find key n:o %u with name %s from dict cache
\n
"
"InnoDB: for table %s
\n
"
,
keynr
,
key
?
key
->
name
:
"NULL"
,
prebuilt
->
table
->
name
);
return
(
1
);
DBUG_RETURN
(
1
);
}
assert
(
prebuilt
->
search_tuple
);
assert
(
prebuilt
->
search_tuple
!=
0
);
dtuple_set_n_fields
(
prebuilt
->
search_tuple
,
prebuilt
->
index
->
n_fields
);
...
...
@@ -2029,7 +2044,7 @@ ha_innobase::change_active_index(
build_template
(
prebuilt
,
user_thd
,
table
,
ROW_MYSQL_WHOLE_ROW
);
return
(
0
);
DBUG_RETURN
(
0
);
}
/**************************************************************************
...
...
@@ -2349,7 +2364,7 @@ ha_innobase::position(
len
=
store_key_val_for_row
(
primary_key
,
(
char
*
)
ref
,
record
);
}
dbug_assert
(
len
<
=
ref_length
);
DBUG_ASSERT
(
len
=
=
ref_length
);
ref_stored_len
=
len
;
}
...
...
@@ -2441,7 +2456,8 @@ create_index(
ind_type
=
0
;
if
(
strcmp
(
key
->
name
,
"PRIMARY"
)
==
0
)
{
if
(
key_num
==
form
->
primary_key
)
{
ind_type
=
ind_type
|
DICT_CLUSTERED
;
}
...
...
@@ -2513,23 +2529,23 @@ ha_innobase::create(
int
error
;
dict_table_t
*
innobase_table
;
trx_t
*
trx
;
int
primary_key_no
=
-
1
;
KEY
*
key
;
int
primary_key_no
;
uint
i
;
char
name2
[
FN_REFLEN
];
char
norm_name
[
FN_REFLEN
];
THD
*
thd
=
current_thd
;
DBUG_ENTER
(
"ha_innobase::create"
);
assert
(
current_
thd
!=
NULL
);
DBUG_ASSERT
(
thd
!=
NULL
);
trx
=
trx_allocate_for_mysql
();
if
(
current_
thd
->
options
&
OPTION_NO_FOREIGN_KEY_CHECKS
)
{
if
(
thd
->
options
&
OPTION_NO_FOREIGN_KEY_CHECKS
)
{
trx
->
check_foreigns
=
FALSE
;
}
if
(
current_
thd
->
options
&
OPTION_RELAXED_UNIQUE_CHECKS
)
{
if
(
thd
->
options
&
OPTION_RELAXED_UNIQUE_CHECKS
)
{
trx
->
check_unique_secondary
=
FALSE
;
}
...
...
@@ -2559,13 +2575,9 @@ ha_innobase::create(
/* Look for a primary key */
for
(
i
=
0
;
i
<
form
->
keys
;
i
++
)
{
key
=
form
->
key_info
+
i
;
if
(
strcmp
(
key
->
name
,
"PRIMARY"
)
==
0
)
{
primary_key_no
=
(
int
)
i
;
}
}
primary_key_no
=
(
table
->
primary_key
!=
MAX_KEY
?
(
int
)
table
->
primary_key
:
-
1
);
/* Our function row_get_mysql_key_number_for_index assumes
the primary key is always number 0, if it exists */
...
...
@@ -2651,7 +2663,7 @@ ha_innobase::create(
innobase_table
=
dict_table_get
(
norm_name
,
NULL
);
assert
(
innobase_table
);
assert
(
innobase_table
!=
0
);
/* Tell the InnoDB server that there might be work for
utility threads: */
...
...
@@ -2750,14 +2762,7 @@ innobase_drop_database(
namebuf
[
len
+
1
]
=
'\0'
;
#ifdef __WIN__
/* Put to lower case */
ptr
=
namebuf
;
while
(
*
ptr
!=
'\0'
)
{
*
ptr
=
tolower
(
*
ptr
);
ptr
++
;
}
casedn_str
(
namebuf
);
#endif
trx
=
trx_allocate_for_mysql
();
...
...
@@ -2948,7 +2953,7 @@ ha_innobase::estimate_number_of_rows(void)
estimate
=
2
*
data_file_length
/
dict_index_calc_min_rec_len
(
index
);
return
((
ha_rows
)
estimate
);
DBUG_RETURN
((
ha_rows
)
estimate
);
}
/*************************************************************************
...
...
@@ -3144,8 +3149,9 @@ ha_innobase::update_table_comment(
*
pos
++=
' '
;
}
pos
+=
sprintf
(
pos
,
"InnoDB free: %lu kB"
,
(
ulong
)
innobase_get_free_space
());
pos
+=
my_sprintf
(
pos
,
(
pos
,
"InnoDB free: %lu kB"
,
(
ulong
)
innobase_get_free_space
()));
/* We assume 450 - length bytes of space to print info */
...
...
@@ -3322,6 +3328,7 @@ ha_innobase::external_lock(
&
(
OPTION_NOT_AUTO_COMMIT
|
OPTION_BEGIN
)))
{
innobase_commit
(
thd
,
trx
);
thd
->
transaction
.
all
.
innodb_active_trans
=
0
;
}
}
}
...
...
sql/lex.h
View file @
572891bf
...
...
@@ -232,7 +232,7 @@ static SYMBOL symbols[] = {
{
"NCHAR"
,
SYM
(
NCHAR_SYM
),
0
,
0
},
{
"NUMERIC"
,
SYM
(
NUMERIC_SYM
),
0
,
0
},
{
"NO"
,
SYM
(
NO_SYM
),
0
,
0
},
{
"
NO_FOREIGN_KEY_CHECKS"
,
SYM
(
NO_
FOREIGN_KEY_CHECKS
),
0
,
0
},
{
"
FOREIGN_KEY_CHECKS"
,
SYM
(
FOREIGN_KEY_CHECKS
),
0
,
0
},
{
"NOT"
,
SYM
(
NOT
),
0
,
0
},
{
"NULL"
,
SYM
(
NULL_SYM
),
0
,
0
},
{
"ON"
,
SYM
(
ON
),
0
,
0
},
...
...
@@ -261,7 +261,7 @@ static SYMBOL symbols[] = {
{
"REFERENCES"
,
SYM
(
REFERENCES
),
0
,
0
},
{
"RELOAD"
,
SYM
(
RELOAD
),
0
,
0
},
{
"REGEXP"
,
SYM
(
REGEXP
),
0
,
0
},
{
"
RELAXED_UNIQUE_CHECKS"
,
SYM
(
RELAXED_
UNIQUE_CHECKS
),
0
,
0
},
{
"
UNIQUE_CHECKS"
,
SYM
(
UNIQUE_CHECKS
),
0
,
0
},
{
"RENAME"
,
SYM
(
RENAME
),
0
,
0
},
{
"REPAIR"
,
SYM
(
REPAIR
),
0
,
0
},
{
"REPLACE"
,
SYM
(
REPLACE
),
0
,
0
},
...
...
sql/log.cc
View file @
572891bf
...
...
@@ -948,16 +948,16 @@ bool MYSQL_LOG::write(THD *thd,const char *query, uint query_length,
if
(
end
!=
buff
)
{
*
end
++=
';'
;
*
end
++=
'\n'
;
*
end
=
0
;
*
end
=
'\n'
;
if
(
my_b_write
(
&
log_file
,
(
byte
*
)
"SET "
,
4
)
||
my_b_write
(
&
log_file
,
(
byte
*
)
buff
+
1
,(
uint
)
(
end
-
buff
)
-
1
))
my_b_write
(
&
log_file
,
(
byte
*
)
buff
+
1
,(
uint
)
(
end
-
buff
)))
tmp_errno
=
errno
;
}
if
(
!
query
)
{
query
=
"#adminstrator command"
;
query_length
=
21
;
end
=
strxmov
(
buff
,
"# administrator command: "
,
command_name
[
thd
->
command
],
NullS
);
query_length
=
(
ulong
)
(
end
-
buff
);
}
if
(
my_b_write
(
&
log_file
,
(
byte
*
)
query
,
query_length
)
||
my_b_write
(
&
log_file
,
(
byte
*
)
";
\n
"
,
2
)
||
...
...
sql/sql_yacc.yy
View file @
572891bf
...
...
@@ -224,7 +224,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token NATURAL
%token NCHAR_SYM
%token NOT
%token
NO_
FOREIGN_KEY_CHECKS
%token FOREIGN_KEY_CHECKS
%token NO_SYM
%token NULL_SYM
%token NUM
...
...
@@ -253,7 +253,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token REAL_NUM
%token REFERENCES
%token REGEXP
%token RELAXED_UNIQUE_CHECKS
%token RELOAD
%token RENAME
%token REPEATABLE_SYM
...
...
@@ -289,6 +288,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token UNCOMMITTED_SYM
%token UNION_SYM
%token UNIQUE_SYM
%token UNIQUE_CHECKS
%token USAGE
%token USE_SYM
%token USING
...
...
@@ -2606,7 +2606,7 @@ keyword:
| MYISAM_SYM {}
| NATIONAL_SYM {}
| NCHAR_SYM {}
|
NO_FOREIGN_KEY_CHECKS
{}
|
FOREIGN_KEY_CHECKS
{}
| NO_SYM {}
| OPEN_SYM {}
| PACK_KEYS_SYM {}
...
...
@@ -2619,7 +2619,7 @@ keyword:
| RAID_CHUNKSIZE {}
| RAID_STRIPED_SYM {}
| RAID_TYPE {}
|
RELAXED_UNIQUE_CHECKS
{}
|
UNIQUE_CHECKS
{}
| RELOAD {}
| REPAIR {}
| REPEATABLE_SYM {}
...
...
@@ -2777,16 +2777,16 @@ option_value:
slave_skip_counter = $3;
pthread_mutex_unlock(&LOCK_slave);
}
|
NO_
FOREIGN_KEY_CHECKS equal NUM
| FOREIGN_KEY_CHECKS equal NUM
{
if (atoi($3.str)
!
= 0)
if (atoi($3.str)
=
= 0)
Lex->options|= OPTION_NO_FOREIGN_KEY_CHECKS;
else
Lex->options&= ~(OPTION_NO_FOREIGN_KEY_CHECKS);
}
|
RELAXED_
UNIQUE_CHECKS equal NUM
| UNIQUE_CHECKS equal NUM
{
if (atoi($3.str)
!
= 0)
if (atoi($3.str)
=
= 0)
Lex->options|= OPTION_RELAXED_UNIQUE_CHECKS;
else
Lex->options&= ~(OPTION_RELAXED_UNIQUE_CHECKS);
...
...
support-files/mysql.spec.sh
View file @
572891bf
...
...
@@ -382,6 +382,7 @@ fi
%attr
(
755, root, root
)
/usr/bin/safe_mysqld
%attr
(
755, root, root
)
/usr/bin/mysqld_multi
%attr
(
755, root, root
)
/usr/bin/my_print_defaults
%attr
(
755, root, root
)
/usr/bin/mysqldumpslow
%attr
(
644, root, root
)
/usr/info/mysql.info
*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment