summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <Sinisa@sinisa.nasamreza.org>2003-01-10 18:26:14 +0200
committerunknown <Sinisa@sinisa.nasamreza.org>2003-01-10 18:26:14 +0200
commitcb55a65bdab2253510e53ae20b6786a1363e3955 (patch)
tree14a9a35bebd797884d83d2f862d2cffffb0b52f3 /sql
parenta1f84c11160ff26892ad9931354d3be341b71496 (diff)
parent9112cdf58a675ddd3f7fe9547c7a02359ea494a7 (diff)
downloadmariadb-git-cb55a65bdab2253510e53ae20b6786a1363e3955.tar.gz
Merge sinisa@work.mysql.com:/home/bk/mysql-4.1
into sinisa.nasamreza.org:/mnt/work/mysql-4.1 sql/sql_select.cc: Auto merged sql/sql_yacc.yy: Auto merged
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_select.cc12
-rw-r--r--sql/sql_yacc.yy12
2 files changed, 19 insertions, 5 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index aab8d883204..63c0d8b785f 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -714,6 +714,13 @@ JOIN::exec()
int tmp_error;
DBUG_ENTER("JOIN::exec");
+
+ if (procedure)
+ {
+ if (procedure->change_columns(fields_list) ||
+ result->prepare(fields_list, unit))
+ DBUG_VOID_RETURN;
+ }
if (!tables_list)
{ // Only test of functions
@@ -768,8 +775,6 @@ JOIN::exec()
test_if_skip_sort_order(&join_tab[const_tables], order,
select_limit, 0))))
order=0;
- if (procedure)
- (void)result->prepare(fields_list, unit);
select_describe(this, need_tmp,
order != 0 && !skip_sort_order,
select_distinct);
@@ -989,9 +994,6 @@ JOIN::exec()
}
if (procedure)
{
- if (procedure->change_columns(fields_list) ||
- result->prepare(fields_list, unit))
- DBUG_VOID_RETURN;
count_field_types(&tmp_table_param, all_fields, 0);
}
if (group || tmp_table_param.sum_func_count ||
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 0985859caae..1a7aee2e76f 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -2571,6 +2571,12 @@ select_derived:
{
LEX *lex= Lex;
lex->derived_tables= 1;
+ if (((int)lex->sql_command >= (int)SQLCOM_HA_OPEN &&
+ lex->sql_command <= (int)SQLCOM_HA_READ) || lex->sql_command == (int)SQLCOM_KILL)
+ {
+ send_error(lex->thd, ER_SYNTAX_ERROR);
+ YYABORT;
+ }
if (lex->current_select->linkage == GLOBAL_OPTIONS_TYPE ||
mysql_new_select(lex, 1))
YYABORT;
@@ -4607,6 +4613,12 @@ in_subselect_init:
subselect_start:
'(' SELECT_SYM
{
+ LEX *lex=Lex;
+ if (((int)lex->sql_command >= (int)SQLCOM_HA_OPEN &&
+ lex->sql_command <= (int)SQLCOM_HA_READ) || lex->sql_command == (int)SQLCOM_KILL) {
+ send_error(lex->thd, ER_SYNTAX_ERROR);
+ YYABORT;
+ }
if (mysql_new_select(Lex, 1))
YYABORT;
};