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
ff260809
Commit
ff260809
authored
Jul 16, 2002
by
Sinisa@sinisa.nasamreza.org
Browse files
Options
Browse Files
Download
Plain Diff
Merge sinisa@work.mysql.com:/home/bk/mysql-4.0
into sinisa.nasamreza.org:/mnt/work/mysql-4.0
parents
8a4502f1
c5738005
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
65 additions
and
9 deletions
+65
-9
sql/Makefile.am
sql/Makefile.am
+1
-1
sql/lex.h
sql/lex.h
+2
-0
sql/mysqld.cc
sql/mysqld.cc
+1
-1
sql/sql_lex.h
sql/sql_lex.h
+9
-3
sql/sql_parse.cc
sql/sql_parse.cc
+3
-0
sql/sql_select.cc
sql/sql_select.cc
+18
-1
sql/sql_union.cc
sql/sql_union.cc
+7
-1
sql/sql_yacc.yy
sql/sql_yacc.yy
+23
-2
sql/table.h
sql/table.h
+1
-0
No files found.
sql/Makefile.am
View file @
ff260809
...
...
@@ -81,7 +81,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc \
sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc
\
slave.cc sql_repl.cc sql_union.cc
\
mini_client.cc mini_client_errors.c
\
stacktrace.c repl_failsafe.h repl_failsafe.cc
stacktrace.c repl_failsafe.h repl_failsafe.cc
sql_olap.cc
gen_lex_hash_SOURCES
=
gen_lex_hash.cc
gen_lex_hash_LDADD
=
$(LDADD)
$(CXXLDFLAGS)
...
...
sql/lex.h
View file @
ff260809
...
...
@@ -98,6 +98,7 @@ static SYMBOL symbols[] = {
{
"CONSTRAINT"
,
SYM
(
CONSTRAINT
),
0
,
0
},
{
"CREATE"
,
SYM
(
CREATE
),
0
,
0
},
{
"CROSS"
,
SYM
(
CROSS
),
0
,
0
},
{
"CUBE"
,
SYM
(
CUBE
),
0
,
0
},
{
"CURRENT_DATE"
,
SYM
(
CURDATE
),
0
,
0
},
{
"CURRENT_TIME"
,
SYM
(
CURTIME
),
0
,
0
},
{
"CURRENT_TIMESTAMP"
,
SYM
(
NOW_SYM
),
0
,
0
},
...
...
@@ -303,6 +304,7 @@ static SYMBOL symbols[] = {
{
"RIGHT"
,
SYM
(
RIGHT
),
0
,
0
},
{
"RLIKE"
,
SYM
(
REGEXP
),
0
,
0
},
/* Like in mSQL2 */
{
"ROLLBACK"
,
SYM
(
ROLLBACK_SYM
),
0
,
0
},
{
"ROLLUP"
,
SYM
(
ROLLUP
),
0
,
0
},
{
"ROW"
,
SYM
(
ROW_SYM
),
0
,
0
},
{
"ROWS"
,
SYM
(
ROWS_SYM
),
0
,
0
},
{
"SECOND"
,
SYM
(
SECOND_SYM
),
0
,
0
},
...
...
sql/mysqld.cc
View file @
ff260809
...
...
@@ -2873,7 +2873,7 @@ static struct my_option my_long_options[] =
"Tells the master that updates to the given database should not be logged tothe binary log"
,
0
,
0
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"bind-address"
,
OPT_BIND_ADDRESS
,
"Ip address to bind to"
,
(
gptr
*
)
&
my_bind_addr
,
(
gptr
*
)
&
my_bind_addr
,
0
,
GET_
ULONG
,
REQUIRED_ARG
,
0
,
(
gptr
*
)
&
my_bind_addr
,
(
gptr
*
)
&
my_bind_addr
,
0
,
GET_
STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"bootstrap"
,
OPT_BOOTSTRAP
,
"Used by mysql installation scripts"
,
0
,
0
,
0
,
GET_NO_ARG
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
...
...
sql/sql_lex.h
View file @
ff260809
...
...
@@ -89,7 +89,12 @@ typedef struct st_lex_master_info
enum
sub_select_type
{
UNSPECIFIED_TYPE
,
UNION_TYPE
,
INTERSECT_TYPE
,
EXCEPT_TYPE
,
NOT_A_SELECT
UNSPECIFIED_TYPE
,
UNION_TYPE
,
INTERSECT_TYPE
,
EXCEPT_TYPE
,
OLAP_TYPE
,
NOT_A_SELECT
};
enum
olap_type
{
NON_EXISTING_ONE
,
CUBE_TYPE
,
ROLLUP_TYPE
};
/* The state of the lex parsing for selects */
...
...
@@ -97,6 +102,7 @@ enum sub_select_type
typedef
struct
st_select_lex
{
enum
sub_select_type
linkage
;
enum
olap_type
olap
;
char
*
db
,
*
db1
,
*
table1
,
*
db2
,
*
table2
;
/* For outer join using .. */
Item
*
where
,
*
having
;
ha_rows
select_limit
,
offset_limit
;
...
...
@@ -133,7 +139,7 @@ typedef struct st_lex
{
uint
yylineno
,
yytoklen
;
/* Simulate lex */
LEX_YYSTYPE
yylval
;
SELECT_LEX
select_lex
,
*
select
;
SELECT_LEX
select_lex
,
*
select
,
*
last_selects
;
uchar
*
ptr
,
*
tok_start
,
*
tok_end
,
*
end_of_query
;
char
*
length
,
*
dec
,
*
change
,
*
name
;
char
*
backup_dir
;
/* For RESTORE/BACKUP */
...
...
@@ -179,7 +185,7 @@ typedef struct st_lex
uint
grant
,
grant_tot_col
,
which_columns
,
union_option
;
thr_lock_type
lock_option
;
bool
drop_primary
,
drop_if_exists
,
local_file
;
bool
in_comment
,
ignore_space
,
verbose
,
simple_alter
,
option_type
;
bool
in_comment
,
ignore_space
,
verbose
,
simple_alter
,
option_type
,
olap
;
uint
slave_thd_opt
;
}
LEX
;
...
...
sql/sql_parse.cc
View file @
ff260809
...
...
@@ -2730,7 +2730,9 @@ mysql_init_select(LEX *lex)
select_lex
->
offset_limit
=
0
;
select_lex
->
options
=
0
;
select_lex
->
linkage
=
UNSPECIFIED_TYPE
;
select_lex
->
olap
=
NON_EXISTING_ONE
;
lex
->
exchange
=
0
;
lex
->
olap
=
0
;
lex
->
proc_list
.
first
=
0
;
select_lex
->
order_list
.
elements
=
select_lex
->
group_list
.
elements
=
0
;
select_lex
->
order_list
.
first
=
0
;
...
...
@@ -3272,6 +3274,7 @@ static bool create_total_list(THD *thd, LEX *lex, TABLE_LIST **result)
for
(;
aux
;
aux
=
next
)
{
TABLE_LIST
*
cursor
;
aux
->
do_redirect
=
true
;
next
=
aux
->
next
;
for
(
cursor
=
*
result
;
cursor
;
cursor
=
cursor
->
next
)
if
(
!
strcmp
(
cursor
->
db
,
aux
->
db
)
&&
...
...
sql/sql_select.cc
View file @
ff260809
...
...
@@ -146,7 +146,7 @@ static bool update_sum_func(Item_sum **func);
static
void
select_describe
(
JOIN
*
join
,
bool
need_tmp_table
,
bool
need_order
,
bool
distinct
,
const
char
*
message
=
NullS
);
static
void
describe_info
(
JOIN
*
join
,
const
char
*
info
);
extern
int
handle_olaps
(
LEX
*
lex
,
SELECT_LEX
*
select
);
/*
This handles SELECT with and without UNION
*/
...
...
@@ -155,6 +155,23 @@ int handle_select(THD *thd, LEX *lex, select_result *result)
{
int
res
;
register
SELECT_LEX
*
select_lex
=
&
lex
->
select_lex
;
if
(
lex
->
olap
)
{
SELECT_LEX
*
sl
,
*
last_sl
;
int
returned
;
for
(
sl
=
&
lex
->
select_lex
;
sl
;
sl
=
sl
->
next
)
{
if
(
sl
->
olap
!=
NON_EXISTING_ONE
)
{
last_sl
=
sl
->
next
;
if
((
returned
=
handle_olaps
(
lex
,
sl
)))
return
returned
;
lex
->
last_selects
->
next
=
sl
=
last_sl
;
if
(
!
sl
)
break
;
}
}
lex
->
select
=
select_lex
;
}
if
(
select_lex
->
next
)
res
=
mysql_union
(
thd
,
lex
,
result
);
else
...
...
sql/sql_union.cc
View file @
ff260809
...
...
@@ -49,7 +49,13 @@ int mysql_union(THD *thd, LEX *lex,select_result *result)
for
(
TABLE_LIST
*
cursor
=
(
TABLE_LIST
*
)
sl
->
table_list
.
first
;
cursor
;
cursor
=
cursor
->
next
)
cursor
->
table
=
((
TABLE_LIST
*
)
cursor
->
table
)
->
table
;
{
if
(
cursor
->
do_redirect
)
{
cursor
->
table
=
((
TABLE_LIST
*
)
cursor
->
table
)
->
table
;
cursor
->
do_redirect
=
false
;
}
}
}
/* last_sel now points at the last select where the ORDER BY is stored */
...
...
sql/sql_yacc.yy
View file @
ff260809
...
...
@@ -109,6 +109,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token COUNT_SYM
%token CREATE
%token CROSS
%token CUBE
%token DELETE_SYM
%token DO_SYM
%token DROP
...
...
@@ -130,6 +131,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token REPLICATION
%token RESET_SYM
%token ROLLBACK_SYM
%token ROLLUP
%token SELECT_SYM
%token SHOW
%token SLAVE
...
...
@@ -2160,7 +2162,7 @@ opt_escape:
group_clause:
/* empty */
| GROUP BY group_list;
| GROUP BY group_list
olap_opt
;
group_list:
group_list ',' order_ident order_dir
...
...
@@ -2168,6 +2170,19 @@ group_list:
| order_ident order_dir
{ if (add_group_to_list($1,(bool) $2)) YYABORT; };
olap_opt:
/* empty */ {}
| WITH CUBE
{
Lex->olap = true;
Select->olap= CUBE_TYPE;
}
| WITH ROLLUP
{
Lex->olap = true;
Select->olap= ROLLUP_TYPE;
}
/*
Order by statement in select
*/
...
...
@@ -2180,7 +2195,7 @@ order_clause:
ORDER_SYM BY
{
LEX *lex=Lex;
if (lex->sql_command == SQLCOM_MULTI_UPDATE)
if (lex->sql_command == SQLCOM_MULTI_UPDATE
|| lex->olap
)
YYABORT;
lex->select->sort_default=1;
} order_list;
...
...
@@ -2201,12 +2216,16 @@ limit_clause:
/* empty */ {}
| LIMIT ULONG_NUM
{
if (Lex->olap)
YYABORT;
SELECT_LEX *sel=Select;
sel->select_limit= $2;
sel->offset_limit=0L;
}
| LIMIT ULONG_NUM ',' ULONG_NUM
{
if (Lex->olap)
YYABORT;
SELECT_LEX *sel=Select;
sel->select_limit= $4; sel->offset_limit=$2;
};
...
...
@@ -3024,6 +3043,7 @@ keyword:
| COMMIT_SYM {}
| COMPRESSED_SYM {}
| CONCURRENT {}
| CUBE {}
| DATA_SYM {}
| DATETIME {}
| DATE_SYM {}
...
...
@@ -3117,6 +3137,7 @@ keyword:
| RESOURCES {}
| RESTORE_SYM {}
| ROLLBACK_SYM {}
| ROLLUP {}
| ROWS_SYM {}
| ROW_FORMAT_SYM {}
| ROW_SYM {}
...
...
sql/table.h
View file @
ff260809
...
...
@@ -151,6 +151,7 @@ typedef struct st_table_list
bool
straight
;
/* optimize with prev table */
bool
updating
;
/* for replicate-do/ignore table */
bool
shared
;
/* Used twice in union */
bool
do_redirect
;
/* To get the struct in UNION's */
}
TABLE_LIST
;
...
...
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