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
ec00e02c
Commit
ec00e02c
authored
Dec 01, 2006
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into bodhi.local:/opt/local/work/mysql-5.1-runtime
parents
8c056ce5
7c6fe6e7
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
4 deletions
+53
-4
sql/sql_class.cc
sql/sql_class.cc
+14
-0
sql/sql_class.h
sql/sql_class.h
+10
-2
sql/sql_prepare.cc
sql/sql_prepare.cc
+1
-2
tests/mysql_client_test.c
tests/mysql_client_test.c
+28
-0
No files found.
sql/sql_class.cc
View file @
ec00e02c
...
...
@@ -985,6 +985,13 @@ void select_result::cleanup()
/* do nothing */
}
bool
select_result
::
check_simple_select
()
const
{
my_error
(
ER_SP_BAD_CURSOR_QUERY
,
MYF
(
0
));
return
TRUE
;
}
static
String
default_line_term
(
"
\n
"
,
default_charset_info
);
static
String
default_escaped
(
"
\\
"
,
default_charset_info
);
static
String
default_field_term
(
"
\t
"
,
default_charset_info
);
...
...
@@ -1656,6 +1663,13 @@ int select_dumpvar::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
}
bool
select_dumpvar
::
check_simple_select
()
const
{
my_error
(
ER_SP_BAD_CURSOR_SELECT
,
MYF
(
0
));
return
TRUE
;
}
void
select_dumpvar
::
cleanup
()
{
vars
.
empty
();
...
...
sql/sql_class.h
View file @
ec00e02c
...
...
@@ -1703,7 +1703,14 @@ class select_result :public Sql_alloc {
virtual
bool
initialize_tables
(
JOIN
*
join
=
0
)
{
return
0
;
}
virtual
void
send_error
(
uint
errcode
,
const
char
*
err
);
virtual
bool
send_eof
()
=
0
;
virtual
bool
simple_select
()
{
return
0
;
}
/**
Check if this query returns a result set and therefore is allowed in
cursors and set an error message if it is not the case.
@retval FALSE success
@retval TRUE error, an error message is set
*/
virtual
bool
check_simple_select
()
const
;
virtual
void
abort
()
{}
/*
Cleanup instance of this class for next execution of a prepared
...
...
@@ -1741,7 +1748,7 @@ class select_send :public select_result {
bool
send_fields
(
List
<
Item
>
&
list
,
uint
flags
);
bool
send_data
(
List
<
Item
>
&
items
);
bool
send_eof
();
bool
simple_select
()
{
return
1
;
}
virtual
bool
check_simple_select
()
const
{
return
FALSE
;
}
void
abort
();
};
...
...
@@ -2188,6 +2195,7 @@ class select_dumpvar :public select_result_interceptor {
int
prepare
(
List
<
Item
>
&
list
,
SELECT_LEX_UNIT
*
u
);
bool
send_data
(
List
<
Item
>
&
items
);
bool
send_eof
();
virtual
bool
check_simple_select
()
const
;
void
cleanup
();
};
...
...
sql/sql_prepare.cc
View file @
ec00e02c
...
...
@@ -2947,10 +2947,9 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor)
in INSERT ... SELECT and similar commands.
*/
if
(
open_cursor
&&
lex
->
result
&&
!
lex
->
result
->
simple_select
())
if
(
open_cursor
&&
lex
->
result
&&
lex
->
result
->
check_
simple_select
())
{
DBUG_PRINT
(
"info"
,(
"Cursor asked for not SELECT stmt"
));
my_error
(
ER_SP_BAD_CURSOR_QUERY
,
MYF
(
0
));
return
TRUE
;
}
...
...
tests/mysql_client_test.c
View file @
ec00e02c
...
...
@@ -15684,6 +15684,33 @@ static void test_bug21635()
DBUG_VOID_RETURN
;
}
/*
Bug#24179 "select b into $var" fails with --cursor_protocol"
The failure is correct, check that the returned message is meaningful.
*/
static
void
test_bug24179
()
{
int
rc
;
MYSQL_STMT
*
stmt
;
DBUG_ENTER
(
"test_bug24179"
);
myheader
(
"test_bug24179"
);
stmt
=
open_cursor
(
"select 1 into @a"
);
rc
=
mysql_stmt_execute
(
stmt
);
DIE_UNLESS
(
rc
);
if
(
!
opt_silent
)
{
printf
(
"Got error (as expected): %d %s
\n
"
,
mysql_stmt_errno
(
stmt
),
mysql_stmt_error
(
stmt
));
}
DIE_UNLESS
(
mysql_stmt_errno
(
stmt
)
==
1323
);
DBUG_VOID_RETURN
;
}
/*
Read and parse arguments and MySQL options from my.cnf
...
...
@@ -15966,6 +15993,7 @@ static struct my_tests_st my_tests[]= {
{
"test_bug23383"
,
test_bug23383
},
{
"test_bug21635"
,
test_bug21635
},
{
"test_status"
,
test_status
},
{
"test_bug24179"
,
test_bug24179
},
{
0
,
0
}
};
...
...
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