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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
1a1cafce
Commit
1a1cafce
authored
Oct 25, 2002
by
serg@serg.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
merged
parents
3c570209
dede6634
Changes
28
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
300 additions
and
75 deletions
+300
-75
BitKeeper/etc/gone
BitKeeper/etc/gone
+38
-0
BitKeeper/etc/logging_ok
BitKeeper/etc/logging_ok
+1
-0
Build-tools/Do-compile
Build-tools/Do-compile
+9
-2
Docs/manual.texi
Docs/manual.texi
+35
-9
client/mysqlcheck.c
client/mysqlcheck.c
+8
-8
innobase/pars/lexyy.c
innobase/pars/lexyy.c
+8
-1
innobase/pars/pars0grm.c
innobase/pars/pars0grm.c
+2
-0
libmysqld/lib_sql.cc
libmysqld/lib_sql.cc
+1
-0
myisam/ft_boolean_search.c
myisam/ft_boolean_search.c
+2
-1
myisam/ft_nlq_search.c
myisam/ft_nlq_search.c
+13
-9
myisam/ft_parser.c
myisam/ft_parser.c
+8
-4
myisam/ftdefs.h
myisam/ftdefs.h
+1
-1
myisam/mi_create.c
myisam/mi_create.c
+1
-1
myisam/mi_delete_all.c
myisam/mi_delete_all.c
+5
-4
mysql-test/t/bdb-crash.test
mysql-test/t/bdb-crash.test
+1
-0
mysys/my_init.c
mysys/my_init.c
+5
-1
scripts/mysql_convert_table_format.sh
scripts/mysql_convert_table_format.sh
+1
-1
scripts/mysqld_multi.sh
scripts/mysqld_multi.sh
+3
-3
scripts/mysqlhotcopy.sh
scripts/mysqlhotcopy.sh
+3
-3
sql/item_func.cc
sql/item_func.cc
+12
-11
sql/log_event.h
sql/log_event.h
+29
-0
sql/mysqld.cc
sql/mysqld.cc
+1
-0
sql/nt_servc.cc
sql/nt_servc.cc
+90
-1
sql/nt_servc.h
sql/nt_servc.h
+1
-1
sql/sql_base.cc
sql/sql_base.cc
+1
-0
sql/sql_class.h
sql/sql_class.h
+1
-2
sql/sql_table.cc
sql/sql_table.cc
+11
-3
sql/sql_update.cc
sql/sql_update.cc
+9
-9
No files found.
BitKeeper/etc/gone
View file @
1a1cafce
This diff is collapsed.
Click to expand it.
BitKeeper/etc/logging_ok
View file @
1a1cafce
...
@@ -20,6 +20,7 @@ heikki@donna.mysql.fi
...
@@ -20,6 +20,7 @@ heikki@donna.mysql.fi
heikki@hundin.mysql.fi
heikki@hundin.mysql.fi
heikki@rescue.
heikki@rescue.
heikki@work.mysql.com
heikki@work.mysql.com
hf@genie.(none)
jani@dsl-jkl1657.dial.inet.fi
jani@dsl-jkl1657.dial.inet.fi
jani@hynda.(none)
jani@hynda.(none)
jani@hynda.mysql.fi
jani@hynda.mysql.fi
...
...
Build-tools/Do-compile
View file @
1a1cafce
...
@@ -215,7 +215,14 @@ if ($opt_stage <= 1)
...
@@ -215,7 +215,14 @@ if ($opt_stage <= 1)
# Only enable InnoDB when requested (required to be able to
# Only enable InnoDB when requested (required to be able to
# build the "Classic" packages that do not include InnoDB)
# build the "Classic" packages that do not include InnoDB)
$opt_config_options
.=
"
--without-innodb
"
if
(
!
$opt_innodb
);
if
(
$opt_innodb
)
{
$opt_config_options
.=
"
--with-innodb
";
}
else
{
$opt_config_options
.=
"
--without-innodb
";
}
if
(
$opt_with_other_libc
)
if
(
$opt_with_other_libc
)
{
{
...
@@ -314,7 +321,7 @@ if (!$opt_no_test)
...
@@ -314,7 +321,7 @@ if (!$opt_no_test)
}
}
if
(
$opt_innodb
)
if
(
$opt_innodb
)
{
{
$extra
.=
"
--innodb_data_file_path=ibdata1:100M
";
$extra
.=
"
--innodb_data_file_path=ibdata1:100M
:autoextend
";
}
}
safe_system
("
./bin/mysqld --no-defaults --basedir . --datadir ./data --skip-locking
$extra
>>
$log
2>&1 &
");
safe_system
("
./bin/mysqld --no-defaults --basedir . --datadir ./data --skip-locking
$extra
>>
$log
2>&1 &
");
sleep
(
2
);
sleep
(
2
);
...
...
Docs/manual.texi
View file @
1a1cafce
...
@@ -9934,7 +9934,9 @@ Error in accept: Protocol error
...
@@ -9934,7 +9934,9 @@ Error in accept: Protocol error
@end example
@end example
You might try starting the server with the @code{--set-variable back_log=50}
You might try starting the server with the @code{--set-variable back_log=50}
option as a workaround for this. @xref{Command-line options}.
option as a workaround for this. Please note that @code{--set-variable} is
deprecated since @strong{MySQL 4.0}, just use @code{--back_log=50} instead.
@xref{Command-line options}.
If you are linking your own MySQL client, you might get the
If you are linking your own MySQL client, you might get the
following error when you try to execute it:
following error when you try to execute it:
...
@@ -14390,7 +14392,9 @@ Only use one thread (for debugging under Linux). @xref{Debugging server}.
...
@@ -14390,7 +14392,9 @@ Only use one thread (for debugging under Linux). @xref{Debugging server}.
Give a variable a value. @code{--help} lists variables. You can find a full
Give a variable a value. @code{--help} lists variables. You can find a full
description for all variables in the @code{SHOW VARIABLES} section in this
description for all variables in the @code{SHOW VARIABLES} section in this
manual. @xref{SHOW VARIABLES}. The tuning server parameters section includes
manual. @xref{SHOW VARIABLES}. The tuning server parameters section includes
information of how to optimise these. @xref{Server parameters}.
information of how to optimize these. Please note that @code{--set-variable}
is deprecated since @strong{MySQL 4.0}, just use @code{--var=option} instead.
@xref{Server parameters}.
In MySQL 4.0.2 one can set a variable directly with
In MySQL 4.0.2 one can set a variable directly with
@code{--variable-name=option} and @code{set-variable} is not anymore needed
@code{--variable-name=option} and @code{set-variable} is not anymore needed
...
@@ -14611,7 +14615,9 @@ This is equivalent to @code{--option=value} on the command-line.
...
@@ -14611,7 +14615,9 @@ This is equivalent to @code{--option=value} on the command-line.
@item set-variable = variable=value
@item set-variable = variable=value
This is equivalent to @code{--set-variable variable=value} on the command-line.
This is equivalent to @code{--set-variable variable=value} on the command-line.
This syntax must be used to set a @code{mysqld} variable.
This syntax must be used to set a @code{mysqld} variable. Please note that
@code{--set-variable} is deprecated since @strong{MySQL 4.0}, just use
@code{--variable=value} instead.
@end table
@end table
The @code{client} group allows you to specify options that apply to all
The @code{client} group allows you to specify options that apply to all
...
@@ -18164,8 +18170,10 @@ Output debug log. The @code{debug_options} string often is
...
@@ -18164,8 +18170,10 @@ Output debug log. The @code{debug_options} string often is
@item -? or --help
@item -? or --help
Display a help message and exit.
Display a help message and exit.
@item -O var=option, --set-variable var=option
@item -O var=option, --set-variable var=option
Set the value of a variable. The possible variables and their default values
Set the value of a variable. Please note that @code{--set-variable} is
for myisamchk can be examined with @code{myisamchk --help}:
deprecated since @strong{MySQL 4.0}, just use @code{--var=option} instead.
The possible variables and their default values for myisamchk can be examined
with @code{myisamchk --help}:
@multitable @columnfractions .20 .10
@multitable @columnfractions .20 .10
@item @strong{Variable} @tab @strong{Value}
@item @strong{Variable} @tab @strong{Value}
@item key_buffer_size @tab 523264
@item key_buffer_size @tab 523264
...
@@ -22104,6 +22112,8 @@ Don't write column names in results.
...
@@ -22104,6 +22112,8 @@ Don't write column names in results.
@cindex @code{set-variable}, @code{mysql} option
@cindex @code{set-variable}, @code{mysql} option
@item -O, --set-variable var=option
@item -O, --set-variable var=option
Give a variable a value. @code{--help} lists variables.
Give a variable a value. @code{--help} lists variables.
Please note that @code{--set-variable} is deprecated since
@strong{MySQL 4.0}, just use @code{--var=option} instead.
@cindex @code{one-database}, @code{mysql} option
@cindex @code{one-database}, @code{mysql} option
@item -o, --one-database
@item -o, --one-database
...
@@ -22181,7 +22191,8 @@ Wait and retry if connection is down instead of aborting.
...
@@ -22181,7 +22191,8 @@ Wait and retry if connection is down instead of aborting.
@end table
@end table
You can also set the following variables with @code{-O} or
You can also set the following variables with @code{-O} or
@code{--set-variable}:
@code{--set-variable}; please note that @code{--set-variable} is
deprecated since @strong{MySQL 4.0}, just use @code{--var=option} instead:
@cindex timeout, @code{connect_timeout} variable
@cindex timeout, @code{connect_timeout} variable
@cindex @code{connect_timeout} variable
@cindex @code{connect_timeout} variable
...
@@ -22874,6 +22885,8 @@ The MySQL user name to use when connecting to the server. The
...
@@ -22874,6 +22885,8 @@ The MySQL user name to use when connecting to the server. The
default value is your Unix login name.
default value is your Unix login name.
@item -O var=option, --set-variable var=option
@item -O var=option, --set-variable var=option
Set the value of a variable. The possible variables are listed below.
Set the value of a variable. The possible variables are listed below.
Please note that @code{--set-variable} is deprecated since
@strong{MySQL 4.0}, just use @code{--var=option} instead.
@item -v, --verbose
@item -v, --verbose
Verbose mode. Print out more information on what the program does.
Verbose mode. Print out more information on what the program does.
@item -V, --version
@item -V, --version
...
@@ -27396,6 +27409,9 @@ thread_stack current value: 131072
...
@@ -27396,6 +27409,9 @@ thread_stack current value: 131072
wait_timeout current value: 28800
wait_timeout current value: 28800
@end example
@end example
Please note that @code{--set-variable} is deprecated since
@strong{MySQL 4.0}, just use @code{--var=option} instead.
If there is a @code{mysqld} server currently running, you can see what
If there is a @code{mysqld} server currently running, you can see what
values it actually is using for the variables by executing this command:
values it actually is using for the variables by executing this command:
...
@@ -45679,7 +45695,7 @@ will be active.
...
@@ -45679,7 +45695,7 @@ will be active.
static char *server_args[] = @{
static char *server_args[] = @{
"this_program", /* this string is not used */
"this_program", /* this string is not used */
"--datadir=.",
"--datadir=.",
"--
set-variable=
key_buffer_size=32M"
"--key_buffer_size=32M"
@};
@};
static char *server_groups[] = @{
static char *server_groups[] = @{
"embedded",
"embedded",
...
@@ -47995,6 +48011,8 @@ use big packets so that you run out of memory.
...
@@ -47995,6 +48011,8 @@ use big packets so that you run out of memory.
If you are using the @code{mysql} client, you may specify a bigger
If you are using the @code{mysql} client, you may specify a bigger
buffer by starting the client with @code{mysql --set-variable=max_allowed_packet=8M}. Other clients have different methods to set this variable.
buffer by starting the client with @code{mysql --set-variable=max_allowed_packet=8M}. Other clients have different methods to set this variable.
Please note that @code{--set-variable} is deprecated since
@strong{MySQL 4.0}, just use @code{--max-allowed-packet=8M} instead.
You can use the option file to set @code{max_allowed_packet} to a larger
You can use the option file to set @code{max_allowed_packet} to a larger
size in @code{mysqld}. For example, if you are expecting to store the
size in @code{mysqld}. For example, if you are expecting to store the
...
@@ -50797,6 +50815,8 @@ each individual 4.0.x release.
...
@@ -50797,6 +50815,8 @@ each individual 4.0.x release.
@appendixsubsec Changes in release 4.0.5
@appendixsubsec Changes in release 4.0.5
@itemize
@itemize
@item
@item
Small code improvement in multi-table updates
@item
Fixed a newly introduced bug that caused @code{ORDER BY ... LIMIT #}
Fixed a newly introduced bug that caused @code{ORDER BY ... LIMIT #}
to not return all rows.
to not return all rows.
@item
@item
...
@@ -50826,6 +50846,12 @@ original @code{--ignore-spaces} in @code{mysqlclient}. (Both syntaxes will
...
@@ -50826,6 +50846,12 @@ original @code{--ignore-spaces} in @code{mysqlclient}. (Both syntaxes will
work).
work).
@item
@item
Don't require @code{UPDATE} privilege when using @code{REPLACE}.
Don't require @code{UPDATE} privilege when using @code{REPLACE}.
@item
Allow braces in joins in all positions. Formerly, things like
@code{SELECT * FROM (t2 LEFT JOIN t3 USING (a)), t1} worked, but
not @code{SELECT * FROM t1, (t2 LEFT JOIN t3 USING (a))}. Note that
braces are simply removed, they do not change the way the join is
executed.
@end itemize
@end itemize
@node News-4.0.4, News-4.0.3, News-4.0.5, News-4.0.x
@node News-4.0.4, News-4.0.3, News-4.0.5, News-4.0.x
...
@@ -51654,6 +51680,8 @@ not yet 100% confident in this code.
...
@@ -51654,6 +51680,8 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.54
@appendixsubsec Changes in release 3.23.54
@itemize
@itemize
@item
@item
Fixed a problem with BDB and @code{ALTER TABLE}.
@item
Fixed reference to freed memory when doing complicated @code{GROUP BY
Fixed reference to freed memory when doing complicated @code{GROUP BY
... ORDER BY} queries. Symptom was that @code{mysqld} died in function
... ORDER BY} queries. Symptom was that @code{mysqld} died in function
@code{send_fields}.
@code{send_fields}.
...
@@ -51689,8 +51717,6 @@ Small fix in @code{safe_mysqld} for some shells.
...
@@ -51689,8 +51717,6 @@ Small fix in @code{safe_mysqld} for some shells.
@item
@item
Fixed that @code{FLUSH STATUS} doesn't reset @code{Delayed_insert_threads}.
Fixed that @code{FLUSH STATUS} doesn't reset @code{Delayed_insert_threads}.
@item
@item
Fixed that @code{SHOW STATUS} doesn't reset @code{Delayed_insert_threads}.
@item
Fixed core dump bug when using the @code{BINARY} cast on a @code{NULL} value.
Fixed core dump bug when using the @code{BINARY} cast on a @code{NULL} value.
@item
@item
Fixed race condition when someone did a @code{GRANT} at the same time a new
Fixed race condition when someone did a @code{GRANT} at the same time a new
client/mysqlcheck.c
View file @
1a1cafce
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
#define CHECK_VERSION "2.4.
1
"
#define CHECK_VERSION "2.4.
2
"
#include "client_priv.h"
#include "client_priv.h"
#include <m_ctype.h>
#include <m_ctype.h>
...
@@ -463,7 +463,7 @@ static int handle_request_for_tables(char *tables, uint length)
...
@@ -463,7 +463,7 @@ static int handle_request_for_tables(char *tables, uint length)
if
(
!
(
query
=
(
char
*
)
my_malloc
((
sizeof
(
char
)
*
(
length
+
110
)),
MYF
(
MY_WME
))))
if
(
!
(
query
=
(
char
*
)
my_malloc
((
sizeof
(
char
)
*
(
length
+
110
)),
MYF
(
MY_WME
))))
return
1
;
return
1
;
sprintf
(
query
,
"%s TABLE
`%s`
%s"
,
op
,
tables
,
options
);
sprintf
(
query
,
"%s TABLE
%s
%s"
,
op
,
tables
,
options
);
if
(
mysql_query
(
sock
,
query
))
if
(
mysql_query
(
sock
,
query
))
{
{
sprintf
(
message
,
"when executing '%s TABLE `%s` %s"
,
op
,
tables
,
options
);
sprintf
(
message
,
"when executing '%s TABLE `%s` %s"
,
op
,
tables
,
options
);
...
@@ -493,12 +493,9 @@ static void print_result()
...
@@ -493,12 +493,9 @@ static void print_result()
if
(
status
)
if
(
status
)
{
{
if
(
found_error
)
if
(
found_error
&&
opt_auto_repair
&&
what_to_do
!=
DO_REPAIR
&&
{
if
(
what_to_do
!=
DO_REPAIR
&&
opt_auto_repair
&&
(
!
opt_fast
||
strcmp
(
row
[
3
],
"OK"
)))
(
!
opt_fast
||
strcmp
(
row
[
3
],
"OK"
)))
insert_dynamic
(
&
tables4repair
,
row
[
0
]);
insert_dynamic
(
&
tables4repair
,
prev
);
}
found_error
=
0
;
found_error
=
0
;
if
(
opt_silent
)
if
(
opt_silent
)
continue
;
continue
;
...
@@ -515,6 +512,9 @@ static void print_result()
...
@@ -515,6 +512,9 @@ static void print_result()
strmov
(
prev
,
row
[
0
]);
strmov
(
prev
,
row
[
0
]);
putchar
(
'\n'
);
putchar
(
'\n'
);
}
}
if
(
found_error
&&
opt_auto_repair
&&
what_to_do
!=
DO_REPAIR
&&
(
!
opt_fast
||
strcmp
(
row
[
3
],
"OK"
)))
insert_dynamic
(
&
tables4repair
,
prev
);
mysql_free_result
(
res
);
mysql_free_result
(
res
);
}
}
...
...
innobase/pars/lexyy.c
View file @
1a1cafce
...
@@ -4,6 +4,8 @@
...
@@ -4,6 +4,8 @@
* $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
* $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
*/
*/
#include "univ.i"
#define FLEX_SCANNER
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
#define YY_FLEX_MINOR_VERSION 5
...
@@ -607,13 +609,18 @@ How to make the InnoDB parser and lexer C files:
...
@@ -607,13 +609,18 @@ How to make the InnoDB parser and lexer C files:
6. Remove the #include of unistd.h from about line 2500 of lexyy.c
6. Remove the #include of unistd.h from about line 2500 of lexyy.c
7. Move #include <math.h> in pars0grm.c after #include "univ.i" to remove
a large file compilation error on AIX.
8. Move #include "univ.i" in lexyy.c to the file start to remove a large
file compilation error on AIX.
These instructions seem to work at least with bison-1.28 and flex-2.5.4 on
These instructions seem to work at least with bison-1.28 and flex-2.5.4 on
Linux.
Linux.
*******************************************************/
*******************************************************/
#line 36 "pars0lex.l"
#line 36 "pars0lex.l"
#define YYSTYPE que_node_t*
#define YYSTYPE que_node_t*
#include "univ.i"
#include "pars0pars.h"
#include "pars0pars.h"
#include "pars0grm.h"
#include "pars0grm.h"
#include "pars0sym.h"
#include "pars0sym.h"
...
...
innobase/pars/pars0grm.c
View file @
1a1cafce
...
@@ -102,6 +102,8 @@ que_node_t */
...
@@ -102,6 +102,8 @@ que_node_t */
#include "que0que.h"
#include "que0que.h"
#include "row0sel.h"
#include "row0sel.h"
#include <math.h>
#define YYSTYPE que_node_t*
#define YYSTYPE que_node_t*
/* #define __STDC__ */
/* #define __STDC__ */
...
...
libmysqld/lib_sql.cc
View file @
1a1cafce
...
@@ -107,6 +107,7 @@ void start_embedded_conn1(NET * net)
...
@@ -107,6 +107,7 @@ void start_embedded_conn1(NET * net)
thd
->
command
=
COM_SLEEP
;
thd
->
command
=
COM_SLEEP
;
thd
->
version
=
refresh_version
;
thd
->
version
=
refresh_version
;
thd
->
set_time
();
thd
->
set_time
();
bzero
(
thd
->
scramble
,
sizeof
(
thd
->
scramble
));
init_sql_alloc
(
&
thd
->
mem_root
,
8192
,
8192
);
init_sql_alloc
(
&
thd
->
mem_root
,
8192
,
8192
);
check_connections1
(
thd
);
check_connections1
(
thd
);
...
...
myisam/ft_boolean_search.c
View file @
1a1cafce
...
@@ -202,7 +202,8 @@ static void _ftb_init_index_search(FT_INFO *ftb)
...
@@ -202,7 +202,8 @@ static void _ftb_init_index_search(FT_INFO *ftb)
MI_KEYDEF
*
keyinfo
;
MI_KEYDEF
*
keyinfo
;
my_off_t
keyroot
;
my_off_t
keyroot
;
if
(
ftb
->
state
!=
READY
||
ftb
->
keynr
==
NO_SUCH_KEY
)
if
((
ftb
->
state
!=
READY
&&
ftb
->
state
!=
INDEX_DONE
)
||
ftb
->
keynr
==
NO_SUCH_KEY
)
return
;
return
;
ftb
->
state
=
INDEX_SEARCH
;
ftb
->
state
=
INDEX_SEARCH
;
...
...
myisam/ft_nlq_search.c
View file @
1a1cafce
...
@@ -79,6 +79,8 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
...
@@ -79,6 +79,8 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
#error
#error
#endif
#endif
DBUG_ENTER
(
"walk_and_match"
);
word
->
weight
=
LWS_FOR_QUERY
;
word
->
weight
=
LWS_FOR_QUERY
;
keylen
=
_ft_make_key
(
aio
->
info
,
aio
->
keynr
,(
char
*
)
aio
->
keybuff
,
word
,
0
);
keylen
=
_ft_make_key
(
aio
->
info
,
aio
->
keynr
,(
char
*
)
aio
->
keybuff
,
word
,
0
);
...
@@ -112,7 +114,7 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
...
@@ -112,7 +114,7 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
#else
#else
#error
#error
#endif
#endif
if
(
tmp_weight
==
0
)
return
doc_cnt
;
/* stopword, doc_cnt should be 0 */
if
(
tmp_weight
==
0
)
DBUG_RETURN
(
doc_cnt
)
;
/* stopword, doc_cnt should be 0 */
#ifdef EVAL_RUN
#ifdef EVAL_RUN
cnt
=*
(
byte
*
)(
aio
->
info
->
lastkey
+
keylen
);
cnt
=*
(
byte
*
)(
aio
->
info
->
lastkey
+
keylen
);
...
@@ -122,7 +124,7 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
...
@@ -122,7 +124,7 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
/* saving document matched into dtree */
/* saving document matched into dtree */
if
(
!
(
selem
=
tree_insert
(
&
aio
->
dtree
,
&
sdoc
,
0
,
aio
->
dtree
.
custom_arg
)))
if
(
!
(
selem
=
tree_insert
(
&
aio
->
dtree
,
&
sdoc
,
0
,
aio
->
dtree
.
custom_arg
)))
return
1
;
DBUG_RETURN
(
1
)
;
sptr
=
(
FT_SUPERDOC
*
)
ELEMENT_KEY
((
&
aio
->
dtree
),
selem
);
sptr
=
(
FT_SUPERDOC
*
)
ELEMENT_KEY
((
&
aio
->
dtree
),
selem
);
...
@@ -153,21 +155,22 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
...
@@ -153,21 +155,22 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
if
(
doc_cnt
)
if
(
doc_cnt
)
{
{
word
->
weight
*=
GWS_IN_USE
;
word
->
weight
*=
GWS_IN_USE
;
if
(
word
->
weight
<
0
)
if
(
word
->
weight
<
0
)
word
->
weight
=
0
;
word
->
weight
=
0
;
}
}
return
0
;
DBUG_RETURN
(
0
)
;
}
}
static
int
walk_and_copy
(
FT_SUPERDOC
*
from
,
static
int
walk_and_copy
(
FT_SUPERDOC
*
from
,
uint32
count
__attribute__
((
unused
)),
FT_DOC
**
to
)
uint32
count
__attribute__
((
unused
)),
FT_DOC
**
to
)
{
{
DBUG_ENTER
(
"walk_and_copy"
);
from
->
doc
.
weight
+=
from
->
tmp_weight
*
from
->
word_ptr
->
weight
;
from
->
doc
.
weight
+=
from
->
tmp_weight
*
from
->
word_ptr
->
weight
;
(
*
to
)
->
dpos
=
from
->
doc
.
dpos
;
(
*
to
)
->
dpos
=
from
->
doc
.
dpos
;
(
*
to
)
->
weight
=
from
->
doc
.
weight
;
(
*
to
)
->
weight
=
from
->
doc
.
weight
;
(
*
to
)
++
;
(
*
to
)
++
;
return
0
;
DBUG_RETURN
(
0
)
;
}
}
...
@@ -185,12 +188,13 @@ FT_INFO *ft_init_nlq_search(MI_INFO *info, uint keynr, byte *query,
...
@@ -185,12 +188,13 @@ FT_INFO *ft_init_nlq_search(MI_INFO *info, uint keynr, byte *query,
FT_DOC
*
dptr
;
FT_DOC
*
dptr
;
FT_INFO
*
dlist
=
NULL
;
FT_INFO
*
dlist
=
NULL
;
my_off_t
saved_lastpos
=
info
->
lastpos
;
my_off_t
saved_lastpos
=
info
->
lastpos
;
DBUG_ENTER
(
"ft_init_nlq_search"
);
/* black magic ON */
/* black magic ON */
if
((
int
)
(
keynr
=
_mi_check_index
(
info
,
keynr
))
<
0
)
if
((
int
)
(
keynr
=
_mi_check_index
(
info
,
keynr
))
<
0
)
return
NULL
;
DBUG_RETURN
(
NULL
)
;
if
(
_mi_readinfo
(
info
,
F_RDLCK
,
1
))
if
(
_mi_readinfo
(
info
,
F_RDLCK
,
1
))
return
NULL
;
DBUG_RETURN
(
NULL
)
;
/* black magic OFF */
/* black magic OFF */
aio
.
info
=
info
;
aio
.
info
=
info
;
...
@@ -237,7 +241,7 @@ err2:
...
@@ -237,7 +241,7 @@ err2:
err:
err:
info
->
lastpos
=
saved_lastpos
;
info
->
lastpos
=
saved_lastpos
;
return
dlist
;
DBUG_RETURN
(
dlist
)
;
}
}
...
...
myisam/ft_parser.c
View file @
1a1cafce
...
@@ -190,6 +190,7 @@ byte ft_simple_get_word(byte **start, byte *end, FT_WORD *word)
...
@@ -190,6 +190,7 @@ byte ft_simple_get_word(byte **start, byte *end, FT_WORD *word)
{
{
byte
*
doc
=*
start
;
byte
*
doc
=*
start
;
int
mwc
;
int
mwc
;
DBUG_ENTER
(
"ft_simple_get_word"
);
while
(
doc
<
end
)
while
(
doc
<
end
)
{
{
...
@@ -211,32 +212,35 @@ byte ft_simple_get_word(byte **start, byte *end, FT_WORD *word)
...
@@ -211,32 +212,35 @@ byte ft_simple_get_word(byte **start, byte *end, FT_WORD *word)
!
is_stopword
(
word
->
pos
,
word
->
len
))
!
is_stopword
(
word
->
pos
,
word
->
len
))
{
{
*
start
=
doc
;
*
start
=
doc
;
return
1
;
DBUG_RETURN
(
1
)
;
}
}
}
}
return
0
;
DBUG_RETURN
(
0
)
;
}
}
void
ft_parse_init
(
TREE
*
wtree
,
CHARSET_INFO
*
cs
)
void
ft_parse_init
(
TREE
*
wtree
,
CHARSET_INFO
*
cs
)
{
{
DBUG_ENTER
(
"ft_parse_init"
);
if
(
!
is_tree_inited
(
wtree
))
if
(
!
is_tree_inited
(
wtree
))
init_tree
(
wtree
,
0
,
0
,
sizeof
(
FT_WORD
),(
qsort_cmp2
)
&
FT_WORD_cmp
,
0
,
NULL
,
cs
);
init_tree
(
wtree
,
0
,
0
,
sizeof
(
FT_WORD
),(
qsort_cmp2
)
&
FT_WORD_cmp
,
0
,
NULL
,
cs
);
DBUG_VOID_RETURN
;
}
}
int
ft_parse
(
TREE
*
wtree
,
byte
*
doc
,
int
doclen
)
int
ft_parse
(
TREE
*
wtree
,
byte
*
doc
,
int
doclen
)
{
{
byte
*
end
=
doc
+
doclen
;
byte
*
end
=
doc
+
doclen
;
FT_WORD
w
;
FT_WORD
w
;
DBUG_ENTER
(
"ft_parse"
);
while
(
ft_simple_get_word
(
&
doc
,
end
,
&
w
))
while
(
ft_simple_get_word
(
&
doc
,
end
,
&
w
))
{
{
if
(
!
tree_insert
(
wtree
,
&
w
,
0
,
wtree
->
custom_arg
))
if
(
!
tree_insert
(
wtree
,
&
w
,
0
,
wtree
->
custom_arg
))
goto
err
;
goto
err
;
}
}
return
0
;
DBUG_RETURN
(
0
)
;
err:
err:
delete_tree
(
wtree
);
delete_tree
(
wtree
);
return
1
;
DBUG_RETURN
(
1
)
;
}
}
myisam/ftdefs.h
View file @
1a1cafce
...
@@ -78,7 +78,7 @@ extern ulong collstat;
...
@@ -78,7 +78,7 @@ extern ulong collstat;
/* Mysterious, but w/o (double) GWS_IDF performs better :-o */
/* Mysterious, but w/o (double) GWS_IDF performs better :-o */
#define GWS_IDF log(aio->info->state->records/doc_cnt)
#define GWS_IDF log(aio->info->state->records/doc_cnt)
#define GWS_IDF1 log((double)aio->info->state->records/doc_cnt)
#define GWS_IDF1 log((double)aio->info->state->records/doc_cnt)
#define GWS_PROB
log(((double)(aio->info->state->records-doc_cnt))/doc_cnt
)
#define GWS_PROB
((aio->info->state->records > doc_cnt) ? log(((double)(aio->info->state->records-doc_cnt))/doc_cnt) : 0
)
#define GWS_FREQ (1.0/doc_cnt)
#define GWS_FREQ (1.0/doc_cnt)
#define GWS_SQUARED pow(log((double)aio->info->state->records/doc_cnt),2)
#define GWS_SQUARED pow(log((double)aio->info->state->records/doc_cnt),2)
#define GWS_CUBIC pow(log((double)aio->info->state->records/doc_cnt),3)
#define GWS_CUBIC pow(log((double)aio->info->state->records/doc_cnt),3)
...
...
myisam/mi_create.c
View file @
1a1cafce
...
@@ -404,7 +404,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
...
@@ -404,7 +404,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
length
+=
key_length
;
length
+=
key_length
;
keydef
->
block_length
=
MI_BLOCK_SIZE
(
length
,
pointer
,
MI_MAX_KEYPTR_SIZE
);
keydef
->
block_length
=
MI_BLOCK_SIZE
(
length
,
pointer
,
MI_MAX_KEYPTR_SIZE
);
if
(
keydef
->
block_length
>
MI_MAX_KEY_BLOCK_LENGTH
||
if
(
keydef
->
block_length
>
MI_MAX_KEY_BLOCK_LENGTH
||
length
>
MI_MAX_KEY_LENGTH
)
length
>
=
MI_MAX_KEY_BUFF
)
{
{
my_errno
=
HA_WRONG_CREATE_OPTION
;
my_errno
=
HA_WRONG_CREATE_OPTION
;
goto
err
;
goto
err
;
...
...
myisam/mi_delete_all.c
View file @
1a1cafce
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/* Remove all rows from a MyISAM table */
/* Remove all rows from a MyISAM table */
/* This
only clears the status information and truncates the data file
*/
/* This
clears the status information and truncates files
*/
#include "myisamdef.h"
#include "myisamdef.h"
...
@@ -49,14 +49,15 @@ int mi_delete_all_rows(MI_INFO *info)
...
@@ -49,14 +49,15 @@ int mi_delete_all_rows(MI_INFO *info)
state
->
key_root
[
i
]
=
HA_OFFSET_ERROR
;
state
->
key_root
[
i
]
=
HA_OFFSET_ERROR
;
myisam_log_command
(
MI_LOG_DELETE_ALL
,
info
,(
byte
*
)
0
,
0
,
0
);
myisam_log_command
(
MI_LOG_DELETE_ALL
,
info
,(
byte
*
)
0
,
0
,
0
);
VOID
(
_mi_writeinfo
(
info
,
WRITEINFO_UPDATE_KEYFILE
));
if
(
my_chsize
(
info
->
dfile
,
0
,
0
,
MYF
(
MY_WME
)))
goto
err
;
/*
/*
If we are using delayed keys or if the user has done changes to the tables
If we are using delayed keys or if the user has done changes to the tables
since it was locked then there may be key blocks in the key cache
since it was locked then there may be key blocks in the key cache
*/
*/
flush_key_blocks
(
share
->
kfile
,
FLUSH_IGNORE_CHANGED
);
flush_key_blocks
(
share
->
kfile
,
FLUSH_IGNORE_CHANGED
);
if
(
my_chsize
(
info
->
dfile
,
0
,
0
,
MYF
(
MY_WME
))
||
my_chsize
(
share
->
kfile
,
share
->
base
.
keystart
,
0
,
MYF
(
MY_WME
))
)
goto
err
;
VOID
(
_mi_writeinfo
(
info
,
WRITEINFO_UPDATE_KEYFILE
));
allow_break
();
/* Allow SIGHUP & SIGINT */
allow_break
();
/* Allow SIGHUP & SIGINT */
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
...
...
mysql-test/t/bdb-crash.test
View file @
1a1cafce
--
source
include
/
have_bdb
.
inc
--
source
include
/
have_bdb
.
inc
# test for bug reported by Mark Steele
# test for bug reported by Mark Steele
drop
table
if
exists
t1
;
drop
table
if
exists
t1
;
...
...
mysys/my_init.c
View file @
1a1cafce
...
@@ -217,6 +217,10 @@ static void my_win_init(void)
...
@@ -217,6 +217,10 @@ static void my_win_init(void)
setlocale
(
LC_CTYPE
,
""
);
/* To get right sortorder */
setlocale
(
LC_CTYPE
,
""
);
/* To get right sortorder */
/* Clear the OS system variable TZ and avoid the 100% CPU usage */
_putenv
(
"TZ="
);
_tzset
();
/* apre la chiave HKEY_LOCAL_MACHINES\software\MySQL */
/* apre la chiave HKEY_LOCAL_MACHINES\software\MySQL */
if
(
RegOpenKeyEx
(
HKEY_LOCAL_MACHINE
,(
LPCTSTR
)
targetKey
,
0
,
if
(
RegOpenKeyEx
(
HKEY_LOCAL_MACHINE
,(
LPCTSTR
)
targetKey
,
0
,
KEY_READ
,
&
hSoftMysql
)
!=
ERROR_SUCCESS
)
KEY_READ
,
&
hSoftMysql
)
!=
ERROR_SUCCESS
)
...
@@ -240,7 +244,7 @@ static void my_win_init(void)
...
@@ -240,7 +244,7 @@ static void my_win_init(void)
/* Inserisce i dati come variabili d'ambiente */
/* Inserisce i dati come variabili d'ambiente */
my_env
=
strdup
(
EnvString
);
/* variable for putenv must be allocated ! */
my_env
=
strdup
(
EnvString
);
/* variable for putenv must be allocated ! */
putenv
(
EnvString
)
;
putenv
(
my_env
)
;
dimNameValueBuffer
=
dimName
;
dimNameValueBuffer
=
dimName
;
dimDataValueBuffer
=
dimData
;
dimDataValueBuffer
=
dimData
;
...
...
scripts/mysql_convert_table_format.sh
View file @
1a1cafce
...
@@ -64,7 +64,7 @@ foreach $table (@ARGV)
...
@@ -64,7 +64,7 @@ foreach $table (@ARGV)
{
{
if
(
uc
(
$row
->[1]
)
eq uc
(
$opt_type
))
if
(
uc
(
$row
->[1]
)
eq uc
(
$opt_type
))
{
{
print
"
$table
is alread of type
$opt_type
; Ignored
\n
"
;
print
"
$table
is alread
y
of type
$opt_type
; Ignored
\n
"
;
next
;
next
;
}
}
}
}
...
...
scripts/mysqld_multi.sh
View file @
1a1cafce
...
@@ -4,7 +4,7 @@ use Getopt::Long;
...
@@ -4,7 +4,7 @@ use Getopt::Long;
use POSIX qw
(
strftime
)
;
use POSIX qw
(
strftime
)
;
$|
=
1
;
$|
=
1
;
$VER
=
"2.
3
"
;
$VER
=
"2.
4
"
;
$opt_config_file
=
undef
()
;
$opt_config_file
=
undef
()
;
$opt_example
=
0
;
$opt_example
=
0
;
...
@@ -508,8 +508,8 @@ sub example
...
@@ -508,8 +508,8 @@ sub example
[mysqld_multi]
[mysqld_multi]
mysqld = @bindir@/mysqld_safe
mysqld = @bindir@/mysqld_safe
mysqladmin = @bindir@/mysqladmin
mysqladmin = @bindir@/mysqladmin
user =
multi_admin
user =
root
password =
multipass
password =
your_password
[mysqld2]
[mysqld2]
socket = /tmp/mysql.sock2
socket = /tmp/mysql.sock2
...
...
scripts/mysqlhotcopy.sh
View file @
1a1cafce
...
@@ -559,15 +559,15 @@ sub copy_files {
...
@@ -559,15 +559,15 @@ sub copy_files {
my @cp
=
(
$method
)
;
my @cp
=
(
$method
)
;
# add option to preserve mod time etc of copied files
# add option to preserve mod time etc of copied files
# not critical, but nice to have
# not critical, but nice to have
push @cp,
"-p"
if
$^
O
=
~ m/^
(
solaris|linux|freebsd
)
$/
;
push @cp,
"-p"
if
$^
O
=
~ m/^
(
solaris|linux|freebsd
|darwin
)
$/
;
# add recursive option for scp
# add recursive option for scp
push @cp,
"-r"
if
$^
O
=
~ /m^
(
solaris|linux|freebsd
)
$/
&&
$method
=
~ /^scp
\b
/
;
push @cp,
"-r"
if
$^
O
=
~ /m^
(
solaris|linux|freebsd
|darwin
)
$/
&&
$method
=
~ /^scp
\b
/
;
my @non_raid
=
map
{
"'
$_
'"
}
grep
{
!
m:/
\d
{
2
}
/[^/]+
$:
}
@
$files
;
my @non_raid
=
map
{
"'
$_
'"
}
grep
{
!
m:/
\d
{
2
}
/[^/]+
$:
}
@
$files
;
# add files to copy and the destination directory
# add files to copy and the destination directory
+
safe_system
(
@cp, @non_raid,
"'
$target
'"
)
;
safe_system
(
@cp, @non_raid,
"'
$target
'"
)
;
foreach my
$rd
(
@
$raid_dirs
)
{
foreach my
$rd
(
@
$raid_dirs
)
{
my @raid
=
map
{
"'
$_
'"
}
grep
{
m:
$rd
/:
}
@
$files
;
my @raid
=
map
{
"'
$_
'"
}
grep
{
m:
$rd
/:
}
@
$files
;
...
...
sql/item_func.cc
View file @
1a1cafce
...
@@ -2180,8 +2180,9 @@ err:
...
@@ -2180,8 +2180,9 @@ err:
void
Item_func_match
::
init_search
(
bool
no_order
)
void
Item_func_match
::
init_search
(
bool
no_order
)
{
{
DBUG_ENTER
(
"Item_func_match::init_search"
);
if
(
ft_handler
)
if
(
ft_handler
)
return
;
DBUG_VOID_RETURN
;
if
(
key
==
NO_SUCH_KEY
)
if
(
key
==
NO_SUCH_KEY
)
concat
=
new
Item_func_concat_ws
(
new
Item_string
(
" "
,
1
,
concat
=
new
Item_func_concat_ws
(
new
Item_string
(
" "
,
1
,
...
@@ -2194,7 +2195,7 @@ void Item_func_match::init_search(bool no_order)
...
@@ -2194,7 +2195,7 @@ void Item_func_match::init_search(bool no_order)
master
->
init_search
(
no_order
);
master
->
init_search
(
no_order
);
ft_handler
=
master
->
ft_handler
;
ft_handler
=
master
->
ft_handler
;
join_key
=
master
->
join_key
;
join_key
=
master
->
join_key
;
return
;
DBUG_VOID_RETURN
;
}
}
String
*
ft_tmp
=
0
;
String
*
ft_tmp
=
0
;
...
@@ -2214,10 +2215,9 @@ void Item_func_match::init_search(bool no_order)
...
@@ -2214,10 +2215,9 @@ void Item_func_match::init_search(bool no_order)
join_key
&&
!
no_order
);
join_key
&&
!
no_order
);
if
(
join_key
)
if
(
join_key
)
{
table
->
file
->
ft_handler
=
ft_handler
;
table
->
file
->
ft_handler
=
ft_handler
;
return
;
}
DBUG_VOID_RETURN
;
}
}
...
@@ -2367,13 +2367,14 @@ bool Item_func_match::eq(const Item *item, bool binary_cmp) const
...
@@ -2367,13 +2367,14 @@ bool Item_func_match::eq(const Item *item, bool binary_cmp) const
double
Item_func_match
::
val
()
double
Item_func_match
::
val
()
{
{
DBUG_ENTER
(
"Item_func_match::val"
);
if
(
ft_handler
==
NULL
)
if
(
ft_handler
==
NULL
)
return
-
1.0
;
DBUG_RETURN
(
-
1.0
)
;
if
(
join_key
)
if
(
join_key
)
{
{
if
(
table
->
file
->
ft_handler
)
if
(
table
->
file
->
ft_handler
)
return
ft_handler
->
please
->
get_relevance
(
ft_handler
);
DBUG_RETURN
(
ft_handler
->
please
->
get_relevance
(
ft_handler
)
);
join_key
=
0
;
join_key
=
0
;
}
}
...
@@ -2381,12 +2382,12 @@ double Item_func_match::val()
...
@@ -2381,12 +2382,12 @@ double Item_func_match::val()
{
{
String
*
a
=
concat
->
val_str
(
&
value
);
String
*
a
=
concat
->
val_str
(
&
value
);
if
((
null_value
=
(
a
==
0
)))
if
((
null_value
=
(
a
==
0
)))
return
0
;
DBUG_RETURN
(
0
)
;
return
ft_handler
->
please
->
find_relevance
(
ft_handler
,
DBUG_RETURN
(
ft_handler
->
please
->
find_relevance
(
ft_handler
,
(
byte
*
)
a
->
ptr
(),
a
->
length
(
));
(
byte
*
)
a
->
ptr
(),
a
->
length
()
));
}
}
else
else
return
ft_handler
->
please
->
find_relevance
(
ft_handler
,
record
,
0
);
DBUG_RETURN
(
ft_handler
->
please
->
find_relevance
(
ft_handler
,
record
,
0
)
);
}
}
...
...
sql/log_event.h
View file @
1a1cafce
...
@@ -531,6 +531,35 @@ class Rand_log_event: public Log_event
...
@@ -531,6 +531,35 @@ class Rand_log_event: public Log_event
bool
is_valid
()
{
return
1
;
}
bool
is_valid
()
{
return
1
;
}
};
};
/*****************************************************************************
*
* Rand log event class
*
****************************************************************************/
class
Rand_log_event
:
public
Log_event
{
public:
ulonglong
seed1
;
ulonglong
seed2
;
#ifndef MYSQL_CLIENT
Rand_log_event
(
THD
*
thd_arg
,
ulonglong
seed1_arg
,
ulonglong
seed2_arg
)
:
Log_event
(
thd_arg
),
seed1
(
seed1_arg
),
seed2
(
seed2_arg
)
{}
void
pack_info
(
String
*
packet
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
char
*
last_db
=
0
);
#endif
Rand_log_event
(
const
char
*
buf
,
bool
old_format
);
~
Rand_log_event
()
{}
Log_event_type
get_type_code
()
{
return
RAND_EVENT
;}
int
get_data_size
()
{
return
sizeof
(
ulonglong
)
*
2
;
}
int
write_data
(
IO_CACHE
*
file
);
bool
is_valid
()
{
return
1
;
}
};
class
Stop_log_event
:
public
Log_event
class
Stop_log_event
:
public
Log_event
{
{
public:
public:
...
...
sql/mysqld.cc
View file @
1a1cafce
...
@@ -2416,6 +2416,7 @@ static void create_new_thread(THD *thd)
...
@@ -2416,6 +2416,7 @@ static void create_new_thread(THD *thd)
for
(
uint
i
=
0
;
i
<
8
;
i
++
)
// Generate password teststring
for
(
uint
i
=
0
;
i
<
8
;
i
++
)
// Generate password teststring
thd
->
scramble
[
i
]
=
(
char
)
(
rnd
(
&
sql_rand
)
*
94
+
33
);
thd
->
scramble
[
i
]
=
(
char
)
(
rnd
(
&
sql_rand
)
*
94
+
33
);
thd
->
scramble
[
8
]
=
0
;
thd
->
scramble
[
8
]
=
0
;
thd
->
real_id
=
pthread_self
();
// Keep purify happy
thd
->
real_id
=
pthread_self
();
// Keep purify happy
/* Start a new thread to handle connection */
/* Start a new thread to handle connection */
...
...
sql/nt_servc.cc
View file @
1a1cafce
...
@@ -426,7 +426,17 @@ BOOL NTService::SeekStatus(LPCSTR szInternName, int OperationType)
...
@@ -426,7 +426,17 @@ BOOL NTService::SeekStatus(LPCSTR szInternName, int OperationType)
// open a connection to the SCM
// open a connection to the SCM
if
(
!
(
scm
=
OpenSCManager
(
0
,
0
,
SC_MANAGER_CREATE_SERVICE
)))
if
(
!
(
scm
=
OpenSCManager
(
0
,
0
,
SC_MANAGER_CREATE_SERVICE
)))
printf
(
"There is a problem with the Service Control Manager!
\n
"
);
{
DWORD
ret_error
=
GetLastError
();
if
(
ret_error
==
ERROR_ACCESS_DENIED
)
{
printf
(
"Install/Remove of the Service Denied!
\n
"
);
if
(
!
is_super_user
())
printf
(
"That operation should be made by an user with Administrator privileges!
\n
"
);
}
else
printf
(
"There is a problem for to open the Service Control Manager!
\n
"
);
}
else
else
{
{
if
(
OperationType
==
1
)
if
(
OperationType
==
1
)
...
@@ -507,3 +517,82 @@ BOOL NTService::got_service_option(char **argv, char *service_option)
...
@@ -507,3 +517,82 @@ BOOL NTService::got_service_option(char **argv, char *service_option)
return
TRUE
;
return
TRUE
;
return
FALSE
;
return
FALSE
;
}
}
/* ------------------------------------------------------------------------
-------------------------------------------------------------------------- */
BOOL
NTService
::
is_super_user
()
{
HANDLE
hAccessToken
;
UCHAR
InfoBuffer
[
1024
];
PTOKEN_GROUPS
ptgGroups
=
(
PTOKEN_GROUPS
)
InfoBuffer
;
DWORD
dwInfoBufferSize
;
PSID
psidAdministrators
;
SID_IDENTIFIER_AUTHORITY
siaNtAuthority
=
SECURITY_NT_AUTHORITY
;
UINT
x
;
BOOL
ret_value
=
FALSE
;
if
(
!
OpenThreadToken
(
GetCurrentThread
(),
TOKEN_QUERY
,
TRUE
,
&
hAccessToken
))
{
if
(
GetLastError
()
!=
ERROR_NO_TOKEN
)
return
FALSE
;
if
(
!
OpenProcessToken
(
GetCurrentProcess
(),
TOKEN_QUERY
,
&
hAccessToken
))
return
FALSE
;
}
ret_value
=
GetTokenInformation
(
hAccessToken
,
TokenGroups
,
InfoBuffer
,
1024
,
&
dwInfoBufferSize
);
CloseHandle
(
hAccessToken
);
if
(
!
ret_value
)
return
FALSE
;
if
(
!
AllocateAndInitializeSid
(
&
siaNtAuthority
,
2
,
SECURITY_BUILTIN_DOMAIN_RID
,
DOMAIN_ALIAS_RID_ADMINS
,
0
,
0
,
0
,
0
,
0
,
0
,
&
psidAdministrators
))
return
FALSE
;
ret_value
=
FALSE
;
for
(
x
=
0
;
x
<
ptgGroups
->
GroupCount
;
x
++
)
{
if
(
EqualSid
(
psidAdministrators
,
ptgGroups
->
Groups
[
x
].
Sid
)
)
{
ret_value
=
TRUE
;
break
;
}
}
FreeSid
(
psidAdministrators
);
return
ret_value
;
}
/* ------------------------------------------------------------------------
-------------------------------------------------------------------------- */
BOOL
NTService
::
IsService
(
LPCSTR
ServiceName
)
{
BOOL
ret_value
=
FALSE
;
SC_HANDLE
service
,
scm
;
if
(
scm
=
OpenSCManager
(
0
,
0
,
SC_MANAGER_ENUMERATE_SERVICE
))
{
if
((
service
=
OpenService
(
scm
,
ServiceName
,
SERVICE_ALL_ACCESS
)))
{
ret_value
=
TRUE
;
CloseServiceHandle
(
service
);
}
CloseServiceHandle
(
scm
);
}
return
ret_value
;
}
/* ------------------------------------------------------------------------
-------------------------------------------------------------------------- */
BOOL
NTService
::
got_service_option
(
char
**
argv
,
char
*
service_option
)
{
char
*
option
;
for
(
option
=
argv
[
1
];
*
option
;
option
++
)
if
(
!
strcmp
(
option
,
service_option
))
return
TRUE
;
return
FALSE
;
}
sql/nt_servc.h
View file @
1a1cafce
...
@@ -54,7 +54,7 @@ class NTService
...
@@ -54,7 +54,7 @@ class NTService
BOOL
Remove
(
LPCSTR
szInternName
);
BOOL
Remove
(
LPCSTR
szInternName
);
BOOL
IsService
(
LPCSTR
ServiceName
);
BOOL
IsService
(
LPCSTR
ServiceName
);
BOOL
got_service_option
(
char
**
argv
,
char
*
service_option
);
BOOL
got_service_option
(
char
**
argv
,
char
*
service_option
);
BOOL
is_super_user
();
void
Stop
(
void
);
//to be called from app. to stop service
void
Stop
(
void
);
//to be called from app. to stop service
protected:
protected:
...
...
sql/sql_base.cc
View file @
1a1cafce
...
@@ -1689,6 +1689,7 @@ TABLE *open_temporary_table(THD *thd, const char *path, const char *db,
...
@@ -1689,6 +1689,7 @@ TABLE *open_temporary_table(THD *thd, const char *path, const char *db,
ha_open_options
,
ha_open_options
,
tmp_table
))
tmp_table
))
{
{
my_free
((
char
*
)
tmp_table
,
MYF
(
0
));
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
}
}
...
...
sql/sql_class.h
View file @
1a1cafce
...
@@ -499,8 +499,7 @@ public:
...
@@ -499,8 +499,7 @@ public:
uint8
query_cache_type
;
// type of query cache processing
uint8
query_cache_type
;
// type of query cache processing
bool
slave_thread
;
bool
slave_thread
;
bool
set_query_id
,
locked
,
count_cuted_fields
,
some_tables_deleted
;
bool
set_query_id
,
locked
,
count_cuted_fields
,
some_tables_deleted
;
bool
no_errors
,
allow_sum_func
,
password
;
bool
no_errors
,
allow_sum_func
,
password
,
fatal_error
;
bool
fatal_error
;
bool
query_start_used
,
last_insert_id_used
,
insert_id_used
,
rand_used
;
bool
query_start_used
,
last_insert_id_used
,
insert_id_used
,
rand_used
;
ulonglong
rand_saved_seed1
,
rand_saved_seed2
;
ulonglong
rand_saved_seed1
,
rand_saved_seed2
;
bool
system_thread
,
in_lock_tables
,
global_read_lock
;
bool
system_thread
,
in_lock_tables
,
global_read_lock
;
...
...
sql/sql_table.cc
View file @
1a1cafce
...
@@ -2023,16 +2023,24 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
...
@@ -2023,16 +2023,24 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
#ifdef HAVE_BERKELEY_DB
#ifdef HAVE_BERKELEY_DB
if
(
old_db_type
==
DB_TYPE_BERKELEY_DB
)
if
(
old_db_type
==
DB_TYPE_BERKELEY_DB
)
{
{
(
void
)
berkeley_flush_logs
();
/*
/*
For the alter table to be properly flushed to the logs, we
For the alter table to be properly flushed to the logs, we
have to open the new table. If not, we get a problem on server
have to open the new table. If not, we get a problem on server
shutdown.
shutdown.
*/
*/
if
(
!
open_tables
(
thd
,
table_list
))
// Should always succeed
char
path
[
FN_REFLEN
];
(
void
)
sprintf
(
path
,
"%s/%s/%s"
,
mysql_data_home
,
new_db
,
table_name
);
fn_format
(
path
,
path
,
""
,
""
,
4
);
table
=
open_temporary_table
(
thd
,
path
,
new_db
,
tmp_name
,
0
);
if
(
table
)
{
{
close_thread_table
(
thd
,
&
table_list
->
table
);
intern_close_table
(
table
);
my_free
((
char
*
)
table
,
MYF
(
0
));
}
}
else
sql_print_error
(
"Warning: Could not open BDB table %s.%s after rename
\n
"
,
new_db
,
table_name
);
(
void
)
berkeley_flush_logs
();
}
}
#endif
#endif
table_list
->
table
=
0
;
// For query cache
table_list
->
table
=
0
;
// For query cache
...
...
sql/sql_update.cc
View file @
1a1cafce
...
@@ -445,7 +445,7 @@ multi_update::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
...
@@ -445,7 +445,7 @@ multi_update::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
else
else
*
int_ptr
++=
counter
;
*
int_ptr
++=
counter
;
}
}
if
(
!
num_updated
)
if
(
!
num_updated
--
)
{
{
net_printf
(
thd
,
ER_NOT_SUPPORTED_YET
,
"SET CLAUSE MUST CONTAIN TABLE.FIELD REFERENCE"
);
net_printf
(
thd
,
ER_NOT_SUPPORTED_YET
,
"SET CLAUSE MUST CONTAIN TABLE.FIELD REFERENCE"
);
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
...
@@ -455,11 +455,11 @@ multi_update::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
...
@@ -455,11 +455,11 @@ multi_update::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
Here, I have to allocate the array of temporary tables
Here, I have to allocate the array of temporary tables
I have to treat a case of num_updated=1 differently in send_data() method.
I have to treat a case of num_updated=1 differently in send_data() method.
*/
*/
if
(
num_updated
>
1
)
if
(
num_updated
)
{
{
tmp_tables
=
(
TABLE
**
)
sql_calloc
(
sizeof
(
TABLE
*
)
*
(
num_updated
-
1
)
);
tmp_tables
=
(
TABLE
**
)
sql_calloc
(
sizeof
(
TABLE
*
)
*
num_updated
);
infos
=
(
COPY_INFO
*
)
sql_calloc
(
sizeof
(
COPY_INFO
)
*
(
num_updated
-
1
)
);
infos
=
(
COPY_INFO
*
)
sql_calloc
(
sizeof
(
COPY_INFO
)
*
num_updated
);
fields_by_tables
=
(
List_item
**
)
sql_calloc
(
sizeof
(
List_item
*
)
*
num_updated
);
fields_by_tables
=
(
List_item
**
)
sql_calloc
(
sizeof
(
List_item
*
)
*
(
num_updated
+
1
)
);
unsigned
int
counter
;
unsigned
int
counter
;
List
<
Item
>
*
temp_fields
;
List
<
Item
>
*
temp_fields
;
for
(
table_ref
=
update_tables
,
counter
=
0
;
table_ref
;
table_ref
=
table_ref
->
next
)
for
(
table_ref
=
update_tables
,
counter
=
0
;
table_ref
;
table_ref
=
table_ref
->
next
)
...
@@ -555,7 +555,7 @@ multi_update::~multi_update()
...
@@ -555,7 +555,7 @@ multi_update::~multi_update()
table
->
time_stamp
=
save_time_stamps
[
counter
];
table
->
time_stamp
=
save_time_stamps
[
counter
];
}
}
if
(
tmp_tables
)
if
(
tmp_tables
)
for
(
uint
counter
=
0
;
counter
<
num_updated
-
1
;
counter
++
)
for
(
uint
counter
=
0
;
counter
<
num_updated
;
counter
++
)
if
(
tmp_tables
[
counter
])
if
(
tmp_tables
[
counter
])
free_tmp_table
(
thd
,
tmp_tables
[
counter
]);
free_tmp_table
(
thd
,
tmp_tables
[
counter
]);
}
}
...
@@ -567,7 +567,7 @@ bool multi_update::send_data(List<Item> &values)
...
@@ -567,7 +567,7 @@ bool multi_update::send_data(List<Item> &values)
for
(
uint
counter
=
0
;
counter
<
fields
.
elements
;
counter
++
)
for
(
uint
counter
=
0
;
counter
<
fields
.
elements
;
counter
++
)
real_values
.
pop
();
real_values
.
pop
();
// We have skipped fields ....
// We have skipped fields ....
if
(
num_updated
==
1
)
if
(
!
num_updated
)
{
{
for
(
table_being_updated
=
update_tables
;
for
(
table_being_updated
=
update_tables
;
table_being_updated
;
table_being_updated
;
...
@@ -688,7 +688,7 @@ void multi_update::send_error(uint errcode,const char *err)
...
@@ -688,7 +688,7 @@ void multi_update::send_error(uint errcode,const char *err)
if
((
table_being_updated
->
table
->
file
->
has_transactions
()
&&
if
((
table_being_updated
->
table
->
file
->
has_transactions
()
&&
table_being_updated
==
update_tables
)
||
!
not_trans_safe
)
table_being_updated
==
update_tables
)
||
!
not_trans_safe
)
ha_rollback_stmt
(
thd
);
ha_rollback_stmt
(
thd
);
else
if
(
do_update
&&
num_updated
>
1
)
else
if
(
do_update
&&
num_updated
)
VOID
(
do_updates
(
true
));
VOID
(
do_updates
(
true
));
}
}
...
@@ -775,7 +775,7 @@ bool multi_update::send_eof()
...
@@ -775,7 +775,7 @@ bool multi_update::send_eof()
thd
->
proc_info
=
"updating the reference tables"
;
thd
->
proc_info
=
"updating the reference tables"
;
/* Does updates for the last n - 1 tables, returns 0 if ok */
/* Does updates for the last n - 1 tables, returns 0 if ok */
int
error
=
(
num_updated
>
1
)
?
do_updates
(
false
)
:
0
;
/* do_updates returns 0 if success */
int
error
=
(
num_updated
)
?
do_updates
(
false
)
:
0
;
/* do_updates returns 0 if success */
/* reset used flags */
/* reset used flags */
#ifndef NOT_USED
#ifndef NOT_USED
...
...
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