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
6eae678f
Commit
6eae678f
authored
Jul 21, 2005
by
jimw@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix error message generated when trying to create a table in a
non-existent database. (Bug #10407)
parent
ac6623f0
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
38 additions
and
16 deletions
+38
-16
mysql-test/r/create.result
mysql-test/r/create.result
+2
-2
mysql-test/t/create.test
mysql-test/t/create.test
+2
-2
sql/mysql_priv.h
sql/mysql_priv.h
+6
-2
sql/sql_table.cc
sql/sql_table.cc
+9
-5
sql/table.cc
sql/table.cc
+10
-2
sql/unireg.cc
sql/unireg.cc
+9
-3
No files found.
mysql-test/r/create.result
View file @
6eae678f
...
...
@@ -37,7 +37,7 @@ Note 1051 Unknown table 't1'
create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) engine=heap;
ERROR 42000: Incorrect table definition; there can be only one auto column and it must be defined as a key
create table not_existing_database.test (a int);
Got one of the listed errors
ERROR 42000: Unknown database 'not_existing_database'
create table `a/a` (a int);
ERROR 42000: Incorrect table name 'a/a'
create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa int);
...
...
@@ -342,7 +342,7 @@ create table t3 like t1;
create table t3 like mysqltest.t3;
ERROR 42S01: Table 't3' already exists
create table non_existing_database.t1 like t1;
Got one of the listed errors
ERROR 42000: Unknown database 'non_existing_database'
create table t3 like non_existing_table;
ERROR 42S02: Unknown table 'non_existing_table'
create temporary table t3 like t1;
...
...
mysql-test/t/create.test
View file @
6eae678f
...
...
@@ -39,7 +39,7 @@ drop table if exists t1;
--
error
1075
create
table
t1
(
ordid
int
(
8
)
not
null
auto_increment
,
ord
varchar
(
50
)
not
null
,
primary
key
(
ord
,
ordid
))
engine
=
heap
;
--
error
104
4
,
1
--
error
104
9
create
table
not_existing_database
.
test
(
a
int
);
--
error
1103
create
table
`a/a`
(
a
int
);
...
...
@@ -294,7 +294,7 @@ select * from t2;
create
table
t3
like
t1
;
--
error
1050
create
table
t3
like
mysqltest
.
t3
;
--
error
104
4
,
1
--
error
104
9
create
table
non_existing_database
.
t1
like
t1
;
--
error
1051
create
table
t3
like
non_existing_table
;
...
...
sql/mysql_priv.h
View file @
6eae678f
...
...
@@ -1029,10 +1029,13 @@ void unlock_table_names(THD *thd, TABLE_LIST *table_list,
void
unireg_init
(
ulong
options
);
void
unireg_end
(
void
);
bool
mysql_create_frm
(
THD
*
thd
,
my_string
file_name
,
const
char
*
table
,
const
char
*
db
,
HA_CREATE_INFO
*
create_info
,
List
<
create_field
>
&
create_field
,
uint
key_count
,
KEY
*
key_info
,
handler
*
db_type
);
int
rea_create_table
(
THD
*
thd
,
my_string
file_name
,
HA_CREATE_INFO
*
create_info
,
int
rea_create_table
(
THD
*
thd
,
my_string
file_name
,
const
char
*
table
,
const
char
*
db
,
HA_CREATE_INFO
*
create_info
,
List
<
create_field
>
&
create_field
,
uint
key_count
,
KEY
*
key_info
);
int
format_number
(
uint
inputflag
,
uint
max_length
,
my_string
pos
,
uint
length
,
...
...
@@ -1104,7 +1107,8 @@ ulong make_new_entry(File file,uchar *fileinfo,TYPELIB *formnames,
const
char
*
newname
);
ulong
next_io_size
(
ulong
pos
);
void
append_unescaped
(
String
*
res
,
const
char
*
pos
,
uint
length
);
int
create_frm
(
char
*
name
,
uint
reclength
,
uchar
*
fileinfo
,
int
create_frm
(
char
*
name
,
const
char
*
table
,
const
char
*
db
,
uint
reclength
,
uchar
*
fileinfo
,
HA_CREATE_INFO
*
create_info
,
uint
keys
);
void
update_create_info_from_table
(
HA_CREATE_INFO
*
info
,
TABLE
*
form
);
int
rename_file_ext
(
const
char
*
from
,
const
char
*
to
,
const
char
*
ext
);
...
...
sql/sql_table.cc
View file @
6eae678f
...
...
@@ -1418,12 +1418,10 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
create_info
->
data_file_name
=
create_info
->
index_file_name
=
0
;
create_info
->
table_options
=
db_options
;
if
(
rea_create_table
(
thd
,
path
,
create_info
,
fields
,
key_count
,
if
(
rea_create_table
(
thd
,
path
,
table_name
,
db
,
create_info
,
fields
,
key_count
,
key_info_buffer
))
{
/* my_error(ER_CANT_CREATE_TABLE,MYF(0),table_name,my_errno); */
goto
end
;
}
if
(
create_info
->
options
&
HA_LEX_CREATE_TMP_TABLE
)
{
/* Open table and put in temporary table list */
...
...
@@ -2366,8 +2364,14 @@ int mysql_create_like_table(THD* thd, TABLE_LIST* table,
/*
Create a new table by copying from source table
*/
if
(
my_copy
(
src_path
,
dst_path
,
MYF
(
MY_WME
|
MY_DONT_OVERWRITE_FILE
)))
if
(
my_copy
(
src_path
,
dst_path
,
MYF
(
MY_DONT_OVERWRITE_FILE
)))
{
if
(
my_errno
==
ENOENT
)
my_error
(
ER_BAD_DB_ERROR
,
MYF
(
0
),
db
);
else
my_error
(
ER_CANT_CREATE_FILE
,
MYF
(
0
),
dst_path
,
my_errno
);
goto
err
;
}
/*
As mysql_truncate don't work on a new table at this stage of
...
...
sql/table.cc
View file @
6eae678f
...
...
@@ -1238,7 +1238,8 @@ void append_unescaped(String *res, const char *pos, uint length)
/* Create a .frm file */
File
create_frm
(
register
my_string
name
,
uint
reclength
,
uchar
*
fileinfo
,
File
create_frm
(
register
my_string
name
,
const
char
*
table
,
const
char
*
db
,
uint
reclength
,
uchar
*
fileinfo
,
HA_CREATE_INFO
*
create_info
,
uint
keys
)
{
register
File
file
;
...
...
@@ -1263,7 +1264,7 @@ File create_frm(register my_string name, uint reclength, uchar *fileinfo,
*/
set_if_smaller
(
create_info
->
raid_chunks
,
255
);
if
((
file
=
my_create
(
name
,
CREATE_MODE
,
create_flags
,
MYF
(
MY_WME
)))
>=
0
)
if
((
file
=
my_create
(
name
,
CREATE_MODE
,
create_flags
,
MYF
(
0
)))
>=
0
)
{
bzero
((
char
*
)
fileinfo
,
64
);
fileinfo
[
0
]
=
(
uchar
)
254
;
fileinfo
[
1
]
=
1
;
fileinfo
[
2
]
=
FRM_VER
+
3
;
// Header
...
...
@@ -1300,6 +1301,13 @@ File create_frm(register my_string name, uint reclength, uchar *fileinfo,
}
}
}
else
{
if
(
my_errno
==
ENOENT
)
my_error
(
ER_BAD_DB_ERROR
,
MYF
(
0
),
db
);
else
my_error
(
ER_CANT_CREATE_TABLE
,
MYF
(
0
),
table
,
my_errno
);
}
return
(
file
);
}
/* create_frm */
...
...
sql/unireg.cc
View file @
6eae678f
...
...
@@ -56,6 +56,8 @@ static bool make_empty_rec(int file, enum db_type table_type,
mysql_create_frm()
thd Thread handler
file_name Name of file (including database and .frm)
table Name of table
db Name of database
create_info create info parameters
create_fields Fields to create
keys number of keys to create
...
...
@@ -68,6 +70,7 @@ static bool make_empty_rec(int file, enum db_type table_type,
*/
bool
mysql_create_frm
(
THD
*
thd
,
my_string
file_name
,
const
char
*
table
,
const
char
*
db
,
HA_CREATE_INFO
*
create_info
,
List
<
create_field
>
&
create_fields
,
uint
keys
,
KEY
*
key_info
,
...
...
@@ -114,7 +117,7 @@ bool mysql_create_frm(THD *thd, my_string file_name,
reclength
=
uint2korr
(
forminfo
+
266
);
null_fields
=
uint2korr
(
forminfo
+
282
);
if
((
file
=
create_frm
(
file_name
,
reclength
,
fileinfo
,
if
((
file
=
create_frm
(
file_name
,
table
,
db
,
reclength
,
fileinfo
,
create_info
,
keys
))
<
0
)
{
my_free
((
gptr
)
screen_buff
,
MYF
(
0
));
...
...
@@ -213,9 +216,11 @@ err3:
Create a frm (table definition) file and the tables
SYNOPSIS
mysql_create_frm
()
rea_create_table
()
thd Thread handler
file_name Name of file (including database and .frm)
table Name of table
db Name of database
create_info create info parameters
create_fields Fields to create
keys number of keys to create
...
...
@@ -228,13 +233,14 @@ err3:
*/
int
rea_create_table
(
THD
*
thd
,
my_string
file_name
,
const
char
*
table
,
const
char
*
db
,
HA_CREATE_INFO
*
create_info
,
List
<
create_field
>
&
create_fields
,
uint
keys
,
KEY
*
key_info
)
{
DBUG_ENTER
(
"rea_create_table"
);
if
(
mysql_create_frm
(
thd
,
file_name
,
create_info
,
if
(
mysql_create_frm
(
thd
,
file_name
,
table
,
db
,
create_info
,
create_fields
,
keys
,
key_info
,
NULL
))
DBUG_RETURN
(
1
);
if
(
ha_create_table
(
file_name
,
create_info
,
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