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
2ac02083
Commit
2ac02083
authored
Mar 06, 2001
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge work:/my/mysql into donna.mysql.fi:/home/my/bk/mysql
sql/ha_innobase.cc: Auto merged
parents
3097059a
c1c35e1b
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
60 additions
and
18 deletions
+60
-18
innobase/include/row0mysql.h
innobase/include/row0mysql.h
+8
-0
innobase/include/trx0trx.h
innobase/include/trx0trx.h
+3
-0
innobase/row/row0ins.c
innobase/row/row0ins.c
+4
-1
innobase/row/row0mysql.c
innobase/row/row0mysql.c
+30
-0
sql/ha_innobase.cc
sql/ha_innobase.cc
+15
-17
No files found.
innobase/include/row0mysql.h
View file @
2ac02083
...
...
@@ -170,6 +170,14 @@ row_table_got_default_clust_index(
/*==============================*/
dict_table_t
*
table
);
/*************************************************************************
Calculates the key number used inside MySQL for an Innobase index. We have
to take into account if we generated a default clustered index for the table */
ulint
row_get_mysql_key_number_for_index
(
/*===============================*/
dict_index_t
*
index
);
/*************************************************************************
Does an update or delete of a row for MySQL. */
int
...
...
innobase/include/trx0trx.h
View file @
2ac02083
...
...
@@ -307,6 +307,9 @@ struct trx_struct{
/*------------------------------*/
ulint
error_state
;
/* 0 if no error, otherwise error
number */
void
*
error_info
;
/* if the error number indicates a
duplicate key error, a pointer to
the problematic index is stored here */
sess_t
*
sess
;
/* session of the trx, NULL if none */
ulint
que_state
;
/* TRX_QUE_RUNNING, TRX_QUE_LOCK_WAIT,
... */
...
...
innobase/row/row0ins.c
View file @
2ac02083
...
...
@@ -407,6 +407,7 @@ row_ins_scan_sec_index_for_duplicate(
ut_a
(
dupl_count
>=
1
);
if
(
dupl_count
>
1
)
{
trx
->
error_info
=
index
;
return
(
DB_DUPLICATE_KEY
);
}
...
...
@@ -468,7 +469,8 @@ row_ins_duplicate_error(
if
(
row_ins_dupl_error_with_rec
(
rec
,
entry
,
cursor
->
index
,
trx
))
{
*
dupl_rec
=
rec
;
trx
->
error_info
=
cursor
->
index
;
return
(
DB_DUPLICATE_KEY
);
}
}
...
...
@@ -484,6 +486,7 @@ row_ins_duplicate_error(
if
(
row_ins_dupl_error_with_rec
(
rec
,
entry
,
cursor
->
index
,
trx
))
{
*
dupl_rec
=
rec
;
trx
->
error_info
=
cursor
->
index
;
return
(
DB_DUPLICATE_KEY
);
}
...
...
innobase/row/row0mysql.c
View file @
2ac02083
...
...
@@ -761,6 +761,36 @@ row_table_got_default_clust_index(
return
(
FALSE
);
}
/*************************************************************************
Calculates the key number used inside MySQL for an Innobase index. We have
to take into account if we generated a default clustered index for the table */
ulint
row_get_mysql_key_number_for_index
(
/*===============================*/
dict_index_t
*
index
)
{
dict_index_t
*
ind
;
ulint
i
;
ut_a
(
index
);
i
=
0
;
ind
=
dict_table_get_first_index
(
index
->
table
);
while
(
index
!=
ind
)
{
ind
=
dict_table_get_next_index
(
ind
);
i
++
;
}
if
(
row_table_got_default_clust_index
(
index
->
table
))
{
ut_a
(
i
>
0
);
i
--
;
}
return
(
i
);
}
/*************************************************************************
Does a table creation operation for MySQL. */
...
...
sql/ha_innobase.cc
View file @
2ac02083
...
...
@@ -18,12 +18,6 @@
Innobase */
/* TODO list for the Innobase handler:
- How to check for deadlocks if Innobase tables are used alongside
other MySQL table types? Solution: we will use a timeout.
- Innobase currently includes the path to a table name: the path should
actually be dropped off, because we may move a whole database to a new
directory.
- Add a deadlock error message to MySQL.
- Ask Monty if strings of different languages can exist in the same
database. Answer: in near future yes, but not yet.
*/
...
...
@@ -415,10 +409,10 @@ innobase_init(void)
/*===============*/
/* out: TRUE if error */
{
int
err
;
bool
ret
;
ibool
test_bool
;
static
char
current_dir
[
3
];
static
char
current_dir
[
3
]
;
int
err
;
bool
ret
;
DBUG_ENTER
(
"innobase_init"
);
/* Use current_dir if no paths are set */
...
...
@@ -1660,7 +1654,7 @@ ha_innobase::change_active_index(
statistic_increment
(
ha_read_key_count
,
&
LOCK_status
);
DBUG_ENTER
(
"
ha_innobase::change_active_inde
x"
);
DBUG_ENTER
(
"
index_read_id
x"
);
active_index
=
keynr
;
...
...
@@ -1686,7 +1680,7 @@ ha_innobase::change_active_index(
build_template
(
prebuilt
,
user_thd
,
table
,
ROW_MYSQL_WHOLE_ROW
);
DBUG_RETURN
(
0
);
return
(
0
);
}
/**************************************************************************
...
...
@@ -2220,7 +2214,6 @@ ha_innobase::create(
{
int
error
;
dict_table_t
*
innobase_table
;
uint
name_len
;
trx_t
*
trx
;
int
primary_key_no
=
-
1
;
KEY
*
key
;
...
...
@@ -2238,7 +2231,7 @@ ha_innobase::create(
/* Create the table definition in Innobase */
if
(
(
error
=
create_table_def
(
trx
,
form
,
norm_name
)
))
{
if
(
error
=
create_table_def
(
trx
,
form
,
norm_name
))
{
trx_commit_for_mysql
(
trx
);
...
...
@@ -2257,6 +2250,11 @@ ha_innobase::create(
}
}
/* Our function row_get_mysql_key_number_for_index assumes
the primary key is always number 0, if it exists */
assert
(
primary_key_no
==
-
1
||
primary_key_no
==
0
);
/* Create the keys */
if
(
form
->
keys
==
0
||
primary_key_no
==
-
1
)
{
...
...
@@ -2570,9 +2568,9 @@ ha_innobase::info(
}
if
(
flag
&
HA_STATUS_ERRKEY
)
{
errkey
=
(
unsigned
int
)
-
1
;
/* TODO: get the key number from
Innobase */
errkey
=
(
unsigned
int
)
row_get_mysql_key_number_for_index
(
(
dict_index_t
*
)
prebuilt
->
trx
->
error_info
);
}
DBUG_VOID_RETURN
;
...
...
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