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
f2e2b347
Commit
f2e2b347
authored
Dec 09, 2008
by
Patrick Crews
Browse files
Options
Browse Files
Download
Plain Diff
merge
parents
3c7a87c1
2894af40
Changes
24
Show whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
280 additions
and
32 deletions
+280
-32
client/mysql_upgrade.c
client/mysql_upgrade.c
+14
-1
mysql-test/r/fulltext.result
mysql-test/r/fulltext.result
+9
-0
mysql-test/r/func_str.result
mysql-test/r/func_str.result
+9
-3
mysql-test/r/myisam_data_pointer_size_func.result
mysql-test/r/myisam_data_pointer_size_func.result
+1
-0
mysql-test/r/myisampack.result
mysql-test/r/myisampack.result
+22
-0
mysql-test/r/partition_datatype.result
mysql-test/r/partition_datatype.result
+1
-1
mysql-test/r/type_bit.result
mysql-test/r/type_bit.result
+15
-0
mysql-test/r/type_float.result
mysql-test/r/type_float.result
+6
-6
mysql-test/suite/binlog/r/binlog_innodb_row.result
mysql-test/suite/binlog/r/binlog_innodb_row.result
+31
-0
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
...l-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
+0
-2
mysql-test/suite/binlog/t/binlog_innodb_row.test
mysql-test/suite/binlog/t/binlog_innodb_row.test
+42
-0
mysql-test/t/fulltext.test
mysql-test/t/fulltext.test
+9
-0
mysql-test/t/func_str.test
mysql-test/t/func_str.test
+10
-0
mysql-test/t/myisam_data_pointer_size_func.test
mysql-test/t/myisam_data_pointer_size_func.test
+1
-0
mysql-test/t/myisampack.test
mysql-test/t/myisampack.test
+25
-0
mysql-test/t/type_bit.test
mysql-test/t/type_bit.test
+15
-0
mysql-test/t/type_float.test
mysql-test/t/type_float.test
+1
-1
sql/field.cc
sql/field.cc
+1
-1
sql/item.cc
sql/item.cc
+3
-0
sql/item_strfunc.cc
sql/item_strfunc.cc
+4
-3
sql/log.cc
sql/log.cc
+13
-5
sql/sql_show.cc
sql/sql_show.cc
+15
-3
sql/sql_table.cc
sql/sql_table.cc
+1
-0
storage/myisam/ft_boolean_search.c
storage/myisam/ft_boolean_search.c
+32
-6
No files found.
client/mysql_upgrade.c
View file @
f2e2b347
...
...
@@ -616,6 +616,18 @@ static int run_mysqlcheck_upgrade(void)
"--check-upgrade"
,
"--all-databases"
,
"--auto-repair"
,
NULL
);
}
static
int
run_mysqlcheck_fixnames
(
void
)
{
verbose
(
"Running 'mysqlcheck'..."
);
return
run_tool
(
mysqlcheck_path
,
NULL
,
/* Send output from mysqlcheck directly to screen */
"--no-defaults"
,
ds_args
.
str
,
"--all-databases"
,
"--fix-db-names"
,
"--fix-table-names"
,
NULL
);
...
...
@@ -784,7 +796,8 @@ int main(int argc, char **argv)
/*
Run "mysqlcheck" and "mysql_fix_privilege_tables.sql"
*/
if
(
run_mysqlcheck_upgrade
()
||
if
(
run_mysqlcheck_fixnames
()
||
run_mysqlcheck_upgrade
()
||
run_sql_fix_privilege_tables
())
{
/*
...
...
mysql-test/r/fulltext.result
View file @
f2e2b347
...
...
@@ -522,3 +522,12 @@ WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref b b 5 const 4 Using where
DROP TABLE t1;
CREATE TABLE t1(a CHAR(10));
INSERT INTO t1 VALUES('aaa15');
SELECT MATCH(a) AGAINST('aaa1* aaa14 aaa16' IN BOOLEAN MODE) FROM t1;
MATCH(a) AGAINST('aaa1* aaa14 aaa16' IN BOOLEAN MODE)
1
SELECT MATCH(a) AGAINST('aaa1* aaa14 aaa15 aaa16' IN BOOLEAN MODE) FROM t1;
MATCH(a) AGAINST('aaa1* aaa14 aaa15 aaa16' IN BOOLEAN MODE)
2
DROP TABLE t1;
mysql-test/r/func_str.result
View file @
f2e2b347
...
...
@@ -717,8 +717,6 @@ insert(_latin2'abcd',2,3,_latin2'ef'),
replace(_latin2'abcd',_latin2'b',_latin2'B'),
encode('abcd','ab')
;
Warnings:
Warning 1265 Data truncated for column 'format(130,10)' at row 1
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
...
...
@@ -727,7 +725,7 @@ t1 CREATE TABLE `t1` (
`conv(130,16,10)` varchar(64) DEFAULT NULL,
`hex(130)` varchar(6) NOT NULL DEFAULT '',
`char(130)` varbinary(4) NOT NULL DEFAULT '',
`format(130,10)` varchar(
4
) NOT NULL DEFAULT '',
`format(130,10)` varchar(
37
) NOT NULL DEFAULT '',
`left(_latin2'a',1)` varchar(1) CHARACTER SET latin2 NOT NULL DEFAULT '',
`right(_latin2'a',1)` varchar(1) CHARACTER SET latin2 NOT NULL DEFAULT '',
`lcase(_latin2'a')` varchar(1) CHARACTER SET latin2 NOT NULL DEFAULT '',
...
...
@@ -2513,4 +2511,12 @@ SELECT HEX(c1) from v1;
HEX(c1)
414243
DROP VIEW v1;
create table t1(a float);
insert into t1 values (1.33);
select format(a, 2) from t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def format(a, 2) 253 49 4 Y 0 31 8
format(a, 2)
1.33
drop table t1;
End of 5.0 tests
mysql-test/r/myisam_data_pointer_size_func.result
View file @
f2e2b347
...
...
@@ -40,3 +40,4 @@ count(*)
65536
DROP PROCEDURE sp_addRec;
DROP TABLE t1;
SET @@global.myisam_data_pointer_size = default;
mysql-test/r/myisampack.result
View file @
f2e2b347
...
...
@@ -27,3 +27,25 @@ CHECK TABLE t1 EXTENDED;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1;
drop table if exists t1;
create table t1(f1 int, f2 varchar(255));
insert into t1 values(1, 'foo'), (2, 'bar');
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
flush tables;
optimize table t1;
Table Op Msg_type Msg_text
test.t1 optimize error Table 'test.t1' is read only
Warnings:
Error 1036 Table 't1' is read only
drop table t1;
mysql-test/r/partition_datatype.result
View file @
f2e2b347
...
...
@@ -324,7 +324,7 @@ partition by hash (a)
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` bit(27) NOT NULL DEFAULT
'\0\0\0\
0',
`a` bit(27) NOT NULL DEFAULT
b'
0',
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (a)
...
...
mysql-test/r/type_bit.result
View file @
f2e2b347
...
...
@@ -708,6 +708,21 @@ HEX(b1) HEX(b2) i2
1 0 100
1 0 200
DROP TABLE t1, t2;
CREATE TABLE IF NOT EXISTS t1 (
f1 bit(2) NOT NULL default b'10',
f2 bit(14) NOT NULL default b'11110000111100'
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`f1` bit(2) NOT NULL DEFAULT b'10',
`f2` bit(14) NOT NULL DEFAULT b'11110000111100'
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
DROP TABLE t1;
CREATE TABLE IF NOT EXISTS t1 (
f1 bit(2) NOT NULL default b''
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
ERROR 42000: Invalid default value for 'f1'
End of 5.0 tests
create table t1(a bit(7));
insert into t1 values(0x40);
...
...
mysql-test/r/type_float.result
View file @
f2e2b347
...
...
@@ -398,11 +398,11 @@ insert into t1(d) values (9.2233720368547777e+18),
(9.22337203685479e18),
(1.84e19);
update t1 set u = d;
select
*
from t1;
d
u
9
.22337203685478e+18 9
223372036854775808
9
.22337203685478e+18 9
223372036854779904
9
.22337203685479e+18 9
223372036854790144
1
.84e+19 1
8400000000000000000
select
u
from t1;
u
9223372036854775808
9223372036854779904
9223372036854790144
18400000000000000000
drop table t1;
End of 5.0 tests
mysql-test/suite/binlog/r/binlog_innodb_row.result
0 → 100644
View file @
f2e2b347
CREATE TABLE t1 (i int unique) ENGINE=innodb;
reset master;
begin;
insert into t1 values (1),(2);
*** the following UPDATE query wont generate any updates for the binlog ***
update t1 set i = 3 where i < 3;
ERROR 23000: Duplicate entry '3' for key 'i'
commit;
*** Results of the test: the binlog must have only Write_rows events not any Update_rows ***
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
delete from t1;
reset master;
begin;
insert into t1 values (1),(2);
*** the following UPDATE query wont generate any updates for the binlog ***
insert into t1 values (3),(4),(1),(2);
ERROR 23000: Duplicate entry '1' for key 'i'
commit;
*** Results of the test: the binlog must have only one Write_rows event not two ***
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
drop table t1;
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
View file @
f2e2b347
...
...
@@ -385,8 +385,6 @@ master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `test`; COMMIT
master-bin.000001 # Query # # use `test`; DROP TABLE t2
master-bin.000001 # Query # # use `test`; BEGIN
...
...
mysql-test/suite/binlog/t/binlog_innodb_row.test
0 → 100644
View file @
f2e2b347
#
# Tests of innodb/binlog with the row binlog format
#
source
include
/
have_innodb
.
inc
;
source
include
/
have_log_bin
.
inc
;
source
include
/
have_binlog_format_row
.
inc
;
#
# Bug #40221 Replication failure on RBR + UPDATE the primary key
#
CREATE
TABLE
t1
(
i
int
unique
)
ENGINE
=
innodb
;
reset
master
;
# part 1: update can cause the dup key
begin
;
insert
into
t1
values
(
1
),(
2
);
--
echo
***
the
following
UPDATE
query
wont
generate
any
updates
for
the
binlog
***
--
error
ER_DUP_ENTRY
update
t1
set
i
=
3
where
i
<
3
;
commit
;
--
echo
***
Results
of
the
test
:
the
binlog
must
have
only
Write_rows
events
not
any
Update_rows
***
source
include
/
show_binlog_events
.
inc
;
# part 2: insert can cause the dup key
delete
from
t1
;
reset
master
;
begin
;
insert
into
t1
values
(
1
),(
2
);
--
echo
***
the
following
UPDATE
query
wont
generate
any
updates
for
the
binlog
***
--
error
ER_DUP_ENTRY
insert
into
t1
values
(
3
),(
4
),(
1
),(
2
);
commit
;
--
echo
***
Results
of
the
test
:
the
binlog
must
have
only
one
Write_rows
event
not
two
***
source
include
/
show_binlog_events
.
inc
;
drop
table
t1
;
mysql-test/t/fulltext.test
View file @
f2e2b347
...
...
@@ -445,3 +445,12 @@ EXPLAIN SELECT * FROM t1 FORCE INDEX(b)
WHERE
MATCH
(
a
)
AGAINST
(
'test'
IN
BOOLEAN
MODE
)
AND
b
=
1
;
DROP
TABLE
t1
;
#
# BUG#37245 - Full text search problem
#
CREATE
TABLE
t1
(
a
CHAR
(
10
));
INSERT
INTO
t1
VALUES
(
'aaa15'
);
SELECT
MATCH
(
a
)
AGAINST
(
'aaa1* aaa14 aaa16'
IN
BOOLEAN
MODE
)
FROM
t1
;
SELECT
MATCH
(
a
)
AGAINST
(
'aaa1* aaa14 aaa15 aaa16'
IN
BOOLEAN
MODE
)
FROM
t1
;
DROP
TABLE
t1
;
mysql-test/t/func_str.test
View file @
f2e2b347
...
...
@@ -1263,4 +1263,14 @@ CREATE VIEW v1 AS SELECT CHAR(0x414243) as c1;
SELECT
HEX
(
c1
)
from
v1
;
DROP
VIEW
v1
;
#
# Bug #35558 Wrong server metadata blows up the client
#
create
table
t1
(
a
float
);
insert
into
t1
values
(
1.33
);
--
enable_metadata
select
format
(
a
,
2
)
from
t1
;
--
disable_metadata
drop
table
t1
;
--
echo
End
of
5.0
tests
mysql-test/t/myisam_data_pointer_size_func.test
View file @
f2e2b347
...
...
@@ -105,6 +105,7 @@ SELECT count(*) from t1;
DROP
PROCEDURE
sp_addRec
;
DROP
TABLE
t1
;
SET
@@
global
.
myisam_data_pointer_size
=
default
;
################################################################
# End of functionality Testing for myisam_data_pointer_size #
################################################################
...
...
mysql-test/t/myisampack.test
View file @
f2e2b347
...
...
@@ -31,3 +31,28 @@ FLUSH TABLES;
--
exec
$MYISAMCHK
-
s
--
unpack
$MYSQLTEST_VARDIR
/
master
-
data
/
test
/
t1
CHECK
TABLE
t1
EXTENDED
;
DROP
TABLE
t1
;
#
# Bug#40949 Debug version of MySQL server crashes when run OPTIMIZE on compressed table.
#
--
disable_warnings
drop
table
if
exists
t1
;
--
enable_warnings
create
table
t1
(
f1
int
,
f2
varchar
(
255
));
insert
into
t1
values
(
1
,
'foo'
),
(
2
,
'bar'
);
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
insert
into
t1
select
*
from
t1
;
flush
tables
;
--
exec
$MYISAMPACK
$MYSQLTEST_VARDIR
/
master
-
data
/
test
/
t1
optimize
table
t1
;
drop
table
t1
;
mysql-test/t/type_bit.test
View file @
f2e2b347
...
...
@@ -352,6 +352,21 @@ SELECT HEX(b1), HEX(b2), i2 FROM t2
DROP
TABLE
t1
,
t2
;
#
# Bug #35796 SHOW CREATE TABLE and default value for BIT field
#
CREATE
TABLE
IF
NOT
EXISTS
t1
(
f1
bit
(
2
)
NOT
NULL
default
b
'10'
,
f2
bit
(
14
)
NOT
NULL
default
b
'11110000111100'
)
ENGINE
=
MyISAM
DEFAULT
CHARSET
=
latin1
COLLATE
=
latin1_general_ci
;
SHOW
CREATE
TABLE
t1
;
DROP
TABLE
t1
;
--
error
ER_INVALID_DEFAULT
CREATE
TABLE
IF
NOT
EXISTS
t1
(
f1
bit
(
2
)
NOT
NULL
default
b
''
)
ENGINE
=
MyISAM
DEFAULT
CHARSET
=
latin1
COLLATE
=
latin1_general_ci
;
--
echo
End
of
5.0
tests
#
...
...
mysql-test/t/type_float.test
View file @
f2e2b347
...
...
@@ -265,7 +265,7 @@ insert into t1(d) values (9.2233720368547777e+18),
(
1.84e19
);
update
t1
set
u
=
d
;
select
*
from
t1
;
select
u
from
t1
;
drop
table
t1
;
...
...
sql/field.cc
View file @
f2e2b347
...
...
@@ -3835,7 +3835,7 @@ int Field_longlong::store(double nr)
error
=
1
;
}
else
res
=
(
longlong
)
(
ulonglong
)
nr
;
res
=
(
longlong
)
double2ulonglong
(
nr
)
;
}
else
{
...
...
sql/item.cc
View file @
f2e2b347
...
...
@@ -5114,6 +5114,9 @@ int Item_hex_string::save_in_field(Field *field, bool no_conversions)
ulonglong
nr
;
uint32
length
=
str_value
.
length
();
if
(
!
length
)
return
1
;
if
(
length
>
8
)
{
nr
=
field
->
flags
&
UNSIGNED_FLAG
?
ULONGLONG_MAX
:
LONGLONG_MAX
;
...
...
sql/item_strfunc.cc
View file @
f2e2b347
...
...
@@ -2033,10 +2033,11 @@ Item_func_format::Item_func_format(Item *org, Item *dec)
void
Item_func_format
::
fix_length_and_dec
()
{
collation
.
set
(
default_charset
());
uint
char_length
=
args
[
0
]
->
max_length
/
args
[
0
]
->
collation
.
collation
->
mbmaxlen
;
max_length
=
((
char_length
+
(
char_length
-
args
[
0
]
->
decimals
)
/
3
)
*
collation
.
collation
->
mbmaxlen
);
uint
max_sep_count
=
char_length
/
3
+
(
decimals
?
1
:
0
)
+
/*sign*/
1
;
collation
.
set
(
default_charset
());
max_length
=
(
char_length
+
max_sep_count
+
decimals
)
*
collation
.
collation
->
mbmaxlen
;
}
...
...
sql/log.cc
View file @
f2e2b347
...
...
@@ -207,6 +207,7 @@ public:
truncate
(
0
);
before_stmt_pos
=
MY_OFF_T_UNDEF
;
trans_log
.
end_of_file
=
max_binlog_cache_size
;
DBUG_ASSERT
(
empty
());
}
Rows_log_event
*
pending
()
const
...
...
@@ -1377,8 +1378,6 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data,
FLAGSTR
(
thd
->
options
,
OPTION_NOT_AUTOCOMMIT
),
FLAGSTR
(
thd
->
options
,
OPTION_BEGIN
)));
thd
->
binlog_flush_pending_rows_event
(
TRUE
);
/*
NULL denotes ROLLBACK with nothing to replicate: i.e., rollback of
only transactional tables. If the transaction contain changes to
...
...
@@ -1387,6 +1386,7 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data,
*/
if
(
end_ev
!=
NULL
)
{
thd
->
binlog_flush_pending_rows_event
(
TRUE
);
/*
Doing a commit or a rollback including non-transactional tables,
i.e., ending a transaction where we might write the transaction
...
...
@@ -1435,6 +1435,7 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data,
mysql_bin_log
.
update_table_map_version
();
}
DBUG_ASSERT
(
thd
->
binlog_get_pending_rows_event
()
==
NULL
);
DBUG_RETURN
(
error
);
}
...
...
@@ -1466,6 +1467,7 @@ static int binlog_prepare(handlerton *hton, THD *thd, bool all)
*/
static
int
binlog_commit
(
handlerton
*
hton
,
THD
*
thd
,
bool
all
)
{
int
error
=
0
;
DBUG_ENTER
(
"binlog_commit"
);
binlog_trx_data
*
const
trx_data
=
(
binlog_trx_data
*
)
thd_get_ha_data
(
thd
,
binlog_hton
);
...
...
@@ -1499,10 +1501,14 @@ static int binlog_commit(handlerton *hton, THD *thd, bool all)
{
Query_log_event
qev
(
thd
,
STRING_WITH_LEN
(
"COMMIT"
),
TRUE
,
FALSE
);
qev
.
error_code
=
0
;
// see comment in MYSQL_LOG::write(THD, IO_CACHE)
int
error
=
binlog_end_trans
(
thd
,
trx_data
,
&
qev
,
all
);
DBUG_RETURN
(
error
)
;
error
=
binlog_end_trans
(
thd
,
trx_data
,
&
qev
,
all
);
goto
end
;
}
DBUG_RETURN
(
0
);
end:
if
(
!
all
)
trx_data
->
before_stmt_pos
=
MY_OFF_T_UNDEF
;
// part of the stmt commit
DBUG_RETURN
(
error
);
}
/**
...
...
@@ -1562,6 +1568,8 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
*/
error
=
binlog_end_trans
(
thd
,
trx_data
,
0
,
all
);
}
if
(
!
all
)
trx_data
->
before_stmt_pos
=
MY_OFF_T_UNDEF
;
// part of the stmt rollback
DBUG_RETURN
(
error
);
}
...
...
sql/sql_show.cc
View file @
f2e2b347
...
...
@@ -993,7 +993,7 @@ static bool get_field_default_value(THD *thd, TABLE *table,
{
bool
has_default
;
bool
has_now_default
;
enum
enum_field_types
field_type
=
field
->
type
();
/*
We are using CURRENT_TIMESTAMP instead of NOW because it is
more standard
...
...
@@ -1001,7 +1001,7 @@ static bool get_field_default_value(THD *thd, TABLE *table,
has_now_default
=
table
->
timestamp_field
==
field
&&
field
->
unireg_check
!=
Field
::
TIMESTAMP_UN_FIELD
;
has_default
=
(
field
->
type
()
!=
FIELD_TYPE_BLOB
&&
has_default
=
(
field
_type
!=
FIELD_TYPE_BLOB
&&
!
(
field
->
flags
&
NO_DEFAULT_VALUE_FLAG
)
&&
field
->
unireg_check
!=
Field
::
NEXT_NUMBER
&&
!
((
thd
->
variables
.
sql_mode
&
(
MODE_MYSQL323
|
MODE_MYSQL40
))
...
...
@@ -1016,6 +1016,18 @@ static bool get_field_default_value(THD *thd, TABLE *table,
{
// Not null by default
char
tmp
[
MAX_FIELD_WIDTH
];
String
type
(
tmp
,
sizeof
(
tmp
),
field
->
charset
());
if
(
field_type
==
MYSQL_TYPE_BIT
)
{
longlong
dec
=
field
->
val_int
();
char
*
ptr
=
longlong2str
(
dec
,
tmp
+
2
,
2
);
uint32
length
=
(
uint32
)
(
ptr
-
tmp
);
tmp
[
0
]
=
'b'
;
tmp
[
1
]
=
'\''
;
tmp
[
length
]
=
'\''
;
type
.
length
(
length
+
1
);
quoted
=
0
;
}
else
field
->
val_str
(
&
type
);
if
(
type
.
length
())
{
...
...
sql/sql_table.cc
View file @
f2e2b347
...
...
@@ -4319,6 +4319,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
table
->
table
=
0
;
// For query cache
if
(
protocol
->
write
())
goto
err
;
thd
->
main_da
.
reset_diagnostics_area
();
continue
;
/* purecov: end */
}
...
...
storage/myisam/ft_boolean_search.c
View file @
f2e2b347
...
...
@@ -161,11 +161,11 @@ static int FTB_WORD_cmp(my_off_t *v, FTB_WORD *a, FTB_WORD *b)
static
int
FTB_WORD_cmp_list
(
CHARSET_INFO
*
cs
,
FTB_WORD
**
a
,
FTB_WORD
**
b
)
{
/* ORDER BY word
DESC, ndepth DESC
*/
int
i
=
ha_compare_text
(
cs
,
(
uchar
*
)
(
*
b
)
->
word
+
1
,(
*
b
)
->
len
-
1
,
(
uchar
*
)
(
*
a
)
->
word
+
1
,(
*
a
)
->
len
-
1
,
0
,
0
);
/* ORDER BY word
, ndepth
*/
int
i
=
ha_compare_text
(
cs
,
(
uchar
*
)
(
*
a
)
->
word
+
1
,
(
*
a
)
->
len
-
1
,
(
uchar
*
)
(
*
b
)
->
word
+
1
,
(
*
b
)
->
len
-
1
,
0
,
0
);
if
(
!
i
)
i
=
CMP_NUM
((
*
b
)
->
ndepth
,(
*
a
)
->
ndepth
);
i
=
CMP_NUM
((
*
a
)
->
ndepth
,
(
*
b
)
->
ndepth
);
return
i
;
}
...
...
@@ -865,23 +865,49 @@ static int ftb_find_relevance_add_word(MYSQL_FTPARSER_PARAM *param,
FT_INFO
*
ftb
=
ftb_param
->
ftb
;
FTB_WORD
*
ftbw
;
int
a
,
b
,
c
;
/*
Find right-most element in the array of query words matching this
word from a document.
*/
for
(
a
=
0
,
b
=
ftb
->
queue
.
elements
,
c
=
(
a
+
b
)
/
2
;
b
-
a
>
1
;
c
=
(
a
+
b
)
/
2
)
{
ftbw
=
ftb
->
list
[
c
];
if
(
ha_compare_text
(
ftb
->
charset
,
(
uchar
*
)
word
,
len
,
(
uchar
*
)
ftbw
->
word
+
1
,
ftbw
->
len
-
1
,
(
my_bool
)
(
ftbw
->
flags
&
FTB_FLAG_TRUNC
),
0
)
>
0
)
(
my_bool
)
(
ftbw
->
flags
&
FTB_FLAG_TRUNC
),
0
)
<
0
)
b
=
c
;
else
a
=
c
;
}
/*
If there were no words with truncation operator, we iterate to the
beginning of an array until array element is equal to the word from
a document. This is done mainly because the same word may be
mentioned twice (or more) in the query.
In case query has words with truncation operator we must iterate
to the beginning of the array. There may be non-matching query words
between matching word with truncation operator and the right-most
matching element. E.g., if we're looking for 'aaa15' in an array of
'aaa1* aaa14 aaa15 aaa16'.
Worse of that there still may be match even if the binary search
above didn't find matching element. E.g., if we're looking for
'aaa15' in an array of 'aaa1* aaa14 aaa16'. The binary search will
stop at 'aaa16'.
*/
for
(;
c
>=
0
;
c
--
)
{
ftbw
=
ftb
->
list
[
c
];
if
(
ha_compare_text
(
ftb
->
charset
,
(
uchar
*
)
word
,
len
,
(
uchar
*
)
ftbw
->
word
+
1
,
ftbw
->
len
-
1
,
(
my_bool
)(
ftbw
->
flags
&
FTB_FLAG_TRUNC
),
0
))
{
if
(
ftb
->
with_scan
&
FTB_FLAG_TRUNC
)
continue
;
else
break
;
}
if
(
ftbw
->
docid
[
1
]
==
ftb
->
info
->
lastpos
)
continue
;
ftbw
->
docid
[
1
]
=
ftb
->
info
->
lastpos
;
...
...
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