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
f577ebb8
Commit
f577ebb8
authored
Oct 08, 2005
by
monty@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Simple changes during review of code
Added back flag that I accidently removed in last patch
parent
78e828d3
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
37 additions
and
61 deletions
+37
-61
sql/ha_federated.cc
sql/ha_federated.cc
+26
-52
sql/sql_prepare.cc
sql/sql_prepare.cc
+2
-0
sql/sql_table.cc
sql/sql_table.cc
+9
-9
No files found.
sql/ha_federated.cc
View file @
f577ebb8
...
@@ -441,6 +441,7 @@ static int check_foreign_data_source(
...
@@ -441,6 +441,7 @@ static int check_foreign_data_source(
String
query
(
query_buffer
,
sizeof
(
query_buffer
),
&
my_charset_bin
);
String
query
(
query_buffer
,
sizeof
(
query_buffer
),
&
my_charset_bin
);
MYSQL
*
mysql
;
MYSQL
*
mysql
;
DBUG_ENTER
(
"ha_federated::check_foreign_data_source"
);
DBUG_ENTER
(
"ha_federated::check_foreign_data_source"
);
/* Zero the length, otherwise the string will have misc chars */
/* Zero the length, otherwise the string will have misc chars */
query
.
length
(
0
);
query
.
length
(
0
);
...
@@ -525,6 +526,7 @@ static int parse_url_error(FEDERATED_SHARE *share, TABLE *table, int error_num)
...
@@ -525,6 +526,7 @@ static int parse_url_error(FEDERATED_SHARE *share, TABLE *table, int error_num)
char
buf
[
FEDERATED_QUERY_BUFFER_SIZE
];
char
buf
[
FEDERATED_QUERY_BUFFER_SIZE
];
int
buf_len
;
int
buf_len
;
DBUG_ENTER
(
"ha_federated parse_url_error"
);
DBUG_ENTER
(
"ha_federated parse_url_error"
);
if
(
share
->
scheme
)
if
(
share
->
scheme
)
{
{
DBUG_PRINT
(
"info"
,
DBUG_PRINT
(
"info"
,
...
@@ -533,11 +535,9 @@ static int parse_url_error(FEDERATED_SHARE *share, TABLE *table, int error_num)
...
@@ -533,11 +535,9 @@ static int parse_url_error(FEDERATED_SHARE *share, TABLE *table, int error_num)
my_free
((
gptr
)
share
->
scheme
,
MYF
(
0
));
my_free
((
gptr
)
share
->
scheme
,
MYF
(
0
));
share
->
scheme
=
0
;
share
->
scheme
=
0
;
}
}
buf_len
=
(
table
->
s
->
connect_string
.
length
>
(
FEDERATED_QUERY_BUFFER_SIZE
-
1
))
buf_len
=
min
(
table
->
s
->
connect_string
.
length
,
?
FEDERATED_QUERY_BUFFER_SIZE
-
1
:
table
->
s
->
connect_string
.
length
;
FEDERATED_QUERY_BUFFER_SIZE
-
1
);
strmake
(
buf
,
table
->
s
->
connect_string
.
str
,
buf_len
);
strnmov
(
buf
,
table
->
s
->
connect_string
.
str
,
buf_len
);
buf
[
buf_len
]
=
'\0'
;
my_error
(
error_num
,
MYF
(
0
),
buf
);
my_error
(
error_num
,
MYF
(
0
),
buf
);
DBUG_RETURN
(
error_num
);
DBUG_RETURN
(
error_num
);
}
}
...
@@ -748,12 +748,9 @@ uint ha_federated::convert_row_to_internal_format(byte *record, MYSQL_ROW row)
...
@@ -748,12 +748,9 @@ uint ha_federated::convert_row_to_internal_format(byte *record, MYSQL_ROW row)
{
{
ulong
*
lengths
;
ulong
*
lengths
;
Field
**
field
;
Field
**
field
;
DBUG_ENTER
(
"ha_federated::convert_row_to_internal_format"
);
DBUG_ENTER
(
"ha_federated::convert_row_to_internal_format"
);
// num_fields= mysql_num_fields(stored_result);
lengths
=
mysql_fetch_lengths
(
stored_result
);
lengths
=
mysql_fetch_lengths
(
stored_result
);
memset
(
record
,
0
,
table
->
s
->
null_bytes
);
memset
(
record
,
0
,
table
->
s
->
null_bytes
);
for
(
field
=
table
->
field
;
*
field
;
field
++
)
for
(
field
=
table
->
field
;
*
field
;
field
++
)
...
@@ -1108,8 +1105,8 @@ bool ha_federated::create_where_from_key(String *to,
...
@@ -1108,8 +1105,8 @@ bool ha_federated::create_where_from_key(String *to,
char
tmpbuff
[
FEDERATED_QUERY_BUFFER_SIZE
];
char
tmpbuff
[
FEDERATED_QUERY_BUFFER_SIZE
];
String
tmp
(
tmpbuff
,
sizeof
(
tmpbuff
),
system_charset_info
);
String
tmp
(
tmpbuff
,
sizeof
(
tmpbuff
),
system_charset_info
);
const
key_range
*
ranges
[
2
]
=
{
start_key
,
end_key
};
const
key_range
*
ranges
[
2
]
=
{
start_key
,
end_key
};
DBUG_ENTER
(
"ha_federated::create_where_from_key"
);
DBUG_ENTER
(
"ha_federated::create_where_from_key"
);
tmp
.
length
(
0
);
tmp
.
length
(
0
);
if
(
start_key
==
NULL
&&
end_key
==
NULL
)
if
(
start_key
==
NULL
&&
end_key
==
NULL
)
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
...
@@ -1369,8 +1366,8 @@ error:
...
@@ -1369,8 +1366,8 @@ error:
static
int
free_share
(
FEDERATED_SHARE
*
share
)
static
int
free_share
(
FEDERATED_SHARE
*
share
)
{
{
DBUG_ENTER
(
"free_share"
);
DBUG_ENTER
(
"free_share"
);
pthread_mutex_lock
(
&
federated_mutex
);
pthread_mutex_lock
(
&
federated_mutex
);
if
(
!--
share
->
use_count
)
if
(
!--
share
->
use_count
)
{
{
if
(
share
->
scheme
)
if
(
share
->
scheme
)
...
@@ -1565,7 +1562,6 @@ int ha_federated::write_row(byte *buf)
...
@@ -1565,7 +1562,6 @@ int ha_federated::write_row(byte *buf)
values_string
.
length
(
0
);
values_string
.
length
(
0
);
insert_string
.
length
(
0
);
insert_string
.
length
(
0
);
insert_field_value_string
.
length
(
0
);
insert_field_value_string
.
length
(
0
);
DBUG_ENTER
(
"ha_federated::write_row"
);
DBUG_ENTER
(
"ha_federated::write_row"
);
DBUG_PRINT
(
"info"
,
DBUG_PRINT
(
"info"
,
(
"table charset name %s csname %s"
,
(
"table charset name %s csname %s"
,
...
@@ -1692,7 +1688,6 @@ int ha_federated::optimize(THD* thd, HA_CHECK_OPT* check_opt)
...
@@ -1692,7 +1688,6 @@ int ha_federated::optimize(THD* thd, HA_CHECK_OPT* check_opt)
{
{
char
query_buffer
[
STRING_BUFFER_USUAL_SIZE
];
char
query_buffer
[
STRING_BUFFER_USUAL_SIZE
];
String
query
(
query_buffer
,
sizeof
(
query_buffer
),
&
my_charset_bin
);
String
query
(
query_buffer
,
sizeof
(
query_buffer
),
&
my_charset_bin
);
DBUG_ENTER
(
"ha_federated::optimize"
);
DBUG_ENTER
(
"ha_federated::optimize"
);
query
.
length
(
0
);
query
.
length
(
0
);
...
@@ -1716,7 +1711,6 @@ int ha_federated::repair(THD* thd, HA_CHECK_OPT* check_opt)
...
@@ -1716,7 +1711,6 @@ int ha_federated::repair(THD* thd, HA_CHECK_OPT* check_opt)
{
{
char
query_buffer
[
STRING_BUFFER_USUAL_SIZE
];
char
query_buffer
[
STRING_BUFFER_USUAL_SIZE
];
String
query
(
query_buffer
,
sizeof
(
query_buffer
),
&
my_charset_bin
);
String
query
(
query_buffer
,
sizeof
(
query_buffer
),
&
my_charset_bin
);
DBUG_ENTER
(
"ha_federated::repair"
);
DBUG_ENTER
(
"ha_federated::repair"
);
query
.
length
(
0
);
query
.
length
(
0
);
...
@@ -1762,14 +1756,16 @@ int ha_federated::repair(THD* thd, HA_CHECK_OPT* check_opt)
...
@@ -1762,14 +1756,16 @@ int ha_federated::repair(THD* thd, HA_CHECK_OPT* check_opt)
int
ha_federated
::
update_row
(
const
byte
*
old_data
,
byte
*
new_data
)
int
ha_federated
::
update_row
(
const
byte
*
old_data
,
byte
*
new_data
)
{
{
/*
/*
This used to control how the query was built. If there was a primary key,
This used to control how the query was built. If there was a
the query would be built such that there was a where clause with only
primary key, the query would be built such that there was a where
that column as the condition. This is flawed, because if we have a multi-part
clause with only that column as the condition. This is flawed,
primary key, it would only use the first part! We don't need to do this anyway,
because if we have a multi-part primary key, it would only use the
because read_range_first will retrieve the correct record, which is what is used
first part! We don't need to do this anyway, because
to build the WHERE clause. We can however use this to append a LIMIT to the end
read_range_first will retrieve the correct record, which is what
if there is NOT a primary key. Why do this? Because we only are updating one
is used to build the WHERE clause. We can however use this to
record, and LIMIT enforces this.
append a LIMIT to the end if there is NOT a primary key. Why do
this? Because we only are updating one record, and LIMIT enforces
this.
*/
*/
bool
has_a_primary_key
=
(
table
->
s
->
primary_key
==
0
?
TRUE
:
FALSE
);
bool
has_a_primary_key
=
(
table
->
s
->
primary_key
==
0
?
TRUE
:
FALSE
);
/*
/*
...
@@ -1796,7 +1792,6 @@ int ha_federated::update_row(const byte *old_data, byte *new_data)
...
@@ -1796,7 +1792,6 @@ int ha_federated::update_row(const byte *old_data, byte *new_data)
String
where_string
(
where_buffer
,
String
where_string
(
where_buffer
,
sizeof
(
where_buffer
),
sizeof
(
where_buffer
),
&
my_charset_bin
);
&
my_charset_bin
);
DBUG_ENTER
(
"ha_federated::update_row"
);
DBUG_ENTER
(
"ha_federated::update_row"
);
/*
/*
set string lengths to 0 to avoid misc chars in string
set string lengths to 0 to avoid misc chars in string
...
@@ -1991,12 +1986,10 @@ int ha_federated::index_read_idx(byte *buf, uint index, const byte *key,
...
@@ -1991,12 +1986,10 @@ int ha_federated::index_read_idx(byte *buf, uint index, const byte *key,
sizeof
(
sql_query_buffer
),
sizeof
(
sql_query_buffer
),
&
my_charset_bin
);
&
my_charset_bin
);
key_range
range
;
key_range
range
;
DBUG_ENTER
(
"ha_federated::index_read_idx"
);
index_string
.
length
(
0
);
index_string
.
length
(
0
);
sql_query
.
length
(
0
);
sql_query
.
length
(
0
);
DBUG_ENTER
(
"ha_federated::index_read_idx"
);
statistic_increment
(
table
->
in_use
->
status_var
.
ha_read_key_count
,
statistic_increment
(
table
->
in_use
->
status_var
.
ha_read_key_count
,
&
LOCK_status
);
&
LOCK_status
);
...
@@ -2085,8 +2078,8 @@ int ha_federated::read_range_first(const key_range *start_key,
...
@@ -2085,8 +2078,8 @@ int ha_federated::read_range_first(const key_range *start_key,
String
sql_query
(
sql_query_buffer
,
String
sql_query
(
sql_query_buffer
,
sizeof
(
sql_query_buffer
),
sizeof
(
sql_query_buffer
),
&
my_charset_bin
);
&
my_charset_bin
);
DBUG_ENTER
(
"ha_federated::read_range_first"
);
DBUG_ENTER
(
"ha_federated::read_range_first"
);
if
(
start_key
==
NULL
&&
end_key
==
NULL
)
if
(
start_key
==
NULL
&&
end_key
==
NULL
)
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
...
@@ -2401,7 +2394,6 @@ void ha_federated::info(uint flag)
...
@@ -2401,7 +2394,6 @@ void ha_federated::info(uint flag)
MYSQL_RES
*
result
=
0
;
MYSQL_RES
*
result
=
0
;
MYSQL_ROW
row
;
MYSQL_ROW
row
;
String
status_query_string
(
status_buf
,
sizeof
(
status_buf
),
&
my_charset_bin
);
String
status_query_string
(
status_buf
,
sizeof
(
status_buf
),
&
my_charset_bin
);
DBUG_ENTER
(
"ha_federated::info"
);
DBUG_ENTER
(
"ha_federated::info"
);
error_code
=
ER_QUERY_ON_FOREIGN_DATA_SOURCE
;
error_code
=
ER_QUERY_ON_FOREIGN_DATA_SOURCE
;
...
@@ -2492,10 +2484,10 @@ error:
...
@@ -2492,10 +2484,10 @@ error:
int
ha_federated
::
delete_all_rows
()
int
ha_federated
::
delete_all_rows
()
{
{
DBUG_ENTER
(
"ha_federated::delete_all_rows"
);
char
query_buffer
[
FEDERATED_QUERY_BUFFER_SIZE
];
char
query_buffer
[
FEDERATED_QUERY_BUFFER_SIZE
];
String
query
(
query_buffer
,
sizeof
(
query_buffer
),
&
my_charset_bin
);
String
query
(
query_buffer
,
sizeof
(
query_buffer
),
&
my_charset_bin
);
DBUG_ENTER
(
"ha_federated::delete_all_rows"
);
query
.
length
(
0
);
query
.
length
(
0
);
query
.
set_charset
(
system_charset_info
);
query
.
set_charset
(
system_charset_info
);
...
@@ -2590,32 +2582,14 @@ THR_LOCK_DATA **ha_federated::store_lock(THD *thd,
...
@@ -2590,32 +2582,14 @@ THR_LOCK_DATA **ha_federated::store_lock(THD *thd,
int
ha_federated
::
create
(
const
char
*
name
,
TABLE
*
table_arg
,
int
ha_federated
::
create
(
const
char
*
name
,
TABLE
*
table_arg
,
HA_CREATE_INFO
*
create_info
)
HA_CREATE_INFO
*
create_info
)
{
{
int
retval
=
0
;
int
retval
;
/*
FEDERATED_SHARE
tmp_share
;
// Only a temporary share, to test the url
only a temporary share, to test the url
*/
FEDERATED_SHARE
tmp_share
;
DBUG_ENTER
(
"ha_federated::create"
);
DBUG_ENTER
(
"ha_federated::create"
);
if
((
retval
=
parse_url
(
&
tmp_share
,
table_arg
,
1
)))
if
(
!
(
retval
=
parse_url
(
&
tmp_share
,
table_arg
,
1
)))
goto
error
;
retval
=
check_foreign_data_source
(
&
tmp_share
,
1
);
if
((
retval
=
check_foreign_data_source
(
&
tmp_share
,
1
)))
goto
error
;
if
(
tmp_share
.
scheme
)
my_free
((
gptr
)
tmp_share
.
scheme
,
MYF
(
MY_ALLOW_ZERO_PTR
));
{
my_free
((
gptr
)
tmp_share
.
scheme
,
MYF
(
0
));
tmp_share
.
scheme
=
0
;
}
DBUG_RETURN
(
retval
);
error:
if
(
tmp_share
.
scheme
)
{
my_free
((
gptr
)
tmp_share
.
scheme
,
MYF
(
0
));
tmp_share
.
scheme
=
0
;
}
DBUG_RETURN
(
retval
);
DBUG_RETURN
(
retval
);
}
}
...
...
sql/sql_prepare.cc
View file @
f577ebb8
...
@@ -2792,6 +2792,8 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor)
...
@@ -2792,6 +2792,8 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor)
my_error
(
ER_PS_NO_RECURSION
,
MYF
(
0
));
my_error
(
ER_PS_NO_RECURSION
,
MYF
(
0
));
return
1
;
return
1
;
}
}
/* In case the command has a call to SP which re-uses this statement name */
flags
|=
(
uint
)
IS_IN_USE
;
if
(
cursor
&&
cursor
->
is_open
())
if
(
cursor
&&
cursor
->
is_open
())
close_cursor
();
close_cursor
();
...
...
sql/sql_table.cc
View file @
f577ebb8
...
@@ -1571,7 +1571,7 @@ bool mysql_create_table(THD *thd,const char *db, const char *table_name,
...
@@ -1571,7 +1571,7 @@ bool mysql_create_table(THD *thd,const char *db, const char *table_name,
DBUG_RETURN
(
TRUE
);
DBUG_RETURN
(
TRUE
);
}
}
if
(
wait_if_global_read_lock
(
thd
,
0
,
1
))
if
(
wait_if_global_read_lock
(
thd
,
0
,
1
))
DBUG_RETURN
(
error
);
DBUG_RETURN
(
TRUE
);
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
if
(
!
internal_tmp_table
&&
!
(
create_info
->
options
&
HA_LEX_CREATE_TMP_TABLE
))
if
(
!
internal_tmp_table
&&
!
(
create_info
->
options
&
HA_LEX_CREATE_TMP_TABLE
))
{
{
...
@@ -1636,20 +1636,20 @@ bool mysql_create_table(THD *thd,const char *db, const char *table_name,
...
@@ -1636,20 +1636,20 @@ bool mysql_create_table(THD *thd,const char *db, const char *table_name,
mysql_bin_log
.
write
(
&
qinfo
);
mysql_bin_log
.
write
(
&
qinfo
);
}
}
error
=
FALSE
;
error
=
FALSE
;
goto
end
;
warn:
error
=
0
;
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_NOTE
,
ER_TABLE_EXISTS_ERROR
,
ER
(
ER_TABLE_EXISTS_ERROR
),
alias
);
create_info
->
table_existed
=
1
;
// Mark that table existed
end:
end:
VOID
(
pthread_mutex_unlock
(
&
LOCK_open
));
VOID
(
pthread_mutex_unlock
(
&
LOCK_open
));
start_waiting_global_read_lock
(
thd
);
start_waiting_global_read_lock
(
thd
);
thd
->
proc_info
=
"After create"
;
thd
->
proc_info
=
"After create"
;
DBUG_RETURN
(
error
);
DBUG_RETURN
(
error
);
warn:
error
=
FALSE
;
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_NOTE
,
ER_TABLE_EXISTS_ERROR
,
ER
(
ER_TABLE_EXISTS_ERROR
),
alias
);
create_info
->
table_existed
=
1
;
// Mark that table existed
goto
end
;
}
}
/*
/*
...
...
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