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
Hide 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` (
`a` set('','a','b') NOT NULL default 'b'
) TYPE=MyISAM CHARSET=latin1
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;
create
table
t1
(
a
set
(
' '
,
'a'
,
'b '
)
not
null
default
'b '
);
show
create
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,9 +4038,10 @@ 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
)
&&
type
!=
FIELD_TYPE_STRING
&&
type
!=
FIELD_TYPE_STRING
&&
type
!=
FIELD_TYPE_VAR_STRING
&&
type
!=
FIELD_TYPE_GEOMETRY
))
{
net_printf
(
thd
,
ER_TOO_BIG_FIELDLENGTH
,
field_name
,
...
...
sql/sql_union.cc
View file @
6ec43a9d
...
...
@@ -123,7 +123,7 @@ int st_select_lex_unit::prepare(THD *thd, select_result *sel_result,
DBUG_RETURN
(
0
);
prepared
=
1
;
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
;
result
=
sel_result
;
t_and_f
=
tables_and_fields_initied
;
...
...
@@ -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
));
thd
->
lex
.
current_select
=
select_cursor
=
first_select_in_union
();
/* 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
)
{
// Item list and tables will be initialized by mysql_derived
...
...
@@ -245,6 +238,7 @@ int st_select_lex_unit::exec()
{
SELECT_LEX
*
lex_select_save
=
thd
->
lex
.
current_select
;
SELECT_LEX
*
select_cursor
=
first_select_in_union
();
unsigned
int
add_rows
=
0
;
DBUG_ENTER
(
"st_select_lex_unit::exec"
);
if
(
executed
&&
!
(
dependent
||
uncacheable
))
...
...
@@ -261,6 +255,7 @@ int st_select_lex_unit::exec()
}
for
(
SELECT_LEX
*
sl
=
select_cursor
;
sl
;
sl
=
sl
->
next_select
())
{
unsigned
int
rows
;
thd
->
lex
.
current_select
=
sl
;
if
(
optimized
)
...
...
@@ -273,6 +268,11 @@ int st_select_lex_unit::exec()
select_limit_cnt
=
HA_POS_ERROR
;
// no limit
if
(
select_limit_cnt
==
HA_POS_ERROR
)
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,
...
...
@@ -313,6 +313,8 @@ int st_select_lex_unit::exec()
thd
->
lex
.
current_select
=
lex_select_save
;
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
;
...
...
@@ -328,15 +330,17 @@ int st_select_lex_unit::exec()
if
(
!
thd
->
is_fatal_error
)
// Check if EOM
{
thd
->
lex
.
current_select
=
fake_select_lex
;
offset_limit_cnt
=
(
select_cursor
->
braces
?
global_parameters
->
offset_limit
:
0
);
select_limit_cnt
=
(
select_cursor
->
braces
?
global_parameters
->
select_limit
+
global_parameters
->
offset_limit
:
HA_POS_ERROR
);
if
(
select_limit_cnt
<
global_parameters
->
select_limit
)
select_limit_cnt
=
HA_POS_ERROR
;
// no limit
if
(
select_cursor
->
braces
)
{
offset_limit_cnt
=
global_parameters
->
offset_limit
;
select_limit_cnt
=
global_parameters
->
select_limit
+
global_parameters
->
offset_limit
;
if
(
select_limit_cnt
<
global_parameters
->
select_limit
)
select_limit_cnt
=
HA_POS_ERROR
;
// no limit
}
if
(
select_limit_cnt
==
HA_POS_ERROR
)
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
->
table_list
.
link_in_list
((
byte
*
)
&
result_table_list
,
(
byte
**
)
...
...
@@ -374,7 +378,11 @@ int st_select_lex_unit::exec()
thd
->
options
|
SELECT_NO_UNLOCK
,
result
,
this
,
fake_select_lex
,
0
);
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
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