Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
66b3e829
Commit
66b3e829
authored
Jun 24, 2011
by
Michael Widenius
Browse files
Options
Browse Files
Download
Plain Diff
Merge with 5.1
parents
424e9a88
6f5f5b94
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
396 additions
and
188 deletions
+396
-188
mysql-test/r/join.result
mysql-test/r/join.result
+19
-0
mysql-test/r/plugin_innodb.result
mysql-test/r/plugin_innodb.result
+11
-0
mysql-test/suite/funcs_1/r/processlist_priv_ps.result
mysql-test/suite/funcs_1/r/processlist_priv_ps.result
+83
-81
mysql-test/suite/funcs_1/r/processlist_val_ps.result
mysql-test/suite/funcs_1/r/processlist_val_ps.result
+192
-90
mysql-test/t/join.test
mysql-test/t/join.test
+18
-0
mysql-test/t/plugin_innodb.test
mysql-test/t/plugin_innodb.test
+27
-0
sql/sql_plugin.cc
sql/sql_plugin.cc
+24
-16
sql/sql_select.cc
sql/sql_select.cc
+21
-0
storage/heap/hp_test2.c
storage/heap/hp_test2.c
+1
-1
No files found.
mysql-test/r/join.result
View file @
66b3e829
drop table if exists t1,t2,t3;
drop view if exists v1,v2;
CREATE TABLE t1 (S1 INT);
CREATE TABLE t2 (S1 INT);
INSERT INTO t1 VALUES (1);
...
...
@@ -1220,4 +1221,22 @@ f1
2
DEALLOCATE PREPARE stmt;
DROP TABLE t1;
#
# Bug LP:798597: Incorrect "Duplicate entry" error with views and
# GROUP BY
#
CREATE TABLE t1 ( f1 int NOT NULL , f2 int NOT NULL ) ;
INSERT INTO t1 VALUES (214,0),(6,6);
CREATE TABLE t2 ( f2 int) ;
INSERT INTO t2 VALUES (88),(88);
CREATE ALGORITHM=MERGE VIEW v1 AS SELECT t1.f1, t2.f2 FROM (t2 LEFT JOIN t1 ON (t2.f2 <> t1.f1)) WHERE (t1.f2 <= 0) ;
CREATE ALGORITHM=MERGE VIEW v2 AS SELECT t1.f1, t2.f2 FROM (t2 LEFT JOIN t1 ON (t2.f2 <> t1.f1)) WHERE (t1.f2 <= 0 or t1.f2 is null) ;
SELECT f1 , MIN(f2) FROM v1 GROUP BY f1;
f1 MIN(f2)
214 88
SELECT f1 , MIN(f2) FROM v2 GROUP BY f1;
f1 MIN(f2)
214 88
drop table t1,t2;
drop view v1,v2;
End of 5.1 tests
mysql-test/r/plugin_innodb.result
0 → 100644
View file @
66b3e829
install plugin example soname 'ha_example.so';
create table t1(a int) engine=example;
drop table t1;
alter table mysql.plugin engine=innodb;
restart
create table t1(a int) engine=example;
select * from t1;
a
drop table t1;
alter table mysql.plugin engine=myisam;
uninstall plugin example;
mysql-test/suite/funcs_1/r/processlist_priv_ps.result
View file @
66b3e829
This diff is collapsed.
Click to expand it.
mysql-test/suite/funcs_1/r/processlist_val_ps.result
View file @
66b3e829
This source diff could not be displayed because it is too large. You can
view the blob
instead.
mysql-test/t/join.test
View file @
66b3e829
...
...
@@ -2,6 +2,7 @@
# Initialization
--
disable_warnings
drop
table
if
exists
t1
,
t2
,
t3
;
drop
view
if
exists
v1
,
v2
;
--
enable_warnings
#
...
...
@@ -921,4 +922,21 @@ EXECUTE stmt;
DEALLOCATE
PREPARE
stmt
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# Bug LP:798597: Incorrect "Duplicate entry" error with views and
--
echo
# GROUP BY
--
echo
#
CREATE
TABLE
t1
(
f1
int
NOT
NULL
,
f2
int
NOT
NULL
)
;
INSERT
INTO
t1
VALUES
(
214
,
0
),(
6
,
6
);
CREATE
TABLE
t2
(
f2
int
)
;
INSERT
INTO
t2
VALUES
(
88
),(
88
);
CREATE
ALGORITHM
=
MERGE
VIEW
v1
AS
SELECT
t1
.
f1
,
t2
.
f2
FROM
(
t2
LEFT
JOIN
t1
ON
(
t2
.
f2
<>
t1
.
f1
))
WHERE
(
t1
.
f2
<=
0
)
;
CREATE
ALGORITHM
=
MERGE
VIEW
v2
AS
SELECT
t1
.
f1
,
t2
.
f2
FROM
(
t2
LEFT
JOIN
t1
ON
(
t2
.
f2
<>
t1
.
f1
))
WHERE
(
t1
.
f2
<=
0
or
t1
.
f2
is
null
)
;
SELECT
f1
,
MIN
(
f2
)
FROM
v1
GROUP
BY
f1
;
SELECT
f1
,
MIN
(
f2
)
FROM
v2
GROUP
BY
f1
;
drop
table
t1
,
t2
;
drop
view
v1
,
v2
;
--
echo
End
of
5.1
tests
mysql-test/t/plugin_innodb.test
0 → 100644
View file @
66b3e829
--
source
include
/
not_embedded
.
inc
--
source
include
/
have_example_plugin
.
inc
--
source
include
/
have_innodb
.
inc
if
(
!
`select count(*) from information_schema.plugins
where plugin_name = 'innodb' and plugin_status = 'active' and
plugin_library is null`
)
{
skip
Need
compiled
-
in
InnoDB
;
}
--
replace_regex
/
\
.
dll
/.
so
/
eval
install
plugin
example
soname
'$HA_EXAMPLE_SO'
;
create
table
t1
(
a
int
)
engine
=
example
;
drop
table
t1
;
alter
table
mysql
.
plugin
engine
=
innodb
;
--
echo
restart
--
source
include
/
restart_mysqld
.
inc
create
table
t1
(
a
int
)
engine
=
example
;
select
*
from
t1
;
drop
table
t1
;
alter
table
mysql
.
plugin
engine
=
myisam
;
uninstall
plugin
example
;
sql/sql_plugin.cc
View file @
66b3e829
...
...
@@ -1432,15 +1432,23 @@ int plugin_init(int *argc, char **argv, int flags)
if
(
register_builtin
(
plugin
,
&
tmp
,
&
plugin_ptr
))
goto
err_unlock
;
/* only initialize MyISAM and CSV at this stage */
if
(
!
(
is_myisam
=
!
my_strcasecmp
(
&
my_charset_latin1
,
plugin
->
name
,
"MyISAM"
))
&&
my_strcasecmp
(
&
my_charset_latin1
,
plugin
->
name
,
"CSV"
))
continue
;
is_myisam
=
!
my_strcasecmp
(
&
my_charset_latin1
,
plugin
->
name
,
"MyISAM"
);
if
(
plugin_ptr
->
state
==
PLUGIN_IS_UNINITIALIZED
&&
plugin_initialize
(
plugin_ptr
))
goto
err_unlock
;
/*
strictly speaking, we should to initialize all plugins,
even for mysqld --help, because important subsystems
may be disabled otherwise, and the help will be incomplete.
For example, if the mysql.plugin table is not MyISAM.
But for now it's an unlikely corner case, and to optimize
mysqld --help for all other users, we will only initialize
MyISAM here.
*/
if
(
!
(
flags
&
PLUGIN_INIT_SKIP_INITIALIZATION
)
||
is_myisam
)
{
if
(
plugin_ptr
->
state
==
PLUGIN_IS_UNINITIALIZED
&&
plugin_initialize
(
plugin_ptr
))
goto
err_unlock
;
}
/*
initialize the global default storage engine so that it may
...
...
@@ -1650,13 +1658,6 @@ static void plugin_load(MEM_ROOT *tmp_root, int *argc, char **argv)
goto
end
;
}
table
->
use_all_columns
();
/*
there're no other threads running yet, so we don't need a mutex.
but plugin_add() before is designed to work in multi-threaded
environment, and it uses safe_mutex_assert_owner(), so we lock
the mutex here to satisfy the assert
*/
pthread_mutex_lock
(
&
LOCK_plugin
);
while
(
!
(
error
=
read_record_info
.
read_record
(
&
read_record_info
)))
{
DBUG_PRINT
(
"info"
,
(
"init plugin record"
));
...
...
@@ -1667,12 +1668,19 @@ static void plugin_load(MEM_ROOT *tmp_root, int *argc, char **argv)
LEX_STRING
name
=
{(
char
*
)
str_name
.
ptr
(),
str_name
.
length
()};
LEX_STRING
dl
=
{(
char
*
)
str_dl
.
ptr
(),
str_dl
.
length
()};
/*
there're no other threads running yet, so we don't need a mutex.
but plugin_add() before is designed to work in multi-threaded
environment, and it uses safe_mutex_assert_owner(), so we lock
the mutex here to satisfy the assert
*/
pthread_mutex_lock
(
&
LOCK_plugin
);
if
(
plugin_add
(
tmp_root
,
&
name
,
&
dl
,
argc
,
argv
,
REPORT_TO_LOG
))
sql_print_warning
(
"Couldn't load plugin named '%s' with soname '%s'."
,
str_name
.
c_ptr
(),
str_dl
.
c_ptr
());
free_root
(
tmp_root
,
MYF
(
MY_MARK_BLOCKS_FREE
));
pthread_mutex_unlock
(
&
LOCK_plugin
);
}
pthread_mutex_unlock
(
&
LOCK_plugin
);
if
(
error
>
0
)
sql_print_error
(
ER
(
ER_GET_ERRNO
),
my_errno
);
end_read_record
(
&
read_record_info
);
...
...
sql/sql_select.cc
View file @
66b3e829
...
...
@@ -10645,15 +10645,30 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
(
ha_base_keytype
)
key_part_info
->
type
==
HA_KEYTYPE_VARTEXT1
||
(
ha_base_keytype
)
key_part_info
->
type
==
HA_KEYTYPE_VARTEXT2
)
?
0
:
FIELDFLAG_BINARY
;
if
(
!
using_unique_constraint
)
{
cur_group
->
buff
=
(
char
*
)
group_buff
;
if
(
maybe_null
&&
!
field
->
null_bit
)
{
/*
This can only happen in the unusual case where an outer join
table was found to be not-nullable by the optimizer and we
the item can't really be null.
We solve this by marking the item as !maybe_null to ensure
that the key,field and item definition match.
*/
(
*
cur_group
->
item
)
->
maybe_null
=
maybe_null
=
0
;
}
if
(
!
(
cur_group
->
field
=
field
->
new_key_field
(
thd
->
mem_root
,
table
,
group_buff
+
test
(
maybe_null
),
field
->
null_ptr
,
field
->
null_bit
)))
goto
err
;
/* purecov: inspected */
if
(
maybe_null
)
{
/*
...
...
@@ -10675,6 +10690,12 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
}
keyinfo
->
key_length
+=
key_part_info
->
length
;
}
/*
Ensure we didn't overrun the group buffer. The < is only true when
some maybe_null fields was changed to be not null fields.
*/
DBUG_ASSERT
(
using_unique_constraint
||
group_buff
<=
param
->
group_buff
+
param
->
group_length
);
}
if
(
distinct
&&
field_count
!=
param
->
hidden_field_count
)
...
...
storage/heap/hp_test2.c
View file @
66b3e829
...
...
@@ -22,7 +22,7 @@
#undef DBUG_OFF
#endif
#ifndef SAFEMALLOC
#define SAFEMALLOC
#define SAFEMALLOC
1
#endif
#include "heapdef.h"
/* Because of hp_find_block */
...
...
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