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
9972d680
Commit
9972d680
authored
Nov 02, 2004
by
monty@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
merge with 4.0
parents
bc6bbebb
d22a24d8
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
129 additions
and
61 deletions
+129
-61
Docs/Support/texi2html
Docs/Support/texi2html
+53
-45
innobase/dict/dict0crea.c
innobase/dict/dict0crea.c
+15
-1
innobase/dict/dict0dict.c
innobase/dict/dict0dict.c
+2
-2
innobase/dict/dict0load.c
innobase/dict/dict0load.c
+18
-3
innobase/eval/eval0eval.c
innobase/eval/eval0eval.c
+17
-1
innobase/pars/pars0pars.c
innobase/pars/pars0pars.c
+6
-2
innobase/row/row0mysql.c
innobase/row/row0mysql.c
+11
-4
sql/sql_table.cc
sql/sql_table.cc
+7
-3
No files found.
Docs/Support/texi2html
View file @
9972d680
#!
PATH_TO_PERL -*- perl -*-
#!
/usr/bin/perl
# Add path to perl on the previous line and make this executable
# Add path to perl on the previous line and make this executable
# if you want to use this as a normal script.
# if you want to use this as a normal script.
'
di
';
'
di
';
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
#-##############################################################################
#-##############################################################################
# @(#)texi2html 1.52 971230 Written (mainly) by Lionel Cons, Lionel.Cons@cern.ch
# @(#)texi2html 1.52 971230 Written (mainly) by Lionel Cons, Lionel.Cons@cern.ch
# Enhanced by David Axmark
, david@detron.se
# Enhanced by David Axmark
# The man page for this program is included at the end of this file and can be
# The man page for this program is included at the end of this file and can be
# viewed using the command 'nroff -man texi2html'.
# viewed using the command 'nroff -man texi2html'.
...
@@ -40,8 +40,7 @@ $NODESRE = '[^@{}:\'`"]+'; # RE for a list of node names
...
@@ -40,8 +40,7 @@ $NODESRE = '[^@{}:\'`"]+'; # RE for a list of node names
$XREFRE
=
'
[^@{}]+
';
# RE for a xref (should use NODERE)
$XREFRE
=
'
[^@{}]+
';
# RE for a xref (should use NODERE)
$ERROR
=
"
***
";
# prefix for errors and warnings
$ERROR
=
"
***
";
# prefix for errors and warnings
$THISPROG
=
"
texi2html 1.52 (hacked by david
\
@detron
.se)
";
# program name and version
$THISPROG
=
"
texi2html 1.52 (with additions by MySQL AB)
";
# program name and version
$HOMEPAGE
=
"
http://www.mathematik.uni-kl.de/~obachman/Texi2html/
";
# program home page
$TODAY
=
&
pretty_date
;
# like "20 September 1993"
$TODAY
=
&
pretty_date
;
# like "20 September 1993"
$SPLITTAG
=
"
<!-- SPLIT HERE -->
\n
";
# tag to know where to split
$SPLITTAG
=
"
<!-- SPLIT HERE -->
\n
";
# tag to know where to split
$PROTECTTAG
=
"
_ThisIsProtected_
";
# tag to recognize protected sections
$PROTECTTAG
=
"
_ThisIsProtected_
";
# tag to recognize protected sections
...
@@ -114,10 +113,12 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
...
@@ -114,10 +113,12 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
#
#
%
accent_map
=
(
%
accent_map
=
(
'
"
',
'
uml
',
'
"
',
'
uml
',
'
\'
',
'
acute
',
'
,{
',
'
cedil
',
'
~
',
'
tilde
',
'
~
',
'
tilde
',
'
^
',
'
circ
',
'
^
',
'
circ
',
'
`
',
'
grave
',
'
`
',
'
grave
',
'
\'
',
'
acute
',
'
ringaccent{
',
'
ring
',
);
);
#
#
...
@@ -125,7 +126,7 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
...
@@ -125,7 +126,7 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
#
#
%
simple_map
=
(
%
simple_map
=
(
# cf. makeinfo.c
# cf. makeinfo.c
"
*
",
"
<
BR
>
",
# HTML+
"
*
",
"
<
br /
>
",
# HTML+
"
",
"
",
"
",
"
",
"
\n
",
"
\n
",
"
\n
",
"
\n
",
"
|
",
"",
"
|
",
"",
...
@@ -134,6 +135,8 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
...
@@ -134,6 +135,8 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
"
!
",
"
!
",
"
!
",
"
!
",
"
?
",
"
?
",
"
?
",
"
?
",
"
.
",
"
.
",
"
.
",
"
.
",
# @- means "allow word break", not —
"
-
",
"",
);
);
#
#
...
@@ -141,9 +144,10 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
...
@@ -141,9 +144,10 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
#
#
%
things_map
=
(
%
things_map
=
(
'
TeX
',
'
TeX
',
'
TeX
',
'
TeX
',
'
br
',
'
<
P
>
',
# paragraph break
'
br
',
'
<
p
>
',
# paragraph break
'
bullet
',
'
*
',
'
bullet
',
'
*
',
'
copyright
',
'
(C)
',
'
copyright
',
'
(C)
',
'
registeredsymbol
',
'
(R)
',
'
dots
',
'
...
',
'
dots
',
'
...
',
'
equiv
',
'
==
',
'
equiv
',
'
==
',
'
error
',
'
error-->
',
'
error
',
'
error-->
',
...
@@ -161,27 +165,28 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
...
@@ -161,27 +165,28 @@ $html2_doctype = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//E
%
style_map
=
(
%
style_map
=
(
'
asis
',
'',
'
asis
',
'',
'
b
',
'
B
',
'
b
',
'
B
',
'
cite
',
'
CITE
',
'
cite
',
'
cite
',
'
code
',
'
CODE
',
'
code
',
'
code
',
'
command
',
'
code
',
'
ctrl
',
'
&do_ctrl
',
# special case
'
ctrl
',
'
&do_ctrl
',
# special case
'
dfn
',
'
STRONG
',
# DFN tag is illegal in the standard
'
dfn
',
'
strong
',
# DFN tag is illegal in the standard
'
dmn
',
'',
# useless
'
dmn
',
'',
# useless
'
email
',
'
&fix_email
',
# special
'
email
',
'
&fix_email
',
# special
'
emph
',
'
EM
',
'
emph
',
'
em
',
'
file
',
'
"
TT
',
# will put quotes, cf. &apply_style
'
file
',
'
"
tt
',
# will put quotes, cf. &apply_style
'
i
',
'
I
',
'
i
',
'
i
',
'
kbd
',
'
KBD
',
'
kbd
',
'
kbd
',
'
key
',
'
KBD
',
'
key
',
'
kbd
',
'
r
',
'',
# unsupported
'
r
',
'',
# unsupported
'
samp
',
'
"
SAMP
',
# will put quotes, cf. &apply_style
'
samp
',
'
"
samp
',
# will put quotes, cf. &apply_style
'
sc
',
'
&do_sc
',
# special case
'
sc
',
'
&do_sc
',
# special case
'
strong
',
'
STRONG
',
'
strong
',
'
strong
',
'
t
',
'
TT
',
'
t
',
'
tt
',
'
titlefont
',
'',
# useless
'
titlefont
',
'',
# useless
'
image
',
'
&fix_image
',
# Image
'
image
',
'
&fix_image
',
# Image
'
url
',
'
&fix_url
',
# URL
'
url
',
'
&fix_url
',
# URL
'
uref
',
'
&fix_uref
',
# URL Reference
'
uref
',
'
&fix_uref
',
# URL Reference
'
var
',
'
VAR
',
'
var
',
'
var
',
'
w
',
'',
# unsupported
'
w
',
'',
# unsupported
);
);
...
@@ -317,6 +322,7 @@ $usage = <<EOT;
...
@@ -317,6 +322,7 @@ $usage = <<EOT;
This is $THISPROG
This is $THISPROG
To convert a Texinfo file to HMTL: $0 [options] file
To convert a Texinfo file to HMTL: $0 [options] file
where options can be:
where options can be:
-acc : convert @"-like accents to &entities;
-expandinfo : use \@ifinfo sections, not \@iftex
-expandinfo : use \@ifinfo sections, not \@iftex
-glossary : handle a glossary
-glossary : handle a glossary
-invisible name: use 'name' as an invisible anchor
-invisible name: use 'name' as an invisible anchor
...
@@ -445,11 +451,15 @@ $html_num = 0;
...
@@ -445,11 +451,15 @@ $html_num = 0;
if
(
$use_iso
)
{
if
(
$use_iso
)
{
$things_map
{'
bullet
'}
=
"
•
";
$things_map
{'
bullet
'}
=
"
•
";
$things_map
{'
copyright
'}
=
"
©
";
$things_map
{'
copyright
'}
=
"
©
";
$things_map
{'
registeredsymbol
'}
=
"
®
";
$things_map
{'
dots
'}
=
"
…
";
$things_map
{'
dots
'}
=
"
…
";
$things_map
{'
equiv
'}
=
"
≡
";
$things_map
{'
equiv
'}
=
"
≡
";
$things_map
{'
expansion
'}
=
"
→
";
$things_map
{'
expansion
'}
=
"
→
";
$things_map
{'
point
'}
=
"
∗
";
$things_map
{'
point
'}
=
"
∗
";
$things_map
{'
result
'}
=
"
⇒
";
$things_map
{'
result
'}
=
"
⇒
";
$things_map
{'
ss
'}
=
"
ß
";
$things_map
{'
o
'}
=
"
ø
";
$things_map
{'
O
'}
=
"
Ø
";
}
}
#
#
...
@@ -505,23 +515,27 @@ $html_element = ''; # current HTML element
...
@@ -505,23 +515,27 @@ $html_element = ''; # current HTML element
# watch out for regexps, / and escaped characters!
# watch out for regexps, / and escaped characters!
$subst_code
=
'';
$subst_code
=
'';
foreach
(
keys
(
%
simple_map
))
{
foreach
(
keys
(
%
simple_map
))
{
(
$re
=
$_
)
=~
s/(\W)/\\$1/g
;
# protect regexp chars
$re
=
quotemeta
$_
;
# protect regexp chars
$subst_code
.=
"
s/
\\
\
@
$re
/
$simple_map
{
$_
}/g;
\n
";
$sub
=
quotemeta
$simple_map
{
$_
};
$subst_code
.=
"
s/
\\
\
@
$re
/
$sub
/g;
\n
";
}
}
foreach
(
keys
(
%
things_map
))
{
foreach
(
keys
(
%
things_map
))
{
$subst_code
.=
"
s/
\\
\
@
$_
\\
{
\\
}/
$things_map
{
$_
}/g;
\n
";
$re
=
quotemeta
$_
;
# protect regexp chars
$sub
=
quotemeta
$things_map
{
$_
};
$subst_code
.=
"
s/
\\
\
@
$re
\\
{
\\
}/
$sub
/g;
\n
";
}
}
if
(
$use_acc
)
{
if
(
$use_acc
)
{
# accentuated characters
# accentuated characters
foreach
(
keys
(
%
accent_map
))
{
foreach
(
keys
(
%
accent_map
))
{
my
$brace
=
/{$/
?
'
}
'
:
'';
if
(
$_
eq
"
`
")
{
if
(
$_
eq
"
`
")
{
$subst_code
.=
"
s/$;3
";
$subst_code
.=
"
s/$;3
";
}
elsif
(
$_
eq
"
'
")
{
}
elsif
(
$_
eq
"
'
")
{
$subst_code
.=
"
s/$;4
";
$subst_code
.=
"
s/$;4
";
}
else
{
}
else
{
$subst_code
.=
"
s/
\\
\
@
\\
$_
";
$subst_code
.=
"
s/
\\
\
@
\\
Q
$_
\\
E
";
}
}
$subst_code
.=
"
(
[aeiou])
/&
\
${
1
}$accent_map
{
$_
};/gi;
\n
";
$subst_code
.=
"
(
\\
w)
$brace
/&
\
${
1
}$accent_map
{
$_
};/gi;
\n
";
}
}
}
}
eval
("
sub simple_substitutions {
$subst_code
}
");
eval
("
sub simple_substitutions {
$subst_code
}
");
...
@@ -703,7 +717,7 @@ READ_LINE: while ($_ = &next_line)
...
@@ -703,7 +717,7 @@ READ_LINE: while ($_ = &next_line)
s/{[^{}]+}//g
);
s/{[^{}]+}//g
);
print
"
# Multitable with
$multitable_cols
columns
\n
"
print
"
# Multitable with
$multitable_cols
columns
\n
"
if
$debug
and
$DEBUG_USER
;
if
$debug
and
$DEBUG_USER
;
push
(
@lines
,
&
debug
("
<TABLE BORDER
WIDTH=
\"
100%
\"
>
\n
",
__LINE__
));
push
(
@lines
,
&
debug
("
<TABLE BORDER>
\n
",
__LINE__
));
}
else
{
}
else
{
warn
"
$ERROR
Bad table line:
$_
";
warn
"
$ERROR
Bad table line:
$_
";
}
}
...
@@ -873,7 +887,7 @@ READ_LINE: while ($_ = &next_line)
...
@@ -873,7 +887,7 @@ READ_LINE: while ($_ = &next_line)
&
simple_substitutions
;
&
simple_substitutions
;
s/\@value{($VARRE)}/$value{$1}/
eg
;
s/\@value{($VARRE)}/$value{$1}/
eg
;
s/\@footnote\{/\@footnote$docu_doc\{/g
;
# mark footnotes, cf. pass 4
s/\@footnote\{/\@footnote$docu_doc\{/g
;
# mark footnotes, cf. pass 4
s
|\s+\@tab\s*| </TD><TD> |
g
if
(
$in_multitable
);
s
/(^|\s+)\@tab\s*/ <\/TD><TD> /
g
if
(
$in_multitable
);
#
#
# analyze the tag again
# analyze the tag again
...
@@ -885,7 +899,7 @@ READ_LINE: while ($_ = &next_line)
...
@@ -885,7 +899,7 @@ READ_LINE: while ($_ = &next_line)
$name
=~
s/\s+$//
;
$name
=~
s/\s+$//
;
$level
=
$sec2level
{
$tag
};
$level
=
$sec2level
{
$tag
};
$name
=
&
update_sec_num
(
$tag
,
$level
)
.
"
$name
"
$name
=
&
update_sec_num
(
$tag
,
$level
)
.
"
$name
"
if
$number_sections
&&
$tag
!~
/^unnumbered/
;
if
$number_sections
&&
$tag
!~
/^unnumbered/
&&
$tag
ne
'
subsubheading
'
;
if
(
$tag
=~
/heading$/
)
{
if
(
$tag
=~
/heading$/
)
{
push
(
@lines
,
&
html_debug
("
\n
",
__LINE__
));
push
(
@lines
,
&
html_debug
("
\n
",
__LINE__
));
if
(
$html_element
ne
'
body
')
{
if
(
$html_element
ne
'
body
')
{
...
@@ -1079,7 +1093,7 @@ EOC
...
@@ -1079,7 +1093,7 @@ EOC
push
(
@lines
,
&
debug
("
</TD></TR>
\n
",
__LINE__
))
push
(
@lines
,
&
debug
("
</TD></TR>
\n
",
__LINE__
))
unless
$html_element
eq
'
TABLE
';
unless
$html_element
eq
'
TABLE
';
&
html_pop_if
('
TR
');
&
html_pop_if
('
TR
');
$what
=~
s
|\s+\@tab\s*| </TD><TD> |
g
;
$what
=~
s
/(^|\s+)\@tab\s*/ <\/TD><TD> /
g
;
push
(
@lines
,
&
debug
("
<TR><TD>
$what
\n
",
__LINE__
));
push
(
@lines
,
&
debug
("
<TR><TD>
$what
\n
",
__LINE__
));
&
html_push
('
TR
');
&
html_push
('
TR
');
if
(
$deferred_ref
)
if
(
$deferred_ref
)
...
@@ -1463,11 +1477,7 @@ print "# end of pass 4\n" if $verbose;
...
@@ -1463,11 +1477,7 @@ print "# end of pass 4\n" if $verbose;
# #
# #
#---############################################################################
#---############################################################################
$header
=
<<EOT;
$header
=
'';
<!-- This HTML file has been created by $THISPROG
from $docu on $TODAY -->
EOT
$full_title
=
$value
{'
_title
'}
||
$value
{'
_settitle
'}
||
"
Untitled Document
";
$full_title
=
$value
{'
_title
'}
||
$value
{'
_settitle
'}
||
"
Untitled Document
";
$title
=
$value
{'
_settitle
'}
||
$full_title
;
$title
=
$value
{'
_settitle
'}
||
$full_title
;
$_
=
&
substitute_style
(
$full_title
);
$_
=
&
substitute_style
(
$full_title
);
...
@@ -1815,8 +1825,10 @@ sub fix_image
...
@@ -1815,8 +1825,10 @@ sub fix_image
die
"
error in image: '
$text
'
"
unless
defined
(
$1
);
die
"
error in image: '
$text
'
"
unless
defined
(
$1
);
$arg1
=
$1
;
$arg1
=
$1
;
$arg1
=~
s/@@/@/g
;
$arg1
=~
s/@@/@/g
;
$ext
=
"
jpg
"
if
-
f
"
$arg1
.jpg
";
foreach
(
@include_dirs
)
{
$ext
=
"
gif
"
if
-
f
"
$arg1
.gif
";
$ext
=
"
jpg
"
if
-
f
"
$_
/
$arg1
.jpg
";
$ext
=
"
gif
"
if
-
f
"
$_
/
$arg1
.gif
";
}
if
(
defined
(
$ext
))
if
(
defined
(
$ext
))
{
{
"
<IMG SRC=
\"
$arg1
.
$ext
\"
>
";
"
<IMG SRC=
\"
$arg1
.
$ext
\"
>
";
...
@@ -2010,7 +2022,7 @@ sub print_toplevel_header
...
@@ -2010,7 +2022,7 @@ sub print_toplevel_header
{
{
local
(
$_
);
local
(
$_
);
&
print_header
;
# pass given arg...
&
print_header
unless
$opt_empty_headers
;
# pass given arg...
print
FILE
$full_title
;
print
FILE
$full_title
;
if
(
$value
{'
_subtitle
'})
{
if
(
$value
{'
_subtitle
'})
{
$value
{'
_subtitle
'}
=~
s/\n+$//
;
$value
{'
_subtitle
'}
=~
s/\n+$//
;
...
@@ -2042,13 +2054,7 @@ EOT
...
@@ -2042,13 +2054,7 @@ EOT
sub
print_toplevel_footer
sub
print_toplevel_footer
{
{
&
print_ruler
;
&
print_footer
unless
$opt_empty_headers
;
print
FILE
<<EOT;
This document was generated on $TODAY using the
<A HREF=\"$HOMEPAGE\">texi2html</A>
translator version 1.52 (extended by davida\@detron.se).</P>
EOT
&
print_footer
;
}
}
sub
protect_texi
sub
protect_texi
...
@@ -2065,8 +2071,10 @@ sub protect_html
...
@@ -2065,8 +2071,10 @@ sub protect_html
{
{
local
(
$what
)
=
@_
;
local
(
$what
)
=
@_
;
# protect & < >
# protect & < >
# Avoid loop in & replacement. This instead bugs out for &# in text..
# hack for the two entity-like variable reference in existing examples
$what
=~
s/\&([^#]|$)/\&\#38;$1/g
;
$what
=~
s/\&(length|ts);/\&\#38;$1;/g
;
# this leaves alone entities, but encodes standalone ampersands
$what
=~
s/\&(?!([a-z0-9]+|#\d+);)/\&\#38;/ig
;
$what
=~
s/\</\&\#60;/g
;
$what
=~
s/\</\&\#60;/g
;
$what
=~
s/\>/\&\#62;/g
;
$what
=~
s/\>/\&\#62;/g
;
# but recognize some HTML things
# but recognize some HTML things
...
...
innobase/dict/dict0crea.c
View file @
9972d680
...
@@ -1067,6 +1067,12 @@ dict_create_or_check_foreign_constraint_tables(void)
...
@@ -1067,6 +1067,12 @@ dict_create_or_check_foreign_constraint_tables(void)
there are 2 secondary indexes on SYS_FOREIGN, and they
there are 2 secondary indexes on SYS_FOREIGN, and they
are defined just like below */
are defined just like below */
/* NOTE: when designing InnoDB's foreign key support in 2001, we made
an error and made the table names and the foreign key id of type
'CHAR' (internally, really a VARCHAR). We should have made the type
VARBINARY, like in other InnoDB system tables, to get a clean
design. */
str
=
str
=
"PROCEDURE CREATE_FOREIGN_SYS_TABLES_PROC () IS
\n
"
"PROCEDURE CREATE_FOREIGN_SYS_TABLES_PROC () IS
\n
"
"BEGIN
\n
"
"BEGIN
\n
"
...
@@ -1284,9 +1290,17 @@ dict_create_add_foreigns_to_dictionary(
...
@@ -1284,9 +1290,17 @@ dict_create_add_foreigns_to_dictionary(
fputs
(
".
\n
A foreign key constraint of name "
,
ef
);
fputs
(
".
\n
A foreign key constraint of name "
,
ef
);
ut_print_name
(
ef
,
trx
,
foreign
->
id
);
ut_print_name
(
ef
,
trx
,
foreign
->
id
);
fputs
(
"
\n
already exists."
fputs
(
"
\n
already exists."
"
(Note that internally InnoDB adds 'databasename/'
\n
"
" (Note that internally InnoDB adds 'databasename/'
\n
"
"in front of the user-defined constraint name).
\n
"
,
"in front of the user-defined constraint name).
\n
"
,
ef
);
ef
);
fputs
(
"Note that InnoDB's FOREIGN KEY system tables store
\n
"
"constraint names as case-insensitive, with the
\n
"
"MySQL standard latin1_swedish_ci collation. If you
\n
"
"create tables or databases whose names differ only in
\n
"
"the character case, then collisions in constraint
\n
"
"names can occur. Workaround: name your constraints
\n
"
"explicitly with unique names.
\n
"
,
ef
);
mutex_exit
(
&
dict_foreign_err_mutex
);
mutex_exit
(
&
dict_foreign_err_mutex
);
...
...
innobase/dict/dict0dict.c
View file @
9972d680
...
@@ -156,7 +156,7 @@ dict_index_build_internal_non_clust(
...
@@ -156,7 +156,7 @@ dict_index_build_internal_non_clust(
dict_index_t
*
index
);
/* in: user representation of a non-clustered
dict_index_t
*
index
);
/* in: user representation of a non-clustered
index */
index */
/**************************************************************************
/**************************************************************************
Removes a foreign constraint struct from the diction
et
cache. */
Removes a foreign constraint struct from the diction
ary
cache. */
static
static
void
void
dict_foreign_remove_from_cache
(
dict_foreign_remove_from_cache
(
...
@@ -606,7 +606,7 @@ dict_table_get_on_id(
...
@@ -606,7 +606,7 @@ dict_table_get_on_id(
dict_table_t
*
table
;
dict_table_t
*
table
;
if
(
ut_dulint_cmp
(
table_id
,
DICT_FIELDS_ID
)
<=
0
if
(
ut_dulint_cmp
(
table_id
,
DICT_FIELDS_ID
)
<=
0
||
trx
->
dict_operation
)
{
||
trx
->
dict_operation
_lock_mode
==
RW_X_LATCH
)
{
/* It is a system table which will always exist in the table
/* It is a system table which will always exist in the table
cache: we avoid acquiring the dictionary mutex, because
cache: we avoid acquiring the dictionary mutex, because
if we are doing a rollback to handle an error in TABLE
if we are doing a rollback to handle an error in TABLE
...
...
innobase/dict/dict0load.c
View file @
9972d680
...
@@ -19,6 +19,7 @@ Created 4/24/1996 Heikki Tuuri
...
@@ -19,6 +19,7 @@ Created 4/24/1996 Heikki Tuuri
#include "mach0data.h"
#include "mach0data.h"
#include "dict0dict.h"
#include "dict0dict.h"
#include "dict0boot.h"
#include "dict0boot.h"
#include "rem0cmp.h"
#include "srv0start.h"
#include "srv0start.h"
/************************************************************************
/************************************************************************
...
@@ -1242,12 +1243,26 @@ dict_load_foreigns(
...
@@ -1242,12 +1243,26 @@ dict_load_foreigns(
rec
=
btr_pcur_get_rec
(
&
pcur
);
rec
=
btr_pcur_get_rec
(
&
pcur
);
field
=
rec_get_nth_field
(
rec
,
0
,
&
len
);
field
=
rec_get_nth_field
(
rec
,
0
,
&
len
);
/* Check if the table name in
record is the one searched for */
/* Check if the table name in
the record is the one searched for; the
if
(
len
!=
ut_strlen
(
table_name
)
following call does the comparison in the latin1_swedish_ci
||
0
!=
ut_memcmp
(
field
,
table_name
,
len
))
{
charset-collation, in a case-insensitive way. */
if
(
0
!=
cmp_data_data
(
dfield_get_type
(
dfield
),
dfield_get_data
(
dfield
),
dfield_get_len
(
dfield
),
field
,
len
))
{
goto
load_next_index
;
goto
load_next_index
;
}
}
/* Since table names in SYS_FOREIGN are stored in a case-insensitive
order, we have to check that the table name matches also in a binary
string comparison. On Unix, MySQL allows table names that only differ
in character case. */
if
(
0
!=
ut_memcmp
(
field
,
table_name
,
len
))
{
goto
next_rec
;
}
if
(
rec_get_deleted_flag
(
rec
))
{
if
(
rec_get_deleted_flag
(
rec
))
{
...
...
innobase/eval/eval0eval.c
View file @
9972d680
...
@@ -627,7 +627,11 @@ eval_concat(
...
@@ -627,7 +627,11 @@ eval_concat(
}
}
/*********************************************************************
/*********************************************************************
Evaluates a predefined function node. */
Evaluates a predefined function node. If the first argument is an integer,
this function looks at the second argument which is the integer length in
bytes, and converts the integer to a VARCHAR.
If the first argument is of some other type, this function converts it to
BINARY. */
UNIV_INLINE
UNIV_INLINE
void
void
eval_to_binary
(
eval_to_binary
(
...
@@ -638,12 +642,24 @@ eval_to_binary(
...
@@ -638,12 +642,24 @@ eval_to_binary(
que_node_t
*
arg2
;
que_node_t
*
arg2
;
dfield_t
*
dfield
;
dfield_t
*
dfield
;
byte
*
str1
;
byte
*
str1
;
ulint
len
;
ulint
len1
;
ulint
len1
;
arg1
=
func_node
->
args
;
arg1
=
func_node
->
args
;
str1
=
dfield_get_data
(
que_node_get_val
(
arg1
));
str1
=
dfield_get_data
(
que_node_get_val
(
arg1
));
if
(
dtype_get_mtype
(
que_node_get_data_type
(
arg1
))
!=
DATA_INT
)
{
len
=
dfield_get_len
(
que_node_get_val
(
arg1
));
dfield
=
que_node_get_val
(
func_node
);
dfield_set_data
(
dfield
,
str1
,
len
);
return
;
}
arg2
=
que_node_get_next
(
arg1
);
arg2
=
que_node_get_next
(
arg1
);
len1
=
(
ulint
)
eval_node_get_int_val
(
arg2
);
len1
=
(
ulint
)
eval_node_get_int_val
(
arg2
);
...
...
innobase/pars/pars0pars.c
View file @
9972d680
...
@@ -259,9 +259,13 @@ pars_resolve_func_data_type(
...
@@ -259,9 +259,13 @@ pars_resolve_func_data_type(
dtype_set
(
que_node_get_data_type
(
node
),
DATA_VARCHAR
,
dtype_set
(
que_node_get_data_type
(
node
),
DATA_VARCHAR
,
DATA_ENGLISH
,
0
,
0
);
DATA_ENGLISH
,
0
,
0
);
}
else
if
(
func
==
PARS_TO_BINARY_TOKEN
)
{
}
else
if
(
func
==
PARS_TO_BINARY_TOKEN
)
{
ut_a
(
dtype_get_mtype
(
que_node_get_data_type
(
arg
))
==
DATA_INT
);
if
(
dtype_get_mtype
(
que_node_get_data_type
(
arg
))
==
DATA_INT
)
{
dtype_set
(
que_node_get_data_type
(
node
),
DATA_VARCHAR
,
dtype_set
(
que_node_get_data_type
(
node
),
DATA_VARCHAR
,
DATA_ENGLISH
,
0
,
0
);
DATA_ENGLISH
,
0
,
0
);
}
else
{
dtype_set
(
que_node_get_data_type
(
node
),
DATA_BINARY
,
0
,
0
,
0
);
}
}
else
if
(
func
==
PARS_TO_NUMBER_TOKEN
)
{
}
else
if
(
func
==
PARS_TO_NUMBER_TOKEN
)
{
ut_a
(
dtype_get_mtype
(
que_node_get_data_type
(
arg
))
ut_a
(
dtype_get_mtype
(
que_node_get_data_type
(
arg
))
==
DATA_VARCHAR
);
==
DATA_VARCHAR
);
...
...
innobase/row/row0mysql.c
View file @
9972d680
...
@@ -2314,7 +2314,8 @@ row_drop_table_for_mysql(
...
@@ -2314,7 +2314,8 @@ row_drop_table_for_mysql(
"WHILE found = 1 LOOP
\n
"
"WHILE found = 1 LOOP
\n
"
" SELECT ID INTO foreign_id
\n
"
" SELECT ID INTO foreign_id
\n
"
" FROM SYS_FOREIGN
\n
"
" FROM SYS_FOREIGN
\n
"
" WHERE FOR_NAME = table_name;
\n
"
" WHERE FOR_NAME = table_name
\n
"
" AND TO_BINARY(FOR_NAME) = TO_BINARY(table_name);
\n
"
" IF (SQL % NOTFOUND) THEN
\n
"
" IF (SQL % NOTFOUND) THEN
\n
"
" found := 0;
\n
"
" found := 0;
\n
"
" ELSE"
" ELSE"
...
@@ -2769,7 +2770,8 @@ row_rename_table_for_mysql(
...
@@ -2769,7 +2770,8 @@ row_rename_table_for_mysql(
"WHILE found = 1 LOOP
\n
"
"WHILE found = 1 LOOP
\n
"
" SELECT ID INTO foreign_id
\n
"
" SELECT ID INTO foreign_id
\n
"
" FROM SYS_FOREIGN
\n
"
" FROM SYS_FOREIGN
\n
"
" WHERE FOR_NAME = old_table_name;
\n
"
" WHERE FOR_NAME = old_table_name
\n
"
" AND TO_BINARY(FOR_NAME) = TO_BINARY(old_table_name);
\n
"
" IF (SQL % NOTFOUND) THEN
\n
"
" IF (SQL % NOTFOUND) THEN
\n
"
" found := 0;
\n
"
" found := 0;
\n
"
" ELSE
\n
"
" ELSE
\n
"
...
@@ -2802,7 +2804,8 @@ row_rename_table_for_mysql(
...
@@ -2802,7 +2804,8 @@ row_rename_table_for_mysql(
" END IF;
\n
"
" END IF;
\n
"
"END LOOP;
\n
"
"END LOOP;
\n
"
"UPDATE SYS_FOREIGN SET REF_NAME = new_table_name
\n
"
"UPDATE SYS_FOREIGN SET REF_NAME = new_table_name
\n
"
"WHERE REF_NAME = old_table_name;
\n
"
;
"WHERE REF_NAME = old_table_name
\n
"
" AND TO_BINARY(REF_NAME) = TO_BINARY(old_table_name);
\n
"
;
static
const
char
str5
[]
=
static
const
char
str5
[]
=
"END;
\n
"
;
"END;
\n
"
;
...
@@ -3012,7 +3015,11 @@ row_rename_table_for_mysql(
...
@@ -3012,7 +3015,11 @@ row_rename_table_for_mysql(
if
(
err
!=
DB_SUCCESS
)
{
if
(
err
!=
DB_SUCCESS
)
{
if
(
err
==
DB_DUPLICATE_KEY
)
{
if
(
err
==
DB_DUPLICATE_KEY
)
{
ut_print_timestamp
(
stderr
);
ut_print_timestamp
(
stderr
);
fputs
(
" InnoDB: Error: table "
,
stderr
);
fputs
(
" InnoDB: Error; possible reasons:
\n
"
"InnoDB: 1) Table rename would cause two FOREIGN KEY constraints
\n
"
"InnoDB: to have the same internal name in case-insensitive comparison.
\n
"
"InnoDB: 2) table "
,
stderr
);
ut_print_name
(
stderr
,
trx
,
new_name
);
ut_print_name
(
stderr
,
trx
,
new_name
);
fputs
(
" exists in the InnoDB internal data
\n
"
fputs
(
" exists in the InnoDB internal data
\n
"
"InnoDB: dictionary though MySQL is trying rename table "
,
stderr
);
"InnoDB: dictionary though MySQL is trying rename table "
,
stderr
);
...
...
sql/sql_table.cc
View file @
9972d680
...
@@ -1780,9 +1780,13 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
...
@@ -1780,9 +1780,13 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
if
(
prepare_func
)
if
(
prepare_func
)
{
{
switch
((
*
prepare_func
)(
thd
,
table
,
check_opt
))
{
switch
((
*
prepare_func
)(
thd
,
table
,
check_opt
))
{
case
1
:
continue
;
// error, message written to net
case
1
:
// error, message written to net
case
-
1
:
goto
err
;
// error, message could be written to net
close_thread_tables
(
thd
);
default:
;
// should be 0 otherwise
continue
;
case
-
1
:
// error, message could be written to net
goto
err
;
default:
// should be 0 otherwise
;
}
}
}
}
...
...
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