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
193d1f6c
Commit
193d1f6c
authored
Jan 18, 2003
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge myvenu.com:/home/venu/bk/src-4.1
into myvenu.com:/home/venu/work/sql/dev-4.1
parents
0ebbac24
a3927906
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
797 additions
and
112 deletions
+797
-112
sql/sql_prepare.cc
sql/sql_prepare.cc
+50
-32
tests/client_test.c
tests/client_test.c
+747
-80
No files found.
sql/sql_prepare.cc
View file @
193d1f6c
...
@@ -66,6 +66,7 @@ Long data handling:
...
@@ -66,6 +66,7 @@ Long data handling:
#include "mysql_priv.h"
#include "mysql_priv.h"
#include "sql_acl.h"
#include "sql_acl.h"
#include "sql_select.h" // for JOIN
#include <assert.h> // for DEBUG_ASSERT()
#include <assert.h> // for DEBUG_ASSERT()
#include <m_ctype.h> // for isspace()
#include <m_ctype.h> // for isspace()
...
@@ -402,7 +403,7 @@ static bool mysql_test_upd_fields(PREP_STMT *stmt, TABLE_LIST *table_list,
...
@@ -402,7 +403,7 @@ static bool mysql_test_upd_fields(PREP_STMT *stmt, TABLE_LIST *table_list,
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
if
(
setup_tables
(
table_list
)
||
setup_fields
(
thd
,
table_list
,
fields
,
1
,
0
,
0
)
||
if
(
setup_tables
(
table_list
)
||
setup_fields
(
thd
,
table_list
,
fields
,
1
,
0
,
0
)
||
setup_conds
(
thd
,
table_list
,
&
conds
))
setup_conds
(
thd
,
table_list
,
&
conds
)
||
thd
->
net
.
report_error
)
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
/*
/*
...
@@ -426,39 +427,41 @@ static bool mysql_test_upd_fields(PREP_STMT *stmt, TABLE_LIST *table_list,
...
@@ -426,39 +427,41 @@ static bool mysql_test_upd_fields(PREP_STMT *stmt, TABLE_LIST *table_list,
And send column list fields info back to client.
And send column list fields info back to client.
*/
*/
static
bool
mysql_test_select_fields
(
PREP_STMT
*
stmt
,
TABLE_LIST
*
tables
,
static
bool
mysql_test_select_fields
(
PREP_STMT
*
stmt
,
TABLE_LIST
*
tables
,
List
<
Item
>
&
fields
,
List
<
Item
>
&
values
,
List
<
Item
>
&
fields
,
COND
*
conds
,
COND
*
conds
,
ORDER
*
order
,
ORDER
*
group
,
ORDER
*
order
,
ORDER
*
group
,
Item
*
having
)
Item
*
having
,
ORDER
*
proc
,
ulong
select_options
,
SELECT_LEX_UNIT
*
unit
,
SELECT_LEX
*
select_lex
)
{
{
bool
hidden_group_fields
;
THD
*
thd
=
stmt
->
thd
;
THD
*
thd
=
stmt
->
thd
;
List
<
Item
>
all_fields
(
fields
);
LEX
*
lex
=
&
thd
->
lex
;
select_result
*
result
=
thd
->
lex
.
result
;
DBUG_ENTER
(
"mysql_test_select_fields"
);
DBUG_ENTER
(
"mysql_test_select_fields"
);
if
((
&
lex
->
select_lex
!=
lex
->
all_selects_list
&&
lex
->
unit
.
create_total_list
(
thd
,
lex
,
&
tables
)))
DBUG_RETURN
(
1
);
if
(
open_and_lock_tables
(
thd
,
tables
))
if
(
open_and_lock_tables
(
thd
,
tables
))
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
thd
->
used_tables
=
0
;
// Updated by setup_fields
fix_tables_pointers
(
thd
->
lex
.
all_selects_list
);
if
(
setup_tables
(
tables
)
||
setup_fields
(
thd
,
tables
,
fields
,
1
,
&
all_fields
,
1
)
||
setup_conds
(
thd
,
tables
,
&
conds
)
||
setup_order
(
thd
,
tables
,
fields
,
all_fields
,
order
)
||
setup_group
(
thd
,
tables
,
fields
,
all_fields
,
group
,
&
hidden_group_fields
))
DBUG_RETURN
(
1
);
if
(
having
)
if
(
!
result
&&
!
(
result
=
new
select_send
())
)
{
{
thd
->
where
=
"having clause"
;
delete
select_lex
->
having
;
thd
->
allow_sum_func
=
1
;
delete
select_lex
->
where
;
if
(
having
->
check_cols
(
1
)
||
having
->
fix_fields
(
thd
,
tables
,
&
having
)
send_error
(
thd
,
ER_OUT_OF_RESOURCES
);
||
thd
->
fatal_error
)
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
if
(
having
->
with_sum_func
)
having
->
split_sum_func
(
all_fields
);
}
}
if
(
setup_ftfuncs
(
&
thd
->
lex
.
select_lex
))
JOIN
*
join
=
new
JOIN
(
thd
,
fields
,
select_options
,
result
);
thd
->
used_tables
=
0
;
// Updated by setup_fields
if
(
join
->
prepare
(
tables
,
conds
,
order
,
group
,
having
,
proc
,
select_lex
,
unit
,
0
))
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
/*
/*
...
@@ -466,12 +469,14 @@ static bool mysql_test_select_fields(PREP_STMT *stmt, TABLE_LIST *tables,
...
@@ -466,12 +469,14 @@ static bool mysql_test_select_fields(PREP_STMT *stmt, TABLE_LIST *tables,
sending any info on where clause.
sending any info on where clause.
*/
*/
if
(
send_prep_stmt
(
stmt
,
fields
.
elements
)
||
if
(
send_prep_stmt
(
stmt
,
fields
.
elements
)
||
thd
->
protocol_simple
.
send_fields
(
&
fields
,
0
)
||
thd
->
protocol_simple
.
send_fields
(
&
fields
,
0
)
||
send_item_params
(
stmt
))
send_item_params
(
stmt
))
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
join
->
cleanup
(
thd
);
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
}
}
/*
/*
Send the prepare query results back to client
Send the prepare query results back to client
*/
*/
...
@@ -514,10 +519,15 @@ static bool send_prepare_results(PREP_STMT *stmt)
...
@@ -514,10 +519,15 @@ static bool send_prepare_results(PREP_STMT *stmt)
break
;
break
;
case
SQLCOM_SELECT
:
case
SQLCOM_SELECT
:
if
(
mysql_test_select_fields
(
stmt
,
tables
,
select_lex
->
item_list
,
if
(
mysql_test_select_fields
(
stmt
,
tables
,
lex
->
value_list
,
select_lex
->
where
,
select_lex
->
item_list
,
(
ORDER
*
)
select_lex
->
order_list
.
first
,
select_lex
->
where
,
(
ORDER
*
)
select_lex
->
group_list
.
first
,
select_lex
->
having
))
(
ORDER
*
)
select_lex
->
order_list
.
first
,
(
ORDER
*
)
select_lex
->
group_list
.
first
,
select_lex
->
having
,
(
ORDER
*
)
lex
->
proc_list
.
first
,
select_lex
->
options
|
thd
->
options
,
&
(
lex
->
unit
),
select_lex
))
goto
abort
;
goto
abort
;
break
;
break
;
...
@@ -678,6 +688,10 @@ void mysql_stmt_execute(THD *thd, char *packet)
...
@@ -678,6 +688,10 @@ void mysql_stmt_execute(THD *thd, char *packet)
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
}
}
if
(
my_pthread_setspecific_ptr
(
THR_THD
,
stmt
->
thd
)
||
my_pthread_setspecific_ptr
(
THR_MALLOC
,
&
stmt
->
thd
->
mem_root
))
DBUG_VOID_RETURN
;
init_stmt_execute
(
stmt
);
init_stmt_execute
(
stmt
);
if
(
stmt
->
param_count
&&
setup_params_data
(
stmt
))
if
(
stmt
->
param_count
&&
setup_params_data
(
stmt
))
...
@@ -692,13 +706,17 @@ void mysql_stmt_execute(THD *thd, char *packet)
...
@@ -692,13 +706,17 @@ void mysql_stmt_execute(THD *thd, char *packet)
mysql_delete(), mysql_update() and mysql_select() to not to
mysql_delete(), mysql_update() and mysql_select() to not to
have re-check on setup_* and other things ..
have re-check on setup_* and other things ..
*/
*/
stmt
->
thd
->
protocol
=
&
thd
->
protocol_prep
;
// Switch to binary protocol
THD
*
cur_thd
=
stmt
->
thd
;
mysql_execute_command
(
stmt
->
thd
);
cur_thd
->
protocol
=
&
cur_thd
->
protocol_prep
;
// Switch to binary protocol
stmt
->
thd
->
protocol
=
&
thd
->
protocol_simple
;
// Use normal protocol
mysql_execute_command
(
cur_thd
);
cur_thd
->
protocol
=
&
cur_thd
->
protocol_simple
;
// Use normal protocol
if
(
!
(
specialflag
&
SPECIAL_NO_PRIOR
))
if
(
!
(
specialflag
&
SPECIAL_NO_PRIOR
))
my_pthread_setprio
(
pthread_self
(),
WAIT_PRIOR
);
my_pthread_setprio
(
pthread_self
(),
WAIT_PRIOR
);
my_pthread_setspecific_ptr
(
THR_THD
,
thd
);
my_pthread_setspecific_ptr
(
THR_MALLOC
,
&
thd
->
mem_root
);
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
}
}
...
...
tests/client_test.c
View file @
193d1f6c
This diff is collapsed.
Click to expand it.
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