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
6ec43a9d
Commit
6ec43a9d
authored
Aug 20, 2003
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge
sql/sql_parse.cc: Auto merged sql/sql_union.cc: SCCS merged
parents
5e00fc02
a2152385
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
31 additions
and
18 deletions
+31
-18
mysql-test/r/type_set.result
mysql-test/r/type_set.result
+2
-0
mysql-test/t/type_set.test
mysql-test/t/type_set.test
+2
-0
sql/sql_parse.cc
sql/sql_parse.cc
+3
-2
sql/sql_union.cc
sql/sql_union.cc
+24
-16
No files found.
mysql-test/r/type_set.result
View file @
6ec43a9d
...
@@ -13,3 +13,5 @@ t1 CREATE TABLE `t1` (
...
@@ -13,3 +13,5 @@ t1 CREATE TABLE `t1` (
`a` set('','a','b') NOT NULL default 'b'
`a` set('','a','b') NOT NULL default 'b'
) TYPE=MyISAM CHARSET=latin1
) TYPE=MyISAM CHARSET=latin1
drop table t1;
drop table t1;
CREATE TABLE t1 ( user varchar(64) NOT NULL default '', path varchar(255) NOT NULL default '', privilege set('select','RESERVED30','RESERVED29','RESERVED28','RESERVED27','RESERVED26', 'RESERVED25','RESERVED24','data.delete','RESERVED22','RESERVED21', 'RESERVED20','data.insert.none','data.insert.approve', 'data.insert.delete','data.insert.move','data.insert.propose', 'data.insert.reject','RESERVED13','RESERVED12','RESERVED11','RESERVED10', 'RESERVED09','data.update','RESERVED07','RESERVED06','RESERVED05', 'RESERVED04','metadata.delete','metadata.put','RESERVED01','RESERVED00') NOT NULL default '', KEY user (user) ) TYPE=MyISAM CHARSET=utf8;
DROP TABLE t1;
mysql-test/t/type_set.test
View file @
6ec43a9d
...
@@ -12,3 +12,5 @@ drop table t1;
...
@@ -12,3 +12,5 @@ drop table t1;
create
table
t1
(
a
set
(
' '
,
'a'
,
'b '
)
not
null
default
'b '
);
create
table
t1
(
a
set
(
' '
,
'a'
,
'b '
)
not
null
default
'b '
);
show
create
table
t1
;
show
create
table
t1
;
drop
table
t1
;
drop
table
t1
;
CREATE
TABLE
t1
(
user
varchar
(
64
)
NOT
NULL
default
''
,
path
varchar
(
255
)
NOT
NULL
default
''
,
privilege
set
(
'select'
,
'RESERVED30'
,
'RESERVED29'
,
'RESERVED28'
,
'RESERVED27'
,
'RESERVED26'
,
'RESERVED25'
,
'RESERVED24'
,
'data.delete'
,
'RESERVED22'
,
'RESERVED21'
,
'RESERVED20'
,
'data.insert.none'
,
'data.insert.approve'
,
'data.insert.delete'
,
'data.insert.move'
,
'data.insert.propose'
,
'data.insert.reject'
,
'RESERVED13'
,
'RESERVED12'
,
'RESERVED11'
,
'RESERVED10'
,
'RESERVED09'
,
'data.update'
,
'RESERVED07'
,
'RESERVED06'
,
'RESERVED05'
,
'RESERVED04'
,
'metadata.delete'
,
'metadata.put'
,
'RESERVED01'
,
'RESERVED00'
)
NOT
NULL
default
''
,
KEY
user
(
user
)
)
TYPE
=
MyISAM
CHARSET
=
utf8
;
DROP
TABLE
t1
;
sql/sql_parse.cc
View file @
6ec43a9d
...
@@ -4038,7 +4038,8 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
...
@@ -4038,7 +4038,8 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
}
}
}
}
if
(
new_field
->
length
>
MAX_FIELD_CHARLENGTH
||
if
((
new_field
->
length
>
MAX_FIELD_CHARLENGTH
&&
type
!=
FIELD_TYPE_SET
&&
type
!=
FIELD_TYPE_ENUM
)
||
(
!
new_field
->
length
&&
!
(
new_field
->
flags
&
BLOB_FLAG
)
&&
(
!
new_field
->
length
&&
!
(
new_field
->
flags
&
BLOB_FLAG
)
&&
type
!=
FIELD_TYPE_STRING
&&
type
!=
FIELD_TYPE_STRING
&&
type
!=
FIELD_TYPE_VAR_STRING
&&
type
!=
FIELD_TYPE_GEOMETRY
))
type
!=
FIELD_TYPE_VAR_STRING
&&
type
!=
FIELD_TYPE_GEOMETRY
))
...
...
sql/sql_union.cc
View file @
6ec43a9d
...
@@ -123,7 +123,7 @@ int st_select_lex_unit::prepare(THD *thd, select_result *sel_result,
...
@@ -123,7 +123,7 @@ int st_select_lex_unit::prepare(THD *thd, select_result *sel_result,
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
prepared
=
1
;
prepared
=
1
;
res
=
0
;
res
=
0
;
found_rows_for_union
=
0
;
found_rows_for_union
=
first_select_in_union
()
->
options
&
OPTION_FOUND_ROWS
;
TMP_TABLE_PARAM
tmp_table_param
;
TMP_TABLE_PARAM
tmp_table_param
;
result
=
sel_result
;
result
=
sel_result
;
t_and_f
=
tables_and_fields_initied
;
t_and_f
=
tables_and_fields_initied
;
...
@@ -131,13 +131,6 @@ int st_select_lex_unit::prepare(THD *thd, select_result *sel_result,
...
@@ -131,13 +131,6 @@ int st_select_lex_unit::prepare(THD *thd, select_result *sel_result,
bzero
((
char
*
)
&
tmp_table_param
,
sizeof
(
TMP_TABLE_PARAM
));
bzero
((
char
*
)
&
tmp_table_param
,
sizeof
(
TMP_TABLE_PARAM
));
thd
->
lex
.
current_select
=
select_cursor
=
first_select_in_union
();
thd
->
lex
.
current_select
=
select_cursor
=
first_select_in_union
();
/* Global option */
/* Global option */
if
(((
void
*
)(
global_parameters
))
==
((
void
*
)
this
))
{
found_rows_for_union
=
first_select
()
->
options
&
OPTION_FOUND_ROWS
&&
global_parameters
->
select_limit
;
if
(
found_rows_for_union
)
first_select
()
->
options
&=
~
OPTION_FOUND_ROWS
;
}
if
(
t_and_f
)
if
(
t_and_f
)
{
{
// Item list and tables will be initialized by mysql_derived
// Item list and tables will be initialized by mysql_derived
...
@@ -245,6 +238,7 @@ int st_select_lex_unit::exec()
...
@@ -245,6 +238,7 @@ int st_select_lex_unit::exec()
{
{
SELECT_LEX
*
lex_select_save
=
thd
->
lex
.
current_select
;
SELECT_LEX
*
lex_select_save
=
thd
->
lex
.
current_select
;
SELECT_LEX
*
select_cursor
=
first_select_in_union
();
SELECT_LEX
*
select_cursor
=
first_select_in_union
();
unsigned
int
add_rows
=
0
;
DBUG_ENTER
(
"st_select_lex_unit::exec"
);
DBUG_ENTER
(
"st_select_lex_unit::exec"
);
if
(
executed
&&
!
(
dependent
||
uncacheable
))
if
(
executed
&&
!
(
dependent
||
uncacheable
))
...
@@ -261,6 +255,7 @@ int st_select_lex_unit::exec()
...
@@ -261,6 +255,7 @@ int st_select_lex_unit::exec()
}
}
for
(
SELECT_LEX
*
sl
=
select_cursor
;
sl
;
sl
=
sl
->
next_select
())
for
(
SELECT_LEX
*
sl
=
select_cursor
;
sl
;
sl
=
sl
->
next_select
())
{
{
unsigned
int
rows
;
thd
->
lex
.
current_select
=
sl
;
thd
->
lex
.
current_select
=
sl
;
if
(
optimized
)
if
(
optimized
)
...
@@ -273,6 +268,11 @@ int st_select_lex_unit::exec()
...
@@ -273,6 +268,11 @@ int st_select_lex_unit::exec()
select_limit_cnt
=
HA_POS_ERROR
;
// no limit
select_limit_cnt
=
HA_POS_ERROR
;
// no limit
if
(
select_limit_cnt
==
HA_POS_ERROR
)
if
(
select_limit_cnt
==
HA_POS_ERROR
)
sl
->
options
&=
~
OPTION_FOUND_ROWS
;
sl
->
options
&=
~
OPTION_FOUND_ROWS
;
else
if
(
found_rows_for_union
)
{
rows
=
thd
->
select_limit
;
sl
->
options
|=
OPTION_FOUND_ROWS
;
}
/*
/*
As far as union share table space we should reassign table map,
As far as union share table space we should reassign table map,
...
@@ -313,6 +313,8 @@ int st_select_lex_unit::exec()
...
@@ -313,6 +313,8 @@ int st_select_lex_unit::exec()
thd
->
lex
.
current_select
=
lex_select_save
;
thd
->
lex
.
current_select
=
lex_select_save
;
DBUG_RETURN
(
res
);
DBUG_RETURN
(
res
);
}
}
if
(
found_rows_for_union
&&
!
sl
->
braces
&&
sl
->
options
&
OPTION_FOUND_ROWS
)
add_rows
+=
(
thd
->
limit_found_rows
>
rows
)
?
thd
->
limit_found_rows
-
rows
:
0
;
}
}
}
}
optimized
=
1
;
optimized
=
1
;
...
@@ -328,15 +330,17 @@ int st_select_lex_unit::exec()
...
@@ -328,15 +330,17 @@ int st_select_lex_unit::exec()
if
(
!
thd
->
is_fatal_error
)
// Check if EOM
if
(
!
thd
->
is_fatal_error
)
// Check if EOM
{
{
thd
->
lex
.
current_select
=
fake_select_lex
;
thd
->
lex
.
current_select
=
fake_select_lex
;
offset_limit_cnt
=
(
select_cursor
->
braces
?
if
(
select_cursor
->
braces
)
global_parameters
->
offset_limit
:
0
);
{
select_limit_cnt
=
(
select_cursor
->
braces
?
offset_limit_cnt
=
global_parameters
->
offset_limit
;
global_parameters
->
select_limit
+
select_limit_cnt
=
global_parameters
->
select_limit
+
global_parameters
->
offset_limit
;
global_parameters
->
offset_limit
:
HA_POS_ERROR
);
if
(
select_limit_cnt
<
global_parameters
->
select_limit
)
if
(
select_limit_cnt
<
global_parameters
->
select_limit
)
select_limit_cnt
=
HA_POS_ERROR
;
// no limit
select_limit_cnt
=
HA_POS_ERROR
;
// no limit
}
if
(
select_limit_cnt
==
HA_POS_ERROR
)
if
(
select_limit_cnt
==
HA_POS_ERROR
)
thd
->
options
&=
~
OPTION_FOUND_ROWS
;
thd
->
options
&=
~
OPTION_FOUND_ROWS
;
else
if
(
found_rows_for_union
&&
!
describe
)
thd
->
options
|=
OPTION_FOUND_ROWS
;
fake_select_lex
->
ftfunc_list
=
&
empty_list
;
fake_select_lex
->
ftfunc_list
=
&
empty_list
;
fake_select_lex
->
table_list
.
link_in_list
((
byte
*
)
&
result_table_list
,
fake_select_lex
->
table_list
.
link_in_list
((
byte
*
)
&
result_table_list
,
(
byte
**
)
(
byte
**
)
...
@@ -374,7 +378,11 @@ int st_select_lex_unit::exec()
...
@@ -374,7 +378,11 @@ int st_select_lex_unit::exec()
thd
->
options
|
SELECT_NO_UNLOCK
,
thd
->
options
|
SELECT_NO_UNLOCK
,
result
,
this
,
fake_select_lex
,
0
);
result
,
this
,
fake_select_lex
,
0
);
if
(
found_rows_for_union
&&
!
res
)
if
(
found_rows_for_union
&&
!
res
)
thd
->
limit_found_rows
=
(
ulonglong
)
table
->
file
->
records
;
{
thd
->
limit_found_rows
=
table
->
file
->
records
;
if
(
!
select_cursor
->
braces
)
thd
->
limit_found_rows
+=
add_rows
;
}
/*
/*
Mark for slow query log if any of the union parts didn't use
Mark for slow query log if any of the union parts didn't use
indexes efficiently
indexes efficiently
...
...
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