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
21d4d7ec
Commit
21d4d7ec
authored
Jan 11, 2005
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge paul@bk-internal.mysql.com:/home/bk/mysql-5.0
into kite-hub.kitebird.com:/src/extern/MySQL/bk/mysql-5.0
parents
4bf86d9e
8c71efbc
Changes
20
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
226 additions
and
254 deletions
+226
-254
VC++Files/libmysqld/libmysqld.dsp
VC++Files/libmysqld/libmysqld.dsp
+1
-1
client/mysql.cc
client/mysql.cc
+11
-1
include/my_sys.h
include/my_sys.h
+2
-0
libmysqld/lib_sql.cc
libmysqld/lib_sql.cc
+3
-2
libmysqld/libmysqld.c
libmysqld/libmysqld.c
+3
-0
mysql-test/ndb/ndb_config_2_node.ini
mysql-test/ndb/ndb_config_2_node.ini
+3
-3
mysql-test/r/ctype_utf8.result
mysql-test/r/ctype_utf8.result
+12
-0
mysql-test/r/ps_7ndb.result
mysql-test/r/ps_7ndb.result
+9
-9
mysql-test/r/strict.result
mysql-test/r/strict.result
+2
-0
mysql-test/t/ctype_utf8.test
mysql-test/t/ctype_utf8.test
+9
-0
mysql-test/t/strict.test
mysql-test/t/strict.test
+0
-1
mysys/default.c
mysys/default.c
+38
-14
ndb/src/kernel/blocks/backup/Backup.cpp
ndb/src/kernel/blocks/backup/Backup.cpp
+5
-1
ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp
ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp
+27
-30
ndb/src/kernel/blocks/suma/Suma.cpp
ndb/src/kernel/blocks/suma/Suma.cpp
+4
-3
ndb/src/mgmsrv/InitConfigFileParser.cpp
ndb/src/mgmsrv/InitConfigFileParser.cpp
+10
-2
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+70
-175
sql/item_strfunc.cc
sql/item_strfunc.cc
+10
-5
sql/sql_insert.cc
sql/sql_insert.cc
+5
-5
sql/strfunc.cc
sql/strfunc.cc
+2
-2
No files found.
VC++Files/libmysqld/libmysqld.dsp
View file @
21d4d7ec
...
...
@@ -73,7 +73,7 @@ LINK32=xilink6.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBMYSQLD_EXPORTS" /YX /FD /GZ /c
# ADD CPP /nologo /MT /W3 /Z7 /Od /I "../include" /I "../libmysqld" /I "../sql" /I "../regex" /I "../bdb/build_win32" /I "../zlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "HAVE_BERKELEY_DB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "USE_TLS" /D "__WIN__" /FD /GZ /c
# ADD CPP /nologo /MT /W3 /Z7 /Od /I "../include" /I "../libmysqld" /I "../sql" /I "../regex" /I "../bdb/build_win32" /I "../zlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "
SAFEMALLOC" /D "
HAVE_BERKELEY_DB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "USE_TLS" /D "__WIN__" /FD /GZ /c
# SUBTRACT CPP /X /Fr
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
...
...
client/mysql.cc
View file @
21d4d7ec
...
...
@@ -330,6 +330,16 @@ static sig_handler mysql_end(int sig);
int
main
(
int
argc
,
char
*
argv
[])
{
char
buff
[
80
];
char
*
defaults
,
*
extra_defaults
;
char
*
emb_argv
[
3
];
int
emb_argc
=
1
;
emb_argv
[
0
]
=
argv
[
0
];
get_defaults_files
(
argc
,
argv
,
&
defaults
,
&
extra_defaults
);
if
(
defaults
)
emb_argv
[
emb_argc
++
]
=
defaults
;
if
(
extra_defaults
)
emb_argv
[
emb_argc
++
]
=
extra_defaults
;
MY_INIT
(
argv
[
0
]);
DBUG_ENTER
(
"main"
);
...
...
@@ -375,7 +385,7 @@ int main(int argc,char *argv[])
my_end
(
0
);
exit
(
1
);
}
if
(
mysql_server_init
(
0
,
NULL
,
(
char
**
)
server_default_groups
))
if
(
mysql_server_init
(
emb_argc
,
emb_argv
,
(
char
**
)
server_default_groups
))
{
free_defaults
(
defaults_argv
);
my_end
(
0
);
...
...
include/my_sys.h
View file @
21d4d7ec
...
...
@@ -769,6 +769,8 @@ extern void reset_root_defaults(MEM_ROOT *mem_root, uint block_size,
extern
char
*
strdup_root
(
MEM_ROOT
*
root
,
const
char
*
str
);
extern
char
*
strmake_root
(
MEM_ROOT
*
root
,
const
char
*
str
,
uint
len
);
extern
char
*
memdup_root
(
MEM_ROOT
*
root
,
const
char
*
str
,
uint
len
);
extern
void
get_defaults_files
(
int
argc
,
char
**
argv
,
char
**
defaults
,
char
**
extra_defaults
);
extern
int
load_defaults
(
const
char
*
conf_file
,
const
char
**
groups
,
int
*
argc
,
char
***
argv
);
extern
int
process_default_option_files
(
const
char
*
conf_file
,
...
...
libmysqld/lib_sql.cc
View file @
21d4d7ec
...
...
@@ -219,12 +219,13 @@ static my_bool emb_mysql_read_query_result(MYSQL *mysql)
static
int
emb_stmt_execute
(
MYSQL_STMT
*
stmt
)
{
DBUG_ENTER
(
"emb_stmt_execute"
);
char
header
[
4
];
int4store
(
header
,
stmt
->
stmt_id
);
THD
*
thd
=
(
THD
*
)
stmt
->
mysql
->
thd
;
thd
->
client_param_count
=
stmt
->
param_count
;
thd
->
client_params
=
stmt
->
params
;
if
(
emb_advanced_command
(
stmt
->
mysql
,
COM_EXECUTE
,
0
,
0
,
(
const
char
*
)
&
stmt
->
stmt_id
,
sizeof
(
stmt
->
stmt_id
),
1
)
||
header
,
sizeof
(
header
),
1
)
||
emb_mysql_read_query_result
(
stmt
->
mysql
))
{
NET
*
net
=
&
stmt
->
mysql
->
net
;
...
...
libmysqld/libmysqld.c
View file @
21d4d7ec
...
...
@@ -143,6 +143,9 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
db
?
db
:
"(Null)"
,
user
?
user
:
"(Null)"
));
if
(
!
host
||
!
host
[
0
])
host
=
mysql
->
options
.
host
;
if
(
mysql
->
options
.
methods_to_use
==
MYSQL_OPT_USE_REMOTE_CONNECTION
||
(
mysql
->
options
.
methods_to_use
==
MYSQL_OPT_GUESS_CONNECTION
&&
host
&&
*
host
&&
strcmp
(
host
,
LOCAL_HOST
)))
...
...
mysql-test/ndb/ndb_config_2_node.ini
View file @
21d4d7ec
...
...
@@ -9,13 +9,13 @@ DataDir= CHOOSE_FILESYSTEM
MaxNoOfOrderedIndexes
=
CHOOSE_MaxNoOfOrderedIndexes
[ndbd]
HostName
=
CHOOSE_HOSTNAME_1
HostName
=
CHOOSE_HOSTNAME_1
# hostname is a valid network adress
[ndbd]
HostName
=
CHOOSE_HOSTNAME_2
HostName
=
CHOOSE_HOSTNAME_2
# hostname is a valid network adress
[ndb_mgmd]
DataDir
=
CHOOSE_FILESYSTEM
DataDir
=
CHOOSE_FILESYSTEM
#
PortNumber
=
CHOOSE_PORT_MGM
[mysqld]
...
...
mysql-test/r/ctype_utf8.result
View file @
21d4d7ec
...
...
@@ -817,3 +817,15 @@ drop table t1;
select 'c' like '\_' as want0;
want0
0
create table t1 (id integer, a varchar(100) character set utf8 collate utf8_unicode_ci);
insert into t1 values (1, 'Test');
select * from t1 where soundex(a) = soundex('Test');
id a
1 Test
select * from t1 where soundex(a) = soundex('TEST');
id a
1 Test
select * from t1 where soundex(a) = soundex('test');
id a
1 Test
drop table t1;
mysql-test/r/ps_7ndb.result
View file @
21d4d7ec
...
...
@@ -70,7 +70,7 @@ def test t9 t9 c18 c18 1 4 1 Y 32768 0 63
def test t9 t9 c19 c19 1 1 1 Y 32768 0 63
def test t9 t9 c20 c20 254 1 1 Y 0 0 8
def test t9 t9 c21 c21 254 10 10 Y 0 0 8
def test t9 t9 c22 c22 25
4
30 30 Y 0 0 8
def test t9 t9 c22 c22 25
3
30 30 Y 0 0 8
def test t9 t9 c23 c23 252 255 8 Y 144 0 63
def test t9 t9 c24 c24 252 255 8 Y 16 0 8
def test t9 t9 c25 c25 252 65535 4 Y 144 0 63
...
...
@@ -1926,7 +1926,7 @@ def @arg28 253 8192 10 Y 0 31 8
def @arg29 253 8192 8 Y 128 31 63
def @arg30 253 8192 8 Y 0 31 8
def @arg31 253 8192 3 Y 0 31 8
def @arg32 253 8192 6 Y
128 31 63
def @arg32 253 8192 6 Y
0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1 1 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4,
...
...
@@ -2023,7 +2023,7 @@ def @arg28 253 8192 10 Y 0 31 8
def @arg29 253 8192 8 Y 128 31 63
def @arg30 253 8192 8 Y 0 31 8
def @arg31 253 8192 3 Y 0 31 8
def @arg32 253 8192 6 Y
128 31 63
def @arg32 253 8192 6 Y
0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1 1 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ;
...
...
@@ -2111,7 +2111,7 @@ def @arg28 253 8192 10 Y 0 31 8
def @arg29 253 8192 8 Y 128 31 63
def @arg30 253 8192 8 Y 0 31 8
def @arg31 253 8192 3 Y 0 31 8
def @arg32 253 8192 6 Y
128 31 63
def @arg32 253 8192 6 Y
0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1 1 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
...
...
@@ -2201,7 +2201,7 @@ def @arg28 253 8192 10 Y 0 31 8
def @arg29 253 8192 8 Y 128 31 63
def @arg30 253 8192 8 Y 0 31 8
def @arg31 253 8192 3 Y 0 31 8
def @arg32 253 8192 6 Y
128 31 63
def @arg32 253 8192 6 Y
0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1 1 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ;
...
...
mysql-test/r/strict.result
View file @
21d4d7ec
...
...
@@ -818,6 +818,8 @@ ERROR 01000: Data truncated for column 'col1' at row 1
INSERT INTO t1 (col2) VALUES ('hellobob');
ERROR 01000: Data truncated for column 'col2' at row 1
INSERT INTO t1 (col2) VALUES ('hello ');
Warnings:
Note 1265 Data truncated for column 'col2' at row 1
UPDATE t1 SET col1 ='hellobob' WHERE col1 ='he';
ERROR 01000: Data truncated for column 'col1' at row 2
UPDATE t1 SET col2 ='hellobob' WHERE col2 ='he';
...
...
mysql-test/t/ctype_utf8.test
View file @
21d4d7ec
...
...
@@ -666,3 +666,12 @@ drop table t1;
#
select
'c'
like
'\_'
as
want0
;
#
# Bug #7730 Server crash using soundex on an utf8 table
#
create
table
t1
(
id
integer
,
a
varchar
(
100
)
character
set
utf8
collate
utf8_unicode_ci
);
insert
into
t1
values
(
1
,
'Test'
);
select
*
from
t1
where
soundex
(
a
)
=
soundex
(
'Test'
);
select
*
from
t1
where
soundex
(
a
)
=
soundex
(
'TEST'
);
select
*
from
t1
where
soundex
(
a
)
=
soundex
(
'test'
);
drop
table
t1
;
mysql-test/t/strict.test
View file @
21d4d7ec
...
...
@@ -569,7 +569,6 @@ INSERT INTO t1 VALUES ('hello', 'hello'),('he', 'he'),('hello ', 'hello ');
INSERT
INTO
t1
(
col1
)
VALUES
(
'hellobob'
);
--
error
1265
INSERT
INTO
t1
(
col2
)
VALUES
(
'hellobob'
);
--
error
1265
INSERT
INTO
t1
(
col2
)
VALUES
(
'hello '
);
--
error
1265
UPDATE
t1
SET
col1
=
'hellobob'
WHERE
col1
=
'he'
;
...
...
mysys/default.c
View file @
21d4d7ec
...
...
@@ -112,20 +112,14 @@ static int search_files(const char *conf_file, int *argc, char ***argv,
DBUG_ENTER
(
"search_files"
);
/* Check if we want to force the use a specific default file */
forced_default_file
=
0
;
if
(
*
argc
>=
2
)
{
if
(
is_prefix
(
argv
[
0
][
1
],
"--defaults-file="
))
{
forced_default_file
=
strchr
(
argv
[
0
][
1
],
'='
)
+
1
;
(
*
args_used
)
++
;
}
else
if
(
is_prefix
(
argv
[
0
][
1
],
"--defaults-extra-file="
))
{
defaults_extra_file
=
strchr
(
argv
[
0
][
1
],
'='
)
+
1
;
(
*
args_used
)
++
;
}
}
get_defaults_files
(
*
argc
,
*
argv
,
(
char
**
)
&
forced_default_file
,
&
defaults_extra_file
);
if
(
forced_default_file
)
forced_default_file
=
strchr
(
forced_default_file
,
'='
)
+
1
;
if
(
defaults_extra_file
)
defaults_extra_file
=
strchr
(
defaults_extra_file
,
'='
)
+
1
;
args_used
+=
(
forced_default_file
?
1
:
0
)
+
(
defaults_extra_file
?
1
:
0
);
if
(
forced_default_file
)
{
...
...
@@ -261,6 +255,36 @@ static int handle_default_option(void *in_ctx, const char *group_name,
}
/*
Gets --defaults-file and --defaults-extra-file options from command line.
SYNOPSIS
get_defaults_files()
argc Pointer to argc of original program
argv Pointer to argv of original program
defaults --defaults-file option
extra_defaults --defaults-extra-file option
RETURN
defaults and extra_defaults will be set to appropriate items
of argv array, or to NULL if there are no such options
*/
void
get_defaults_files
(
int
argc
,
char
**
argv
,
char
**
defaults
,
char
**
extra_defaults
)
{
*
defaults
=
0
;
*
extra_defaults
=
0
;
if
(
argc
>=
2
)
{
if
(
is_prefix
(
argv
[
1
],
"--defaults-file="
))
*
defaults
=
argv
[
1
];
else
if
(
is_prefix
(
argv
[
1
],
"--defaults-extra-file="
))
*
extra_defaults
=
argv
[
1
];
}
}
/*
Read options from configurations files
...
...
ndb/src/kernel/blocks/backup/Backup.cpp
View file @
21d4d7ec
...
...
@@ -992,7 +992,11 @@ Backup::execUTIL_SEQUENCE_CONF(Signal* signal)
}
//if
ndbrequire
(
ptr
.
p
->
masterData
.
state
.
getState
()
==
DEFINING
);
ptr
.
p
->
backupId
=
conf
->
sequenceValue
[
0
];
{
Uint64
backupId
;
memcpy
(
&
backupId
,
conf
->
sequenceValue
,
8
);
ptr
.
p
->
backupId
=
(
Uint32
)
backupId
;
}
ptr
.
p
->
backupKey
[
0
]
=
(
getOwnNodeId
()
<<
16
)
|
(
ptr
.
p
->
backupId
&
0xFFFF
);
ptr
.
p
->
backupKey
[
1
]
=
NdbTick_CurrentMillisecond
();
...
...
ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp
View file @
21d4d7ec
...
...
@@ -27,6 +27,14 @@
#include <NdbThread.h>
#include <signaldata/FsOpenReq.hpp>
// use this to test broken pread code
//#define HAVE_BROKEN_PREAD
#ifdef HAVE_BROKEN_PREAD
#undef HAVE_PWRITE
#undef HAVE_PREAD
#endif
#if defined NDB_WIN32 || defined NDB_OSE || defined NDB_SOFTOSE
#else
// For readv and writev
...
...
@@ -379,9 +387,12 @@ AsyncFile::readBuffer(char * buf, size_t size, off_t offset){
if
(
dwSFP
!=
offset
)
{
return
GetLastError
();
}
#elif defined NDB_OSE || defined NDB_SOFTOSE
return_value
=
lseek
(
theFd
,
offset
,
SEEK_SET
);
if
(
return_value
!=
offset
)
{
#elif ! defined(HAVE_PREAD)
off_t
seek_val
;
while
((
seek_val
=
lseek
(
theFd
,
offset
,
SEEK_SET
))
==
(
off_t
)
-
1
&&
errno
==
EINTR
);
if
(
seek_val
==
(
off_t
)
-
1
)
{
return
errno
;
}
#endif
...
...
@@ -400,10 +411,10 @@ AsyncFile::readBuffer(char * buf, size_t size, off_t offset){
return
GetLastError
();
}
bytes_read
=
dwBytesRead
;
#elif
defined NDB_OSE || defined NDB_SOFTOSE
#elif
! defined(HAVE_PREAD)
return_value
=
::
read
(
theFd
,
buf
,
size
);
#else // UNIX
return_value
=
my_pread
(
theFd
,
buf
,
size
,
offset
,
0
);
return_value
=
::
pread
(
theFd
,
buf
,
size
,
offset
);
#endif
#ifndef NDB_WIN32
if
(
return_value
==
-
1
&&
errno
==
EINTR
)
{
...
...
@@ -453,7 +464,7 @@ AsyncFile::readReq( Request * request)
void
AsyncFile
::
readvReq
(
Request
*
request
)
{
#if
defined NDB_OSE || defined NDB_SOFTOSE
#if
! defined(HAVE_PREAD)
readReq
(
request
);
return
;
#elif defined NDB_WIN32
...
...
@@ -483,7 +494,7 @@ AsyncFile::readvReq( Request * request)
int
AsyncFile
::
extendfile
(
Request
*
request
)
{
#if
defined NDB_OSE || defined NDB_SOFTOSE
#if
! defined(HAVE_PWRITE)
// Find max size of this file in this request
int
maxOffset
=
0
;
int
maxSize
=
0
;
...
...
@@ -592,28 +603,14 @@ AsyncFile::writeBuffer(const char * buf, size_t size, off_t offset,
if
(
dwSFP
!=
offset
)
{
return
GetLastError
();
}
#elif defined NDB_OSE || defined NDB_SOFTOSE
return_value
=
lseek
(
theFd
,
offset
,
SEEK_SET
);
if
(
return_value
!=
offset
)
{
DEBUG
(
ndbout_c
(
"AsyncFile::writeReq, err1: return_value=%d, offset=%d
\n
"
,
return_value
,
chunk_offset
));
PRINT_ERRORANDFLAGS
(
0
);
if
(
errno
==
78
)
{
// Could not write beyond end of file, try to extend file
DEBUG
(
ndbout_c
(
"AsyncFile::writeReq, Extend. file! filename=
\"
%s
\"
\n
"
,
theFileName
.
c_str
()));
return_value
=
extendfile
(
request
);
if
(
return_value
==
-
1
)
{
return
errno
;
}
return_value
=
lseek
(
theFd
,
offset
,
SEEK_SET
);
if
(
return_value
!=
offset
)
{
#elif ! defined(HAVE_PWRITE)
off_t
seek_val
;
while
((
seek_val
=
lseek
(
theFd
,
offset
,
SEEK_SET
))
==
(
off_t
)
-
1
&&
errno
==
EINTR
);
if
(
seek_val
==
(
off_t
)
-
1
)
{
return
errno
;
}
}
else
{
return
errno
;
}
}
#endif
while
(
size
>
0
)
{
...
...
@@ -634,10 +631,10 @@ AsyncFile::writeBuffer(const char * buf, size_t size, off_t offset,
DEBUG
(
ndbout_c
(
"Warning partial write %d != %d"
,
bytes_written
,
bytes_to_write
));
}
#elif
defined NDB_OSE || defined NDB_SOFTOSE
#elif
! defined(HAVE_PWRITE)
return_value
=
::
write
(
theFd
,
buf
,
bytes_to_write
);
#else // UNIX
return_value
=
my_pwrite
(
theFd
,
buf
,
bytes_to_write
,
offset
,
0
);
return_value
=
::
pwrite
(
theFd
,
buf
,
bytes_to_write
,
offset
);
#endif
#ifndef NDB_WIN32
if
(
return_value
==
-
1
&&
errno
==
EINTR
)
{
...
...
ndb/src/kernel/blocks/suma/Suma.cpp
View file @
21d4d7ec
...
...
@@ -824,7 +824,8 @@ Suma::execUTIL_SEQUENCE_CONF(Signal* signal)
return
;
}
Uint32
subId
=
conf
->
sequenceValue
[
0
];
Uint64
subId
;
memcpy
(
&
subId
,
conf
->
sequenceValue
,
8
);
Uint32
subData
=
conf
->
senderData
;
SubscriberPtr
subbPtr
;
...
...
@@ -832,8 +833,8 @@ Suma::execUTIL_SEQUENCE_CONF(Signal* signal)
CreateSubscriptionIdConf
*
subconf
=
(
CreateSubscriptionIdConf
*
)
conf
;
subconf
->
subscriptionId
=
subId
;
subconf
->
subscriptionKey
=
(
getOwnNodeId
()
<<
16
)
|
(
subId
&
0xFFFF
);
subconf
->
subscriptionId
=
(
Uint32
)
subId
;
subconf
->
subscriptionKey
=
(
getOwnNodeId
()
<<
16
)
|
(
Uint32
)(
subId
&
0xFFFF
);
subconf
->
subscriberData
=
subbPtr
.
p
->
m_senderData
;
sendSignal
(
subbPtr
.
p
->
m_subscriberRef
,
GSN_CREATE_SUBID_CONF
,
signal
,
...
...
ndb/src/mgmsrv/InitConfigFileParser.cpp
View file @
21d4d7ec
...
...
@@ -228,13 +228,21 @@ bool InitConfigFileParser::parseNameValuePair(Context& ctx, const char* line)
Vector
<
BaseString
>
tmp_string_split
;
if
(
BaseString
(
line
).
split
(
tmp_string_split
,
BaseString
(
"=:"
),
2
)
!=
2
)
"=:"
,
2
)
!=
2
)
{
ctx
.
reportError
(
"Parse error"
);
return
false
;
}
// *************************************
// Remove all after #
// *************************************
Vector
<
BaseString
>
tmp_string_split2
;
tmp_string_split
[
1
].
split
(
tmp_string_split2
,
"#"
,
2
);
tmp_string_split
[
1
]
=
tmp_string_split2
[
0
];
// *************************************
// Remove leading and trailing chars
// *************************************
...
...
sql/ha_ndbcluster.cc
View file @
21d4d7ec
...
...
@@ -156,8 +156,8 @@ static int ndb_to_mysql_error(const NdbError *err)
inline
int
execute_no_commit
(
ha_ndbcluster
*
h
,
NdbTransaction
*
trans
)
{
int
m_batch_execute
=
0
;
#ifdef NOT_USED
int
m_batch_execute
=
0
;
if
(
m_batch_execute
)
return
0
;
#endif
...
...
@@ -169,8 +169,8 @@ int execute_no_commit(ha_ndbcluster *h, NdbTransaction *trans)
inline
int
execute_commit
(
ha_ndbcluster
*
h
,
NdbTransaction
*
trans
)
{
int
m_batch_execute
=
0
;
#ifdef NOT_USED
int
m_batch_execute
=
0
;
if
(
m_batch_execute
)
return
0
;
#endif
...
...
@@ -182,8 +182,8 @@ int execute_commit(ha_ndbcluster *h, NdbTransaction *trans)
inline
int
execute_commit
(
THD
*
thd
,
NdbTransaction
*
trans
)
{
int
m_batch_execute
=
0
;
#ifdef NOT_USED
int
m_batch_execute
=
0
;
if
(
m_batch_execute
)
return
0
;
#endif
...
...
@@ -195,8 +195,8 @@ int execute_commit(THD *thd, NdbTransaction *trans)
inline
int
execute_no_commit_ie
(
ha_ndbcluster
*
h
,
NdbTransaction
*
trans
)
{
int
m_batch_execute
=
0
;
#ifdef NOT_USED
int
m_batch_execute
=
0
;
if
(
m_batch_execute
)
return
0
;
#endif
...
...
@@ -810,7 +810,7 @@ int ha_ndbcluster::build_index_list(TABLE *tab, enum ILBP phase)
{
uint
i
;
int
error
=
0
;
const
char
*
name
,
*
index_name
;
const
char
*
index_name
;
char
unique_index_name
[
FN_LEN
];
static
const
char
*
unique_suffix
=
"$unique"
;
KEY
*
key_info
=
tab
->
key_info
;
...
...
@@ -1118,10 +1118,10 @@ ha_ndbcluster::set_index_key(NdbOperation *op,
int
ha_ndbcluster
::
pk_read
(
const
byte
*
key
,
uint
key_len
,
byte
*
buf
)
{
uint
no_fields
=
table
->
s
->
fields
,
i
;
uint
no_fields
=
table
->
s
->
fields
;
NdbConnection
*
trans
=
m_active_trans
;
NdbOperation
*
op
;
THD
*
thd
=
current_thd
;
int
res
;
DBUG_ENTER
(
"pk_read"
);
DBUG_PRINT
(
"enter"
,
(
"key_len: %u"
,
key_len
));
...
...
@@ -1238,7 +1238,6 @@ int ha_ndbcluster::peek_row()
{
NdbTransaction
*
trans
=
m_active_trans
;
NdbOperation
*
op
;
THD
*
thd
=
current_thd
;
DBUG_ENTER
(
"peek_row"
);
NdbOperation
::
LockMode
lm
=
...
...
@@ -1345,8 +1344,11 @@ inline int ha_ndbcluster::fetch_next(NdbScanOperation* cursor)
{
if
(
execute_commit
(
this
,
trans
)
!=
0
)
DBUG_RETURN
(
-
1
);
int
res
=
trans
->
restart
();
DBUG_ASSERT
(
res
==
0
);
if
(
trans
->
restart
()
!=
0
)
{
DBUG_ASSERT
(
0
);
DBUG_RETURN
(
-
1
);
}
}
m_ops_pending
=
0
;
}
...
...
@@ -1441,7 +1443,9 @@ int ha_ndbcluster::set_bounds(NdbIndexScanOperation *op,
{
KEY_PART_INFO
*
key_part
=
&
key_info
->
key_part
[
i
];
Field
*
field
=
key_part
->
field
;
#ifndef DBUG_OFF
uint
part_len
=
key_part
->
length
;
#endif
uint
part_store_len
=
key_part
->
store_length
;
// Info about each key part
struct
part_st
{
...
...
@@ -1586,7 +1590,6 @@ int ha_ndbcluster::define_read_attrs(byte* buf, NdbOperation* op)
{
uint
i
;
THD
*
thd
=
current_thd
;
NdbTransaction
*
trans
=
m_active_trans
;
DBUG_ENTER
(
"define_read_attrs"
);
...
...
@@ -1780,7 +1783,6 @@ int ha_ndbcluster::filtered_scan(const byte *key, uint key_len,
int
ha_ndbcluster
::
full_table_scan
(
byte
*
buf
)
{
uint
i
;
int
res
;
NdbScanOperation
*
op
;
NdbTransaction
*
trans
=
m_active_trans
;
...
...
@@ -1893,14 +1895,12 @@ int ha_ndbcluster::write_row(byte *record)
((
m_rows_inserted
%
m_bulk_insert_rows
)
==
0
)
||
set_blob_value
)
{
THD
*
thd
=
current_thd
;
// Send rows to NDB
DBUG_PRINT
(
"info"
,
(
"Sending inserts to NDB, "
\
"rows_inserted:%d, bulk_insert_rows: %d"
,
(
int
)
m_rows_inserted
,
(
int
)
m_bulk_insert_rows
));
m_bulk_insert_not_flushed
=
FALSE
;
// if (thd->transaction.on)
if
(
m_transaction_on
)
{
if
(
execute_no_commit
(
this
,
trans
)
!=
0
)
...
...
@@ -1918,8 +1918,11 @@ int ha_ndbcluster::write_row(byte *record)
no_uncommitted_rows_execute_failure
();
DBUG_RETURN
(
ndb_err
(
trans
));
}
int
res
=
trans
->
restart
();
DBUG_ASSERT
(
res
==
0
);
if
(
trans
->
restart
()
!=
0
)
{
DBUG_ASSERT
(
0
);
DBUG_RETURN
(
-
1
);
}
}
}
if
((
has_auto_increment
)
&&
(
m_skip_auto_increment
))
...
...
@@ -2220,7 +2223,10 @@ void ha_ndbcluster::unpack_record(byte* buf)
{
NdbBlob
*
ndb_blob
=
(
*
value
).
blob
;
bool
isNull
=
TRUE
;
int
ret
=
ndb_blob
->
getNull
(
isNull
);
#ifndef DBUG_OFF
int
ret
=
#endif
ndb_blob
->
getNull
(
isNull
);
DBUG_ASSERT
(
ret
==
0
);
if
(
isNull
)
(
*
field
)
->
set_null
(
row_offset
);
...
...
@@ -2252,32 +2258,35 @@ void ha_ndbcluster::unpack_record(byte* buf)
void
ha_ndbcluster
::
print_results
()
{
const
NDBTAB
*
tab
=
(
const
NDBTAB
*
)
m_table
;
DBUG_ENTER
(
"print_results"
);
#ifndef DBUG_OFF
const
NDBTAB
*
tab
=
(
const
NDBTAB
*
)
m_table
;
if
(
!
_db_on_
)
DBUG_VOID_RETURN
;
char
buf_type
[
MAX_FIELD_WIDTH
],
buf_val
[
MAX_FIELD_WIDTH
];
String
type
(
buf_type
,
sizeof
(
buf_type
),
&
my_charset_bin
);
String
val
(
buf_val
,
sizeof
(
buf_val
),
&
my_charset_bin
);
for
(
uint
f
=
0
;
f
<
table
->
s
->
fields
;
f
++
)
{
// Use DBUG_PRINT since DBUG_FILE cannot be filtered out
char
buf
[
2000
];
Field
*
field
;
void
*
ptr
;
const
NDBCOL
*
col
;
const
NDBCOL
*
col
=
NULL
;
NdbValue
value
;
NdbBlob
*
ndb_blob
;
buf
[
0
]
=
0
;
buf
[
0
]
=
0
;
field
=
table
->
field
[
f
];
if
(
!
(
value
=
m_value
[
f
]).
ptr
)
{
my_snprintf
(
buf
,
sizeof
(
buf
),
"not read"
);
goto
print_value
;
}
field
=
table
->
field
[
f
];
ptr
=
field
->
ptr
;
DBUG_DUMP
(
"field->ptr"
,
(
char
*
)
ptr
,
field
->
pack_length
());
col
=
tab
->
getColumn
(
f
);
...
...
@@ -2290,6 +2299,11 @@ void ha_ndbcluster::print_results()
my_snprintf
(
buf
,
sizeof
(
buf
),
"NULL"
);
goto
print_value
;
}
type
.
length
(
0
);
val
.
length
(
0
);
field
->
sql_type
(
type
);
field
->
val_str
(
&
val
);
my_snprintf
(
buf
,
sizeof
(
buf
),
"%s %s"
,
type
.
c_ptr
(),
val
.
c_ptr
());
}
else
{
...
...
@@ -2302,142 +2316,6 @@ void ha_ndbcluster::print_results()
}
}
switch
(
col
->
getType
())
{
case
NdbDictionary
:
:
Column
::
Tinyint
:
{
Int8
value
=
*
(
Int8
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Tinyint %d"
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Tinyunsigned
:
{
Uint8
value
=
*
(
Uint8
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Tinyunsigned %u"
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Smallint
:
{
Int16
value
=
*
(
Int16
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Smallint %d"
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Smallunsigned
:
{
Uint16
value
=
*
(
Uint16
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Smallunsigned %u"
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Mediumint
:
{
byte
value
[
3
];
memcpy
(
value
,
ptr
,
3
);
my_snprintf
(
buf
,
sizeof
(
buf
),
"Mediumint %d,%d,%d"
,
value
[
0
],
value
[
1
],
value
[
2
]);
break
;
}
case
NdbDictionary
:
:
Column
::
Mediumunsigned
:
{
byte
value
[
3
];
memcpy
(
value
,
ptr
,
3
);
my_snprintf
(
buf
,
sizeof
(
buf
),
"Mediumunsigned %u,%u,%u"
,
value
[
0
],
value
[
1
],
value
[
2
]);
break
;
}
case
NdbDictionary
:
:
Column
::
Int
:
{
Int32
value
=
*
(
Int32
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Int %d"
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Unsigned
:
{
Uint32
value
=
*
(
Uint32
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Unsigned %u"
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Bigint
:
{
Int64
value
=
*
(
Int64
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Bigint %d"
,
(
int
)
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Bigunsigned
:
{
Uint64
value
=
*
(
Uint64
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Bigunsigned %u"
,
(
unsigned
)
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Float
:
{
float
value
=
*
(
float
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Float %f"
,
(
double
)
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Double
:
{
double
value
=
*
(
double
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Double %f"
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Decimal
:
{
const
char
*
value
=
(
char
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Decimal '%-*s'"
,
field
->
pack_length
(),
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Char
:
{
const
char
*
value
=
(
char
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Char '%.*s'"
,
field
->
pack_length
(),
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Varchar
:
{
uint
len
=
*
(
uchar
*
)
ptr
;
const
char
*
value
=
(
char
*
)
ptr
+
1
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Varchar (%u)'%.*s'"
,
len
,
len
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Binary
:
{
const
char
*
value
=
(
char
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Binary '%.*s'"
,
field
->
pack_length
(),
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Varbinary
:
{
uint
len
=
*
(
uchar
*
)
ptr
;
const
char
*
value
=
(
char
*
)
ptr
+
1
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Varbinary (%u)'%.*s'"
,
len
,
len
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Datetime
:
{
my_snprintf
(
buf
,
sizeof
(
buf
),
"Datetime ?"
);
// fix-me
break
;
}
case
NdbDictionary
:
:
Column
::
Date
:
{
my_snprintf
(
buf
,
sizeof
(
buf
),
"Date ?"
);
// fix-me
break
;
}
case
NdbDictionary
:
:
Column
::
Time
:
{
my_snprintf
(
buf
,
sizeof
(
buf
),
"Time ?"
);
// fix-me
break
;
}
case
NdbDictionary
:
:
Column
::
Blob
:
{
Uint64
len
=
0
;
ndb_blob
->
getLength
(
len
);
my_snprintf
(
buf
,
sizeof
(
buf
),
"Blob [len=%u]"
,
(
unsigned
)
len
);
break
;
}
case
NdbDictionary
:
:
Column
::
Text
:
{
Uint64
len
=
0
;
ndb_blob
->
getLength
(
len
);
my_snprintf
(
buf
,
sizeof
(
buf
),
"Text [len=%u]"
,
(
unsigned
)
len
);
break
;
}
case
NdbDictionary
:
:
Column
::
Bit
:
{
const
char
*
value
=
(
char
*
)
ptr
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Bit '%.*s'"
,
field
->
pack_length
(),
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Longvarchar
:
{
uint
len
=
uint2korr
(
ptr
);
const
char
*
value
=
(
char
*
)
ptr
+
2
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Longvarchar (%u)'%.*s'"
,
len
,
len
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Longvarbinary
:
{
uint
len
=
uint2korr
(
ptr
);
const
char
*
value
=
(
char
*
)
ptr
+
2
;
my_snprintf
(
buf
,
sizeof
(
buf
),
"Longvarbinary (%u)'%.*s'"
,
len
,
len
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Undefined
:
my_snprintf
(
buf
,
sizeof
(
buf
),
"Unknown type: %d"
,
col
->
getType
());
break
;
}
print_value:
DBUG_PRINT
(
"value"
,
(
"%u,%s: %s"
,
f
,
col
->
getName
(),
buf
));
}
...
...
@@ -2685,8 +2563,11 @@ int ha_ndbcluster::rnd_init(bool scan)
{
if
(
!
scan
)
DBUG_RETURN
(
1
);
int
res
=
cursor
->
restart
(
m_force_send
);
DBUG_ASSERT
(
res
==
0
);
if
(
cursor
->
restart
(
m_force_send
)
!=
0
)
{
DBUG_ASSERT
(
0
);
DBUG_RETURN
(
-
1
);
}
}
index_init
(
table
->
s
->
primary_key
);
DBUG_RETURN
(
0
);
...
...
@@ -2801,13 +2682,15 @@ void ha_ndbcluster::position(const byte *record)
DBUG_PRINT
(
"info"
,
(
"Getting hidden key"
));
int
hidden_no
=
table
->
s
->
fields
;
const
NdbRecAttr
*
rec
=
m_value
[
hidden_no
].
rec
;
memcpy
(
ref
,
(
const
void
*
)
rec
->
aRef
(),
ref_length
);
#ifndef DBUG_OFF
const
NDBTAB
*
tab
=
(
const
NDBTAB
*
)
m_table
;
const
NDBCOL
*
hidden_col
=
tab
->
getColumn
(
hidden_no
);
DBUG_ASSERT
(
hidden_col
->
getPrimaryKey
()
&&
hidden_col
->
getAutoIncrement
()
&&
rec
!=
NULL
&&
ref_length
==
NDB_HIDDEN_PRIMARY_KEY_LENGTH
);
memcpy
(
ref
,
(
const
void
*
)
rec
->
aRef
(),
ref_length
);
#endif
}
DBUG_DUMP
(
"ref"
,
(
char
*
)
ref
,
ref_length
);
...
...
@@ -3336,11 +3219,13 @@ int ha_ndbcluster::start_stmt(THD *thd)
Ndb
*
ndb
=
((
Thd_ndb
*
)
thd
->
transaction
.
thd_ndb
)
->
ndb
;
DBUG_PRINT
(
"trans"
,(
"Starting transaction stmt"
));
#if 0
NdbTransaction *tablock_trans=
(NdbTransaction*)thd->transaction.all.ndb_tid;
DBUG_PRINT("info", ("tablock_trans: %x", (uint)tablock_trans));
DBUG_ASSERT(tablock_trans);
// trans= ndb->hupp(tablock_trans);
#endif
trans
=
ndb
->
startTransaction
();
if
(
trans
==
NULL
)
ERR_RETURN
(
ndb
->
getNdbError
());
...
...
@@ -3675,7 +3560,6 @@ int ha_ndbcluster::create(const char *name,
NDBCOL
col
;
uint
pack_length
,
length
,
i
,
pk_length
=
0
;
const
void
*
data
,
*
pack_data
;
const
char
**
key_names
=
form
->
s
->
keynames
.
type_names
;
char
name2
[
FN_HEADLEN
];
bool
create_from_engine
=
(
info
->
table_options
&
HA_CREATE_FROM_ENGINE
);
...
...
@@ -3908,7 +3792,6 @@ int ha_ndbcluster::alter_table_name(const char *to)
Ndb
*
ndb
=
get_ndb
();
NDBDICT
*
dict
=
ndb
->
getDictionary
();
const
NDBTAB
*
orig_tab
=
(
const
NDBTAB
*
)
m_table
;
int
ret
;
DBUG_ENTER
(
"alter_table_name_table"
);
NdbDictionary
::
Table
new_tab
=
*
orig_tab
;
...
...
@@ -4008,7 +3891,6 @@ ha_ndbcluster::ha_ndbcluster(TABLE *table_arg):
handler
(
table_arg
),
m_active_trans
(
NULL
),
m_active_cursor
(
NULL
),
m_multi_cursor
(
NULL
),
m_table
(
NULL
),
m_table_info
(
NULL
),
m_table_flags
(
HA_REC_NOT_IN_SEQ
|
...
...
@@ -4037,7 +3919,8 @@ ha_ndbcluster::ha_ndbcluster(TABLE *table_arg):
m_force_send
(
TRUE
),
m_autoincrement_prefetch
(
32
),
m_transaction_on
(
TRUE
),
m_use_local_query_cache
(
FALSE
)
m_use_local_query_cache
(
FALSE
),
m_multi_cursor
(
NULL
)
{
int
i
;
...
...
@@ -4512,15 +4395,21 @@ bool ndbcluster_init()
}
else
if
(
res
==
1
)
{
if
(
g_ndb_cluster_connection
->
start_connect_thread
())
{
if
(
g_ndb_cluster_connection
->
start_connect_thread
())
{
DBUG_PRINT
(
"error"
,
(
"g_ndb_cluster_connection->start_connect_thread()"
));
goto
ndbcluster_init_error
;
}
#ifndef DBUG_OFF
{
char
buf
[
1024
];
DBUG_PRINT
(
"info"
,(
"NDBCLUSTER storage engine not started, will connect using %s"
,
g_ndb_cluster_connection
->
get_connectstring
(
buf
,
sizeof
(
buf
))));
DBUG_PRINT
(
"info"
,
(
"NDBCLUSTER storage engine not started, "
"will connect using %s"
,
g_ndb_cluster_connection
->
get_connectstring
(
buf
,
sizeof
(
buf
))));
}
#endif
}
else
{
...
...
@@ -5059,6 +4948,7 @@ ha_ndbcluster::read_multi_range_first(KEY_MULTI_RANGE **found_range_p,
* pk-op 4 pk-op 4
* range 5
* pk-op 6 pk-ok 6
*/
/**
* Variables for loop
...
...
@@ -5117,7 +5007,7 @@ ha_ndbcluster::read_multi_range_first(KEY_MULTI_RANGE **found_range_p,
multi_range_curr
->
start_key
.
length
))
goto
sk
;
goto
range
;
case
ORDERED_INDEX
:
case
ORDERED_INDEX
:
{
range:
multi_range_curr
->
range_flag
&=
~
(
uint
)
UNIQUE_RANGE
;
if
(
scanOp
==
0
)
...
...
@@ -5152,6 +5042,11 @@ ha_ndbcluster::read_multi_range_first(KEY_MULTI_RANGE **found_range_p,
DBUG_RETURN
(
res
);
break
;
}
case
(
UNDEFINED_INDEX
):
DBUG_ASSERT
(
FALSE
);
DBUG_RETURN
(
1
);
break
;
}
}
if
(
multi_range_curr
!=
multi_range_end
)
...
...
@@ -5238,7 +5133,7 @@ ha_ndbcluster::read_multi_range_next(KEY_MULTI_RANGE ** multi_range_found_p)
range_no
=
m_multi_cursor
->
get_range_no
();
uint
current_range_no
=
multi_range_curr
-
m_multi_ranges
;
if
(
range_no
==
current_range_no
)
if
(
(
uint
)
range_no
==
current_range_no
)
{
DBUG_MULTI_RANGE
(
4
);
// return current row
...
...
sql/item_strfunc.cc
View file @
21d4d7ec
...
...
@@ -1578,9 +1578,14 @@ void Item_func_soundex::fix_length_and_dec()
else return 0
*/
static
char
get_scode
(
CHARSET_INFO
*
cs
,
char
*
ptr
)
static
char
soundex_toupper
(
char
ch
)
{
uchar
ch
=
my_toupper
(
cs
,
*
ptr
);
return
(
ch
>=
'a'
&&
ch
<=
'z'
)
?
ch
-
'a'
+
'A'
:
ch
;
}
static
char
get_scode
(
char
*
ptr
)
{
uchar
ch
=
soundex_toupper
(
*
ptr
);
if
(
ch
<
'A'
||
ch
>
'Z'
)
{
// Thread extended alfa (country spec)
...
...
@@ -1610,8 +1615,8 @@ String *Item_func_soundex::val_str(String *str)
from
++
;
/* purecov: inspected */
if
(
from
==
end
)
return
&
my_empty_string
;
// No alpha characters.
*
to
++
=
my_toupper
(
cs
,
*
from
);
// Copy first letter
last_ch
=
get_scode
(
cs
,
from
);
// code of the first letter
*
to
++
=
soundex_toupper
(
*
from
);
// Copy first letter
last_ch
=
get_scode
(
from
);
// code of the first letter
// for the first 'double-letter check.
// Loop on input letters until
// end of input (null) or output
...
...
@@ -1620,7 +1625,7 @@ String *Item_func_soundex::val_str(String *str)
{
if
(
!
my_isalpha
(
cs
,
*
from
))
continue
;
ch
=
get_scode
(
cs
,
from
);
ch
=
get_scode
(
from
);
if
((
ch
!=
'0'
)
&&
(
ch
!=
last_ch
))
// if not skipped or double
{
*
to
++
=
ch
;
// letter, copy to output
...
...
sql/sql_insert.cc
View file @
21d4d7ec
...
...
@@ -292,7 +292,7 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
error
=
0
;
id
=
0
;
thd
->
proc_info
=
"update"
;
if
(
duplic
!=
DUP_ERROR
)
if
(
duplic
!=
DUP_ERROR
||
ignore
)
table
->
file
->
extra
(
HA_EXTRA_IGNORE_DUP_KEY
);
/*
let's *try* to start bulk inserts. It won't necessary
...
...
@@ -471,7 +471,7 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
table
->
next_number_field
=
0
;
thd
->
count_cuted_fields
=
CHECK_FIELD_IGNORE
;
thd
->
next_insert_id
=
0
;
// Reset this if wrongly used
if
(
duplic
!=
DUP_ERROR
)
if
(
duplic
!=
DUP_ERROR
||
ignore
)
table
->
file
->
extra
(
HA_EXTRA_NO_IGNORE_DUP_KEY
);
/* Reset value of LAST_INSERT_ID if no rows where inserted */
...
...
@@ -1606,7 +1606,7 @@ bool delayed_insert::handle_inserts(void)
info
.
ignore
=
row
->
ignore
;
info
.
handle_duplicates
=
row
->
dup
;
if
(
info
.
ignore
||
info
.
handle_duplicates
==
DUP_REPLACE
)
info
.
handle_duplicates
!=
DUP_ERROR
)
{
table
->
file
->
extra
(
HA_EXTRA_IGNORE_DUP_KEY
);
using_ignore
=
1
;
...
...
@@ -1806,7 +1806,7 @@ select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
restore_record
(
table
,
s
->
default_values
);
// Get empty record
table
->
next_number_field
=
table
->
found_next_number_field
;
thd
->
cuted_fields
=
0
;
if
(
info
.
ignore
||
info
.
handle_duplicates
==
DUP_REPLACE
)
if
(
info
.
ignore
||
info
.
handle_duplicates
!=
DUP_ERROR
)
table
->
file
->
extra
(
HA_EXTRA_IGNORE_DUP_KEY
);
table
->
file
->
start_bulk_insert
((
ha_rows
)
0
);
thd
->
no_trans_update
=
0
;
...
...
@@ -2008,7 +2008,7 @@ select_create::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
restore_record
(
table
,
s
->
default_values
);
// Get empty record
thd
->
cuted_fields
=
0
;
if
(
info
.
ignore
||
info
.
handle_duplicates
==
DUP_REPLACE
)
if
(
info
.
ignore
||
info
.
handle_duplicates
!=
DUP_ERROR
)
table
->
file
->
extra
(
HA_EXTRA_IGNORE_DUP_KEY
);
table
->
file
->
start_bulk_insert
((
ha_rows
)
0
);
thd
->
no_trans_update
=
0
;
...
...
sql/strfunc.cc
View file @
21d4d7ec
...
...
@@ -147,7 +147,7 @@ uint find_type(TYPELIB *lib, const char *find, uint length, bool part_match)
uint
find_type2
(
TYPELIB
*
typelib
,
const
char
*
x
,
uint
length
,
CHARSET_INFO
*
cs
)
{
int
find
,
pos
,
findpos
;
int
find
,
pos
;
const
char
*
j
;
DBUG_ENTER
(
"find_type2"
);
DBUG_PRINT
(
"enter"
,(
"x: '%.*s' lib: 0x%lx"
,
length
,
x
,
typelib
));
...
...
@@ -157,7 +157,7 @@ uint find_type2(TYPELIB *typelib, const char *x, uint length, CHARSET_INFO *cs)
DBUG_PRINT
(
"exit"
,(
"no count"
));
DBUG_RETURN
(
0
);
}
LINT_INIT
(
findpos
);
for
(
find
=
0
,
pos
=
0
;
(
j
=
typelib
->
type_names
[
pos
])
;
pos
++
)
{
if
(
!
my_strnncoll
(
cs
,
(
const
uchar
*
)
x
,
length
,
...
...
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