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
07a9052b
Commit
07a9052b
authored
Sep 28, 2005
by
kent@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/Users/kent/mysql/bk/mysql-4.1
parents
44305ca2
c0b8b6db
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
188 additions
and
46 deletions
+188
-46
client/mysql.cc
client/mysql.cc
+2
-2
libmysqld/lib_sql.cc
libmysqld/lib_sql.cc
+2
-2
myisam/mi_dbug.c
myisam/mi_dbug.c
+2
-2
myisam/mi_rkey.c
myisam/mi_rkey.c
+5
-2
myisam/mi_search.c
myisam/mi_search.c
+13
-3
myisam/myisamdef.h
myisam/myisamdef.h
+1
-0
myisammrg/myrg_rkey.c
myisammrg/myrg_rkey.c
+12
-5
mysql-test/r/cast.result
mysql-test/r/cast.result
+12
-0
mysql-test/r/merge.result
mysql-test/r/merge.result
+26
-0
mysql-test/r/select.result
mysql-test/r/select.result
+9
-0
mysql-test/t/merge.test
mysql-test/t/merge.test
+36
-0
mysql-test/t/select.test
mysql-test/t/select.test
+10
-0
ndb/src/kernel/blocks/dbdict/Makefile.am
ndb/src/kernel/blocks/dbdict/Makefile.am
+10
-2
ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp
ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp
+1
-10
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+2
-2
sql/item.cc
sql/item.cc
+29
-0
sql/opt_sum.cc
sql/opt_sum.cc
+7
-7
sql/sql_delete.cc
sql/sql_delete.cc
+3
-2
sql/sql_lex.cc
sql/sql_lex.cc
+0
-1
sql/sql_load.cc
sql/sql_load.cc
+5
-5
sql/sql_prepare.cc
sql/sql_prepare.cc
+0
-1
sql/sql_update.cc
sql/sql_update.cc
+1
-0
No files found.
client/mysql.cc
View file @
07a9052b
...
@@ -993,13 +993,13 @@ static int read_lines(bool execute_commands)
...
@@ -993,13 +993,13 @@ static int read_lines(bool execute_commands)
unsigned
long
clen
;
unsigned
long
clen
;
do
do
{
{
line
=
my_cgets
(
tmpbuf
.
c_ptr
(),
tmpbuf
.
alloced_length
()
,
&
clen
);
line
=
my_cgets
(
tmpbuf
.
ptr
(),
tmpbuf
.
alloced_length
()
-
1
,
&
clen
);
buffer
.
append
(
line
,
clen
);
buffer
.
append
(
line
,
clen
);
/*
/*
if we got buffer fully filled than there is a chance that
if we got buffer fully filled than there is a chance that
something else is still in console input buffer
something else is still in console input buffer
*/
*/
}
while
(
tmpbuf
.
alloced_length
()
<=
clen
+
1
);
}
while
(
tmpbuf
.
alloced_length
()
<=
clen
);
line
=
buffer
.
c_ptr
();
line
=
buffer
.
c_ptr
();
#else
/* OS2 */
#else
/* OS2 */
buffer
.
length
(
0
);
buffer
.
length
(
0
);
...
...
libmysqld/lib_sql.cc
View file @
07a9052b
...
@@ -427,9 +427,9 @@ int init_embedded_server(int argc, char **argv, char **groups)
...
@@ -427,9 +427,9 @@ int init_embedded_server(int argc, char **argv, char **groups)
acl_error
=
0
;
acl_error
=
0
;
#ifndef NO_EMBEDDED_ACCESS_CHECKS
#ifndef NO_EMBEDDED_ACCESS_CHECKS
if
(
!
(
acl_error
=
acl_init
(
(
THD
*
)
0
,
opt_noacl
))
&&
if
(
!
(
acl_error
=
acl_init
(
opt_noacl
))
&&
!
opt_noacl
)
!
opt_noacl
)
(
void
)
grant_init
(
(
THD
*
)
0
);
(
void
)
grant_init
();
#endif
#endif
if
(
acl_error
||
my_tz_init
((
THD
*
)
0
,
default_tz_name
,
opt_bootstrap
))
if
(
acl_error
||
my_tz_init
((
THD
*
)
0
,
default_tz_name
,
opt_bootstrap
))
{
{
...
...
myisam/mi_dbug.c
View file @
07a9052b
...
@@ -40,12 +40,12 @@ void _mi_print_key(FILE *stream, register HA_KEYSEG *keyseg,
...
@@ -40,12 +40,12 @@ void _mi_print_key(FILE *stream, register HA_KEYSEG *keyseg,
end
=
key
+
keyseg
->
length
;
end
=
key
+
keyseg
->
length
;
if
(
keyseg
->
flag
&
HA_NULL_PART
)
if
(
keyseg
->
flag
&
HA_NULL_PART
)
{
{
if
(
!*
key
)
/* A NULL value is encoded by a 1-byte flag. Zero means NULL. */
if
(
!
*
(
key
++
))
{
{
fprintf
(
stream
,
"NULL"
);
fprintf
(
stream
,
"NULL"
);
continue
;
continue
;
}
}
key
++
;
}
}
switch
(
keyseg
->
type
)
{
switch
(
keyseg
->
type
)
{
...
...
myisam/mi_rkey.c
View file @
07a9052b
...
@@ -31,8 +31,8 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
...
@@ -31,8 +31,8 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
HA_KEYSEG
*
last_used_keyseg
;
HA_KEYSEG
*
last_used_keyseg
;
uint
pack_key_length
,
use_key_length
,
nextflag
;
uint
pack_key_length
,
use_key_length
,
nextflag
;
DBUG_ENTER
(
"mi_rkey"
);
DBUG_ENTER
(
"mi_rkey"
);
DBUG_PRINT
(
"enter"
,
(
"base: %lx
inx: %d search_flag: %d"
,
DBUG_PRINT
(
"enter"
,
(
"base: %p buf: %p
inx: %d search_flag: %d"
,
info
,
inx
,
search_flag
));
info
,
buf
,
inx
,
search_flag
));
if
((
inx
=
_mi_check_index
(
info
,
inx
))
<
0
)
if
((
inx
=
_mi_check_index
(
info
,
inx
))
<
0
)
DBUG_RETURN
(
my_errno
);
DBUG_RETURN
(
my_errno
);
...
@@ -56,9 +56,12 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
...
@@ -56,9 +56,12 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
{
{
if
(
key_len
==
0
)
if
(
key_len
==
0
)
key_len
=
USE_WHOLE_KEY
;
key_len
=
USE_WHOLE_KEY
;
/* Save the packed key for later use in the second buffer of lastkey. */
key_buff
=
info
->
lastkey
+
info
->
s
->
base
.
max_key_length
;
key_buff
=
info
->
lastkey
+
info
->
s
->
base
.
max_key_length
;
pack_key_length
=
_mi_pack_key
(
info
,(
uint
)
inx
,
key_buff
,
(
uchar
*
)
key
,
pack_key_length
=
_mi_pack_key
(
info
,(
uint
)
inx
,
key_buff
,
(
uchar
*
)
key
,
key_len
,
&
last_used_keyseg
);
key_len
,
&
last_used_keyseg
);
/* Save packed_key_length for use by the MERGE engine. */
info
->
pack_key_length
=
pack_key_length
;
DBUG_EXECUTE
(
"key"
,
_mi_print_key
(
DBUG_FILE
,
keyinfo
->
seg
,
DBUG_EXECUTE
(
"key"
,
_mi_print_key
(
DBUG_FILE
,
keyinfo
->
seg
,
key_buff
,
pack_key_length
););
key_buff
,
pack_key_length
););
}
}
...
...
myisam/mi_search.c
View file @
07a9052b
...
@@ -908,11 +908,21 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag,
...
@@ -908,11 +908,21 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag,
reg1
HA_KEYSEG
*
keyseg
;
reg1
HA_KEYSEG
*
keyseg
;
uchar
*
start_key
,
*
page
,
*
page_end
,
*
from
,
*
from_end
;
uchar
*
start_key
,
*
page
,
*
page_end
,
*
from
,
*
from_end
;
uint
length
,
tmp
;
uint
length
,
tmp
;
DBUG_ENTER
(
"_mi_get_binary_pack_key"
);
page
=
*
page_pos
;
page
=
*
page_pos
;
page_end
=
page
+
MI_MAX_KEY_BUFF
+
1
;
page_end
=
page
+
MI_MAX_KEY_BUFF
+
1
;
start_key
=
key
;
start_key
=
key
;
/*
Keys are compressed the following way:
prefix length Packed length of prefix for the prev key. (1 or 3 bytes)
for each key segment:
[is null] Null indicator if can be null (1 byte, zero means null)
[length] Packed length if varlength (1 or 3 bytes)
pointer Reference to the data file (last_keyseg->length).
*/
get_key_length
(
length
,
page
);
get_key_length
(
length
,
page
);
if
(
length
)
if
(
length
)
{
{
...
@@ -922,7 +932,7 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag,
...
@@ -922,7 +932,7 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag,
length
,
keyinfo
->
maxlength
,
*
page_pos
));
length
,
keyinfo
->
maxlength
,
*
page_pos
));
DBUG_DUMP
(
"key"
,(
char
*
)
*
page_pos
,
16
);
DBUG_DUMP
(
"key"
,(
char
*
)
*
page_pos
,
16
);
my_errno
=
HA_ERR_CRASHED
;
my_errno
=
HA_ERR_CRASHED
;
return
0
;
/* Wrong key */
DBUG_RETURN
(
0
)
;
/* Wrong key */
}
}
from
=
key
;
from_end
=
key
+
length
;
from
=
key
;
from_end
=
key
+
length
;
}
}
...
@@ -983,12 +993,12 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag,
...
@@ -983,12 +993,12 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag,
{
{
DBUG_PRINT
(
"error"
,(
"Error when unpacking key"
));
DBUG_PRINT
(
"error"
,(
"Error when unpacking key"
));
my_errno
=
HA_ERR_CRASHED
;
my_errno
=
HA_ERR_CRASHED
;
return
0
;
/* Error */
DBUG_RETURN
(
0
)
;
/* Error */
}
}
memcpy
((
byte
*
)
key
,(
byte
*
)
from
,(
size_t
)
length
);
memcpy
((
byte
*
)
key
,(
byte
*
)
from
,(
size_t
)
length
);
*
page_pos
=
from
+
length
;
*
page_pos
=
from
+
length
;
}
}
return
((
uint
)
(
key
-
start_key
)
+
keyseg
->
length
);
DBUG_RETURN
((
uint
)
(
key
-
start_key
)
+
keyseg
->
length
);
}
}
...
...
myisam/myisamdef.h
View file @
07a9052b
...
@@ -261,6 +261,7 @@ struct st_myisam_info {
...
@@ -261,6 +261,7 @@ struct st_myisam_info {
uint
last_rkey_length
;
/* Last length in mi_rkey() */
uint
last_rkey_length
;
/* Last length in mi_rkey() */
enum
ha_rkey_function
last_key_func
;
/* CONTAIN, OVERLAP, etc */
enum
ha_rkey_function
last_key_func
;
/* CONTAIN, OVERLAP, etc */
uint
save_lastkey_length
;
uint
save_lastkey_length
;
uint
pack_key_length
;
/* For MYISAMMRG */
int
errkey
;
/* Got last error on this key */
int
errkey
;
/* Got last error on this key */
int
lock_type
;
/* How database was locked */
int
lock_type
;
/* How database was locked */
int
tmp_lock_type
;
/* When locked by readinfo */
int
tmp_lock_type
;
/* When locked by readinfo */
...
...
myisammrg/myrg_rkey.c
View file @
07a9052b
...
@@ -44,11 +44,12 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key,
...
@@ -44,11 +44,12 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key,
MYRG_TABLE
*
table
;
MYRG_TABLE
*
table
;
MI_INFO
*
mi
;
MI_INFO
*
mi
;
int
err
;
int
err
;
DBUG_ENTER
(
"myrg_rkey"
);
LINT_INIT
(
key_buff
);
LINT_INIT
(
key_buff
);
LINT_INIT
(
pack_key_length
);
LINT_INIT
(
pack_key_length
);
if
(
_myrg_init_queue
(
info
,
inx
,
search_flag
))
if
(
_myrg_init_queue
(
info
,
inx
,
search_flag
))
return
my_errno
;
DBUG_RETURN
(
my_errno
)
;
for
(
table
=
info
->
open_tables
;
table
!=
info
->
end_table
;
table
++
)
for
(
table
=
info
->
open_tables
;
table
!=
info
->
end_table
;
table
++
)
{
{
...
@@ -57,8 +58,9 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key,
...
@@ -57,8 +58,9 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key,
if
(
table
==
info
->
open_tables
)
if
(
table
==
info
->
open_tables
)
{
{
err
=
mi_rkey
(
mi
,
0
,
inx
,
key
,
key_len
,
search_flag
);
err
=
mi_rkey
(
mi
,
0
,
inx
,
key
,
key_len
,
search_flag
);
/* Get the saved packed key and packed key length. */
key_buff
=
(
byte
*
)
mi
->
lastkey
+
mi
->
s
->
base
.
max_key_length
;
key_buff
=
(
byte
*
)
mi
->
lastkey
+
mi
->
s
->
base
.
max_key_length
;
pack_key_length
=
mi
->
last_r
key_length
;
pack_key_length
=
mi
->
pack_
key_length
;
}
}
else
else
{
{
...
@@ -71,17 +73,22 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key,
...
@@ -71,17 +73,22 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key,
{
{
if
(
err
==
HA_ERR_KEY_NOT_FOUND
)
if
(
err
==
HA_ERR_KEY_NOT_FOUND
)
continue
;
continue
;
return
err
;
DBUG_PRINT
(
"exit"
,
(
"err: %d"
,
err
));
DBUG_RETURN
(
err
);
}
}
/* adding to queue */
/* adding to queue */
queue_insert
(
&
(
info
->
by_key
),(
byte
*
)
table
);
queue_insert
(
&
(
info
->
by_key
),(
byte
*
)
table
);
}
}
DBUG_PRINT
(
"info"
,
(
"tables with matches: %u"
,
info
->
by_key
.
elements
));
if
(
!
info
->
by_key
.
elements
)
if
(
!
info
->
by_key
.
elements
)
return
HA_ERR_KEY_NOT_FOUND
;
DBUG_RETURN
(
HA_ERR_KEY_NOT_FOUND
)
;
mi
=
(
info
->
current_table
=
(
MYRG_TABLE
*
)
queue_top
(
&
(
info
->
by_key
)))
->
table
;
mi
=
(
info
->
current_table
=
(
MYRG_TABLE
*
)
queue_top
(
&
(
info
->
by_key
)))
->
table
;
mi
->
once_flags
|=
RRND_PRESERVE_LASTINX
;
mi
->
once_flags
|=
RRND_PRESERVE_LASTINX
;
return
_myrg_mi_read_record
(
mi
,
buf
);
DBUG_PRINT
(
"info"
,
(
"using table no: %d"
,
info
->
current_table
-
info
->
open_tables
+
1
));
DBUG_DUMP
(
"result key"
,
(
byte
*
)
mi
->
lastkey
,
mi
->
lastkey_length
);
DBUG_RETURN
(
_myrg_mi_read_record
(
mi
,
buf
));
}
}
mysql-test/r/cast.result
View file @
07a9052b
...
@@ -54,6 +54,18 @@ CONVERT(DATE "2004-01-22 21:45:33",BINARY(4))
...
@@ -54,6 +54,18 @@ CONVERT(DATE "2004-01-22 21:45:33",BINARY(4))
select CAST(DATE "2004-01-22 21:45:33" AS BINARY(4));
select CAST(DATE "2004-01-22 21:45:33" AS BINARY(4));
CAST(DATE "2004-01-22 21:45:33" AS BINARY(4))
CAST(DATE "2004-01-22 21:45:33" AS BINARY(4))
2004
2004
select CAST(0xb3 as signed);
CAST(0xb3 as signed)
179
select CAST(0x8fffffffffffffff as signed);
CAST(0x8fffffffffffffff as signed)
-8070450532247928833
select CAST(0xffffffffffffffff as unsigned);
CAST(0xffffffffffffffff as unsigned)
18446744073709551615
select CAST(0xfffffffffffffffe as signed);
CAST(0xfffffffffffffffe as signed)
-2
select cast('18446744073709551616' as unsigned);
select cast('18446744073709551616' as unsigned);
cast('18446744073709551616' as unsigned)
cast('18446744073709551616' as unsigned)
18446744073709551615
18446744073709551615
...
...
mysql-test/r/merge.result
View file @
07a9052b
...
@@ -651,6 +651,32 @@ ERROR HY000: You can't specify target table 't1' for update in FROM clause
...
@@ -651,6 +651,32 @@ ERROR HY000: You can't specify target table 't1' for update in FROM clause
create table t3 engine=merge union=(t1, t2) select * from t2;
create table t3 engine=merge union=(t1, t2) select * from t2;
ERROR HY000: You can't specify target table 't2' for update in FROM clause
ERROR HY000: You can't specify target table 't2' for update in FROM clause
drop table t1, t2;
drop table t1, t2;
create table t1 (
a double(16,6),
b varchar(10),
index (a,b)
) engine=merge union=(t2,t3);
create table t2 (
a double(16,6),
b varchar(10),
index (a,b)
) engine=myisam;
create table t3 (
a double(16,6),
b varchar(10),
index (a,b)
) engine=myisam;
insert into t2 values ( null, '');
insert into t2 values ( 9999999999.999999, '');
insert into t3 select * from t2;
select min(a), max(a) from t1;
min(a) max(a)
9999999999.999998 9999999999.999998
flush tables;
select min(a), max(a) from t1;
min(a) max(a)
9999999999.999998 9999999999.999998
drop table t1, t2, t3;
create table t1 (a int,b int,c int, index (a,b,c));
create table t1 (a int,b int,c int, index (a,b,c));
create table t2 (a int,b int,c int, index (a,b,c));
create table t2 (a int,b int,c int, index (a,b,c));
create table t3 (a int,b int,c int, index (a,b,c))
create table t3 (a int,b int,c int, index (a,b,c))
...
...
mysql-test/r/select.result
View file @
07a9052b
...
@@ -2617,3 +2617,12 @@ select found_rows();
...
@@ -2617,3 +2617,12 @@ select found_rows();
found_rows()
found_rows()
1
1
DROP TABLE t1;
DROP TABLE t1;
create table t1(f1 int, f2 int);
create table t2(f3 int);
select f1 from t1,t2 where f1=f2 and (f1,f2) = ((1,1));
f1
select f1 from t1,t2 where f1=f2 and (f1,NULL) = ((1,1));
f1
select f1 from t1,t2 where f1=f2 and (f1,f2) = ((1,NULL));
f1
drop table t1,t2;
mysql-test/t/merge.test
View file @
07a9052b
...
@@ -286,6 +286,42 @@ create table t3 engine=merge union=(t1, t2) select * from t1;
...
@@ -286,6 +286,42 @@ create table t3 engine=merge union=(t1, t2) select * from t1;
create
table
t3
engine
=
merge
union
=
(
t1
,
t2
)
select
*
from
t2
;
create
table
t3
engine
=
merge
union
=
(
t1
,
t2
)
select
*
from
t2
;
drop
table
t1
,
t2
;
drop
table
t1
,
t2
;
#
# Bug#9112 - Merge table with composite index producing invalid results with some queries
# This test case will fail only without the bugfix and some
# non-deterministic circumstances. It depends on properly initialized
# "un-initialized" memory. At the time it happens with a standard
# non-debug build. But there is no guarantee that this will be always so.
#
create
table
t1
(
a
double
(
16
,
6
),
b
varchar
(
10
),
index
(
a
,
b
)
)
engine
=
merge
union
=
(
t2
,
t3
);
create
table
t2
(
a
double
(
16
,
6
),
b
varchar
(
10
),
index
(
a
,
b
)
)
engine
=
myisam
;
create
table
t3
(
a
double
(
16
,
6
),
b
varchar
(
10
),
index
(
a
,
b
)
)
engine
=
myisam
;
insert
into
t2
values
(
null
,
''
);
# We may have insufficient accuracy for 16 digits of '9'.
# Suppress a "truncate" warning due to accuracy problems.
--
disable_warnings
insert
into
t2
values
(
9999999999.999999
,
''
);
--
enable_warnings
insert
into
t3
select
*
from
t2
;
select
min
(
a
),
max
(
a
)
from
t1
;
flush
tables
;
select
min
(
a
),
max
(
a
)
from
t1
;
drop
table
t1
,
t2
,
t3
;
# BUG#6699 : no sorting on 'ref' retrieval
# BUG#6699 : no sorting on 'ref' retrieval
create
table
t1
(
a
int
,
b
int
,
c
int
,
index
(
a
,
b
,
c
));
create
table
t1
(
a
int
,
b
int
,
c
int
,
index
(
a
,
b
,
c
));
create
table
t2
(
a
int
,
b
int
,
c
int
,
index
(
a
,
b
,
c
));
create
table
t2
(
a
int
,
b
int
,
c
int
,
index
(
a
,
b
,
c
));
...
...
mysql-test/t/select.test
View file @
07a9052b
...
@@ -2164,4 +2164,14 @@ select found_rows();
...
@@ -2164,4 +2164,14 @@ select found_rows();
DROP
TABLE
t1
;
DROP
TABLE
t1
;
#
# Bug #13356 assertion failed in resolve_const_item()
#
create
table
t1
(
f1
int
,
f2
int
);
create
table
t2
(
f3
int
);
select
f1
from
t1
,
t2
where
f1
=
f2
and
(
f1
,
f2
)
=
((
1
,
1
));
select
f1
from
t1
,
t2
where
f1
=
f2
and
(
f1
,
NULL
)
=
((
1
,
1
));
select
f1
from
t1
,
t2
where
f1
=
f2
and
(
f1
,
f2
)
=
((
1
,
NULL
));
drop
table
t1
,
t2
;
# End of 4.1 tests
# End of 4.1 tests
ndb/src/kernel/blocks/dbdict/Makefile.am
View file @
07a9052b
#SUBDIRS = printSchemafile
noinst_LIBRARIES
=
libdbdict.a
noinst_LIBRARIES
=
libdbdict.a
EXTRA_PROGRAMS
=
printSchemaFile
libdbdict_a_SOURCES
=
Dbdict.cpp
libdbdict_a_SOURCES
=
Dbdict.cpp
printSchemaFile_SOURCES
=
printSchemaFile.cpp
include
$(top_srcdir)/ndb/config/common.mk.am
include
$(top_srcdir)/ndb/config/common.mk.am
include
$(top_srcdir)/ndb/config/type_kernel.mk.am
include
$(top_srcdir)/ndb/config/type_kernel.mk.am
LDADD
+=
\
$(top_builddir)
/ndb/src/common/util/libgeneral.la
\
$(top_builddir)
/ndb/src/common/portlib/libportlib.la
\
$(top_builddir)
/dbug/libdbug.a
\
$(top_builddir)
/mysys/libmysys.a
\
$(top_builddir)
/strings/libmystrings.a
# Don't update the files from bitkeeper
# Don't update the files from bitkeeper
%
::
SCCS/s.%
%
::
SCCS/s.%
...
...
ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp
View file @
07a9052b
#if 0
make -f Makefile -f - printSchemaFile <<'_eof_'
printSchemaFile: printSchemaFile.cpp
$(CXXCOMPILE) -o $@ $@.cpp -L../../../common/util/.libs -lgeneral
_eof_
exit $?
#endif
/* Copyright (C) 2003 MySQL AB
/* Copyright (C) 2003 MySQL AB
This program is free software; you can redistribute it and/or modify
This program is free software; you can redistribute it and/or modify
...
@@ -58,8 +50,7 @@ print(const char * filename, const SchemaFile * file){
...
@@ -58,8 +50,7 @@ print(const char * filename, const SchemaFile * file){
SchemaFile
::
TableEntry
te
=
file
->
TableEntries
[
i
];
SchemaFile
::
TableEntry
te
=
file
->
TableEntries
[
i
];
if
(
te
.
m_tableState
!=
SchemaFile
::
INIT
){
if
(
te
.
m_tableState
!=
SchemaFile
::
INIT
){
ndbout
<<
"Table "
<<
i
<<
": State = "
<<
te
.
m_tableState
ndbout
<<
"Table "
<<
i
<<
": State = "
<<
te
.
m_tableState
<<
" version = "
<<
table_version_major
(
te
.
m_tableVersion
)
<<
<<
" version = "
<<
te
.
m_tableVersion
<<
"("
<<
table_version_minor
(
te
.
m_tableVersion
)
<<
")"
<<
" type = "
<<
te
.
m_tableType
<<
" type = "
<<
te
.
m_tableType
<<
" noOfPages = "
<<
te
.
m_noOfPages
<<
" noOfPages = "
<<
te
.
m_noOfPages
<<
" gcp: "
<<
te
.
m_gcp
<<
endl
;
<<
" gcp: "
<<
te
.
m_gcp
<<
endl
;
...
...
sql/ha_ndbcluster.cc
View file @
07a9052b
...
@@ -598,8 +598,8 @@ int ha_ndbcluster::set_ndb_value(NdbOperation *ndb_op, Field *field,
...
@@ -598,8 +598,8 @@ int ha_ndbcluster::set_ndb_value(NdbOperation *ndb_op, Field *field,
blob_ptr
=
(
char
*
)
""
;
blob_ptr
=
(
char
*
)
""
;
}
}
DBUG_PRINT
(
"value"
,
(
"set blob ptr=%
x
len=%u"
,
DBUG_PRINT
(
"value"
,
(
"set blob ptr=%
p
len=%u"
,
(
unsigned
)
blob_ptr
,
blob_len
));
blob_ptr
,
blob_len
));
DBUG_DUMP
(
"value"
,
(
char
*
)
blob_ptr
,
min
(
blob_len
,
26
));
DBUG_DUMP
(
"value"
,
(
char
*
)
blob_ptr
,
min
(
blob_len
,
26
));
if
(
set_blob_value
)
if
(
set_blob_value
)
...
...
sql/item.cc
View file @
07a9052b
...
@@ -2870,6 +2870,35 @@ void resolve_const_item(THD *thd, Item **ref, Item *comp_item)
...
@@ -2870,6 +2870,35 @@ void resolve_const_item(THD *thd, Item **ref, Item *comp_item)
new_item
=
(
null_value
?
(
Item
*
)
new
Item_null
(
name
)
:
new_item
=
(
null_value
?
(
Item
*
)
new
Item_null
(
name
)
:
(
Item
*
)
new
Item_int
(
name
,
result
,
length
));
(
Item
*
)
new
Item_int
(
name
,
result
,
length
));
}
}
else
if
(
res_type
==
ROW_RESULT
)
{
new_item
=
0
;
/*
If item and comp_item are both Item_rows and have same number of cols
then process items in Item_row one by one. If Item_row contain nulls
substitute it by Item_null. Otherwise just return.
*/
if
(
item
->
result_type
()
==
comp_item
->
result_type
()
&&
((
Item_row
*
)
item
)
->
cols
()
==
((
Item_row
*
)
comp_item
)
->
cols
())
{
Item_row
*
item_row
=
(
Item_row
*
)
item
,
*
comp_item_row
=
(
Item_row
*
)
comp_item
;
if
(
item_row
->
null_inside
())
new_item
=
(
Item
*
)
new
Item_null
(
name
);
else
{
int
i
=
item_row
->
cols
()
-
1
;
for
(;
i
>=
0
;
i
--
)
{
if
(
item_row
->
maybe_null
&&
item_row
->
el
(
i
)
->
is_null
())
{
new_item
=
(
Item
*
)
new
Item_null
(
name
);
break
;
}
resolve_const_item
(
thd
,
item_row
->
addr
(
i
),
comp_item_row
->
el
(
i
));
}
}
}
}
else
else
{
// It must REAL_RESULT
{
// It must REAL_RESULT
double
result
=
item
->
val
();
double
result
=
item
->
val
();
...
...
sql/opt_sum.cc
View file @
07a9052b
...
@@ -108,7 +108,7 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
...
@@ -108,7 +108,7 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
WHERE t2.field IS NULL;
WHERE t2.field IS NULL;
*/
*/
if
(
tl
->
table
->
map
&
where_tables
)
if
(
tl
->
table
->
map
&
where_tables
)
const_result
=
0
;
return
0
;
}
}
else
else
used_tables
|=
tl
->
table
->
map
;
used_tables
|=
tl
->
table
->
map
;
...
@@ -119,7 +119,10 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
...
@@ -119,7 +119,10 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
may be used as the real count.
may be used as the real count.
*/
*/
if
(
tl
->
table
->
file
->
table_flags
()
&
HA_NOT_EXACT_COUNT
)
if
(
tl
->
table
->
file
->
table_flags
()
&
HA_NOT_EXACT_COUNT
)
{
is_exact_count
=
FALSE
;
is_exact_count
=
FALSE
;
count
=
1
;
// ensure count != 0
}
else
else
{
{
tl
->
table
->
file
->
info
(
HA_STATUS_VARIABLE
|
HA_STATUS_NO_LOCK
);
tl
->
table
->
file
->
info
(
HA_STATUS_VARIABLE
|
HA_STATUS_NO_LOCK
);
...
@@ -127,9 +130,6 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
...
@@ -127,9 +130,6 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
}
}
}
}
if
(
!
const_result
)
return
0
;
/*
/*
Iterate through all items in the SELECT clause and replace
Iterate through all items in the SELECT clause and replace
COUNT(), MIN() and MAX() with constants (if possible).
COUNT(), MIN() and MAX() with constants (if possible).
...
@@ -150,8 +150,8 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
...
@@ -150,8 +150,8 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
if
(
!
conds
&&
!
((
Item_sum_count
*
)
item
)
->
args
[
0
]
->
maybe_null
&&
if
(
!
conds
&&
!
((
Item_sum_count
*
)
item
)
->
args
[
0
]
->
maybe_null
&&
!
outer_tables
&&
is_exact_count
)
!
outer_tables
&&
is_exact_count
)
{
{
((
Item_sum_count
*
)
item
)
->
make_const
(
count
);
((
Item_sum_count
*
)
item
)
->
make_const
(
count
);
recalc_const_item
=
1
;
recalc_const_item
=
1
;
}
}
else
else
const_result
=
0
;
const_result
=
0
;
...
@@ -234,7 +234,7 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
...
@@ -234,7 +234,7 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
}
}
if
(
!
count
)
if
(
!
count
)
{
{
/* If count
!= 1
, then we know that is_exact_count == TRUE. */
/* If count
== 0
, then we know that is_exact_count == TRUE. */
((
Item_sum_min
*
)
item_sum
)
->
clear
();
/* Set to NULL. */
((
Item_sum_min
*
)
item_sum
)
->
clear
();
/* Set to NULL. */
}
}
else
else
...
...
sql/sql_delete.cc
View file @
07a9052b
...
@@ -27,8 +27,8 @@
...
@@ -27,8 +27,8 @@
#include "ha_innodb.h"
#include "ha_innodb.h"
#include "sql_select.h"
#include "sql_select.h"
int
mysql_delete
(
THD
*
thd
,
TABLE_LIST
*
table_list
,
COND
*
conds
,
SQL_LIST
*
order
,
int
mysql_delete
(
THD
*
thd
,
TABLE_LIST
*
table_list
,
COND
*
conds
,
ha_rows
limit
,
ulong
options
)
SQL_LIST
*
order
,
ha_rows
limit
,
ulong
options
)
{
{
int
error
;
int
error
;
TABLE
*
table
;
TABLE
*
table
;
...
@@ -266,6 +266,7 @@ int mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds)
...
@@ -266,6 +266,7 @@ int mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds)
select_lex
.
table_list
.
first
);
select_lex
.
table_list
.
first
);
DBUG_ENTER
(
"mysql_prepare_delete"
);
DBUG_ENTER
(
"mysql_prepare_delete"
);
thd
->
allow_sum_func
=
0
;
if
(
setup_conds
(
thd
,
delete_table_list
,
conds
)
||
if
(
setup_conds
(
thd
,
delete_table_list
,
conds
)
||
setup_ftfuncs
(
&
thd
->
lex
->
select_lex
))
setup_ftfuncs
(
&
thd
->
lex
->
select_lex
))
DBUG_RETURN
(
-
1
);
DBUG_RETURN
(
-
1
);
...
...
sql/sql_lex.cc
View file @
07a9052b
...
@@ -160,7 +160,6 @@ void lex_start(THD *thd, uchar *buf,uint length)
...
@@ -160,7 +160,6 @@ void lex_start(THD *thd, uchar *buf,uint length)
lex
->
duplicates
=
DUP_ERROR
;
lex
->
duplicates
=
DUP_ERROR
;
lex
->
ignore
=
0
;
lex
->
ignore
=
0
;
lex
->
proc_list
.
first
=
0
;
lex
->
proc_list
.
first
=
0
;
thd
->
allow_sum_func
=
0
;
}
}
void
lex_end
(
LEX
*
lex
)
void
lex_end
(
LEX
*
lex
)
...
...
sql/sql_load.cc
View file @
07a9052b
...
@@ -429,8 +429,6 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
...
@@ -429,8 +429,6 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
while
((
sql_field
=
(
Item_field
*
)
it
++
))
while
((
sql_field
=
(
Item_field
*
)
it
++
))
{
{
Field
*
field
=
sql_field
->
field
;
Field
*
field
=
sql_field
->
field
;
if
(
field
==
table
->
next_number_field
)
table
->
auto_increment_field_not_null
=
TRUE
;
if
(
pos
==
read_info
.
row_end
)
if
(
pos
==
read_info
.
row_end
)
{
{
thd
->
cuted_fields
++
;
/* Not enough fields */
thd
->
cuted_fields
++
;
/* Not enough fields */
...
@@ -443,11 +441,13 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
...
@@ -443,11 +441,13 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
{
{
uint
length
;
uint
length
;
byte
save_chr
;
byte
save_chr
;
if
(
field
==
table
->
next_number_field
)
table
->
auto_increment_field_not_null
=
TRUE
;
if
((
length
=
(
uint
)
(
read_info
.
row_end
-
pos
))
>
if
((
length
=
(
uint
)
(
read_info
.
row_end
-
pos
))
>
field
->
field_length
)
field
->
field_length
)
length
=
field
->
field_length
;
length
=
field
->
field_length
;
save_chr
=
pos
[
length
];
pos
[
length
]
=
'\0'
;
// Safeguard aganst malloc
save_chr
=
pos
[
length
];
pos
[
length
]
=
'\0'
;
// Safeguard aganst malloc
field
->
store
((
char
*
)
pos
,
length
,
read_info
.
read_charset
);
field
->
store
((
char
*
)
pos
,
length
,
read_info
.
read_charset
);
pos
[
length
]
=
save_chr
;
pos
[
length
]
=
save_chr
;
if
((
pos
+=
length
)
>
read_info
.
row_end
)
if
((
pos
+=
length
)
>
read_info
.
row_end
)
pos
=
read_info
.
row_end
;
/* Fills rest with space */
pos
=
read_info
.
row_end
;
/* Fills rest with space */
...
@@ -522,8 +522,6 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
...
@@ -522,8 +522,6 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
length
=
(
uint
)
(
read_info
.
row_end
-
pos
);
length
=
(
uint
)
(
read_info
.
row_end
-
pos
);
Field
*
field
=
sql_field
->
field
;
Field
*
field
=
sql_field
->
field
;
if
(
field
==
table
->
next_number_field
)
table
->
auto_increment_field_not_null
=
TRUE
;
if
(
!
read_info
.
enclosed
&&
if
(
!
read_info
.
enclosed
&&
(
enclosed_length
&&
length
==
4
&&
!
memcmp
(
pos
,
"NULL"
,
4
))
||
(
enclosed_length
&&
length
==
4
&&
!
memcmp
(
pos
,
"NULL"
,
4
))
||
(
length
==
1
&&
read_info
.
found_null
))
(
length
==
1
&&
read_info
.
found_null
))
...
@@ -540,6 +538,8 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
...
@@ -540,6 +538,8 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
}
}
continue
;
continue
;
}
}
if
(
field
==
table
->
next_number_field
)
table
->
auto_increment_field_not_null
=
TRUE
;
field
->
set_notnull
();
field
->
set_notnull
();
read_info
.
row_end
[
0
]
=
0
;
// Safe to change end marker
read_info
.
row_end
[
0
]
=
0
;
// Safe to change end marker
field
->
store
((
char
*
)
read_info
.
row_start
,
length
,
read_info
.
read_charset
);
field
->
store
((
char
*
)
read_info
.
row_start
,
length
,
read_info
.
read_charset
);
...
...
sql/sql_prepare.cc
View file @
07a9052b
...
@@ -1738,7 +1738,6 @@ static void reset_stmt_for_execute(Prepared_statement *stmt)
...
@@ -1738,7 +1738,6 @@ static void reset_stmt_for_execute(Prepared_statement *stmt)
lex
->
current_select
=
&
lex
->
select_lex
;
lex
->
current_select
=
&
lex
->
select_lex
;
if
(
lex
->
result
)
if
(
lex
->
result
)
lex
->
result
->
cleanup
();
lex
->
result
->
cleanup
();
thd
->
allow_sum_func
=
0
;
}
}
...
...
sql/sql_update.cc
View file @
07a9052b
...
@@ -426,6 +426,7 @@ int mysql_prepare_update(THD *thd, TABLE_LIST *table_list,
...
@@ -426,6 +426,7 @@ int mysql_prepare_update(THD *thd, TABLE_LIST *table_list,
bzero
((
char
*
)
&
tables
,
sizeof
(
tables
));
// For ORDER BY
bzero
((
char
*
)
&
tables
,
sizeof
(
tables
));
// For ORDER BY
tables
.
table
=
table
;
tables
.
table
=
table
;
tables
.
alias
=
table_list
->
alias
;
tables
.
alias
=
table_list
->
alias
;
thd
->
allow_sum_func
=
0
;
if
(
setup_tables
(
update_table_list
)
||
if
(
setup_tables
(
update_table_list
)
||
setup_conds
(
thd
,
update_table_list
,
conds
)
||
setup_conds
(
thd
,
update_table_list
,
conds
)
||
...
...
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