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
f0f9e0d7
Commit
f0f9e0d7
authored
Jan 30, 2004
by
serg@serg.mylan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SHOW CREATE DATABASE moved to sql_show.cc where it belongs
db name is printed with append_identifier for a proper quoting
parent
776f4dc0
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
91 additions
and
90 deletions
+91
-90
sql/mysql_priv.h
sql/mysql_priv.h
+2
-0
sql/sql_db.cc
sql/sql_db.cc
+1
-90
sql/sql_show.cc
sql/sql_show.cc
+88
-0
No files found.
sql/mysql_priv.h
View file @
f0f9e0d7
...
...
@@ -763,6 +763,8 @@ uint check_word(TYPELIB *lib, const char *val, const char *end,
void
free_items
(
Item
*
item
);
void
cleanup_items
(
Item
*
item
);
#define MY_DB_OPT_FILE "db.opt"
bool
load_db_opt
(
THD
*
thd
,
const
char
*
path
,
HA_CREATE_INFO
*
create
);
/*
External variables
...
...
sql/sql_db.cc
View file @
f0f9e0d7
...
...
@@ -25,8 +25,6 @@
#include <direct.h>
#endif
#define MY_DB_OPT_FILE "db.opt"
const
char
*
del_exts
[]
=
{
".frm"
,
".BAK"
,
".TMD"
,
".opt"
,
NullS
};
static
TYPELIB
deletable_extentions
=
{
array_elements
(
del_exts
)
-
1
,
"del_exts"
,
del_exts
};
...
...
@@ -92,7 +90,7 @@ static bool write_db_opt(THD *thd, const char *path, HA_CREATE_INFO *create)
*/
static
bool
load_db_opt
(
THD
*
thd
,
const
char
*
path
,
HA_CREATE_INFO
*
create
)
bool
load_db_opt
(
THD
*
thd
,
const
char
*
path
,
HA_CREATE_INFO
*
create
)
{
File
file
;
char
buf
[
256
];
...
...
@@ -668,90 +666,3 @@ bool mysql_change_db(THD *thd, const char *name)
DBUG_RETURN
(
0
);
}
int
mysqld_show_create_db
(
THD
*
thd
,
char
*
dbname
,
HA_CREATE_INFO
*
create_info
)
{
int
length
;
char
path
[
FN_REFLEN
],
*
to
;
uint
db_access
;
bool
found_libchar
;
HA_CREATE_INFO
create
;
uint
create_options
=
create_info
?
create_info
->
options
:
0
;
Protocol
*
protocol
=
thd
->
protocol
;
DBUG_ENTER
(
"mysql_show_create_db"
);
if
(
check_db_name
(
dbname
))
{
net_printf
(
thd
,
ER_WRONG_DB_NAME
,
dbname
);
DBUG_RETURN
(
1
);
}
#ifndef NO_EMBEDDED_ACCESS_CHECKS
if
(
test_all_bits
(
thd
->
master_access
,
DB_ACLS
))
db_access
=
DB_ACLS
;
else
db_access
=
(
acl_get
(
thd
->
host
,
thd
->
ip
,
thd
->
priv_user
,
dbname
,
0
)
|
thd
->
master_access
);
if
(
!
(
db_access
&
DB_ACLS
)
&&
(
!
grant_option
||
check_grant_db
(
thd
,
dbname
)))
{
net_printf
(
thd
,
ER_DBACCESS_DENIED_ERROR
,
thd
->
priv_user
,
thd
->
host_or_ip
,
dbname
);
mysql_log
.
write
(
thd
,
COM_INIT_DB
,
ER
(
ER_DBACCESS_DENIED_ERROR
),
thd
->
priv_user
,
thd
->
host_or_ip
,
dbname
);
DBUG_RETURN
(
1
);
}
#endif
(
void
)
sprintf
(
path
,
"%s/%s"
,
mysql_data_home
,
dbname
);
length
=
unpack_dirname
(
path
,
path
);
// Convert if not unix
found_libchar
=
0
;
if
(
length
&&
path
[
length
-
1
]
==
FN_LIBCHAR
)
{
found_libchar
=
1
;
path
[
length
-
1
]
=
0
;
// remove ending '\'
}
if
(
access
(
path
,
F_OK
))
{
net_printf
(
thd
,
ER_BAD_DB_ERROR
,
dbname
);
DBUG_RETURN
(
1
);
}
if
(
found_libchar
)
path
[
length
-
1
]
=
FN_LIBCHAR
;
strmov
(
path
+
length
,
MY_DB_OPT_FILE
);
load_db_opt
(
thd
,
path
,
&
create
);
List
<
Item
>
field_list
;
field_list
.
push_back
(
new
Item_empty_string
(
"Database"
,
NAME_LEN
));
field_list
.
push_back
(
new
Item_empty_string
(
"Create Database"
,
1024
));
if
(
protocol
->
send_fields
(
&
field_list
,
1
))
DBUG_RETURN
(
1
);
protocol
->
prepare_for_resend
();
protocol
->
store
(
dbname
,
strlen
(
dbname
),
system_charset_info
);
to
=
strxmov
(
path
,
"CREATE DATABASE "
,
NullS
);
if
(
create_options
&
HA_LEX_CREATE_IF_NOT_EXISTS
)
to
=
strxmov
(
to
,
"/*!32312 IF NOT EXISTS*/ "
,
NullS
);
to
=
strxmov
(
to
,
"`"
,
dbname
,
"`"
,
NullS
);
if
(
create
.
default_table_charset
)
{
int
cl
=
(
create
.
default_table_charset
->
state
&
MY_CS_PRIMARY
)
?
0
:
1
;
to
=
strxmov
(
to
,
" /*!40100"
" DEFAULT CHARACTER SET "
,
create
.
default_table_charset
->
csname
,
cl
?
" COLLATE "
:
""
,
cl
?
create
.
default_table_charset
->
name
:
""
,
" */"
,
NullS
);
}
protocol
->
store
(
path
,
(
uint
)
(
to
-
path
),
system_charset_info
);
if
(
protocol
->
write
())
DBUG_RETURN
(
1
);
send_eof
(
thd
);
DBUG_RETURN
(
0
);
}
sql/sql_show.cc
View file @
f0f9e0d7
...
...
@@ -813,6 +813,94 @@ mysqld_show_create(THD *thd, TABLE_LIST *table_list)
DBUG_RETURN
(
0
);
}
int
mysqld_show_create_db
(
THD
*
thd
,
char
*
dbname
,
HA_CREATE_INFO
*
create_info
)
{
int
length
;
char
path
[
FN_REFLEN
];
char
buff
[
2048
];
String
buffer
(
buff
,
sizeof
(
buff
),
system_charset_info
);
uint
db_access
;
bool
found_libchar
;
HA_CREATE_INFO
create
;
uint
create_options
=
create_info
?
create_info
->
options
:
0
;
Protocol
*
protocol
=
thd
->
protocol
;
DBUG_ENTER
(
"mysql_show_create_db"
);
if
(
check_db_name
(
dbname
))
{
net_printf
(
thd
,
ER_WRONG_DB_NAME
,
dbname
);
DBUG_RETURN
(
1
);
}
#ifndef NO_EMBEDDED_ACCESS_CHECKS
if
(
test_all_bits
(
thd
->
master_access
,
DB_ACLS
))
db_access
=
DB_ACLS
;
else
db_access
=
(
acl_get
(
thd
->
host
,
thd
->
ip
,
thd
->
priv_user
,
dbname
,
0
)
|
thd
->
master_access
);
if
(
!
(
db_access
&
DB_ACLS
)
&&
(
!
grant_option
||
check_grant_db
(
thd
,
dbname
)))
{
net_printf
(
thd
,
ER_DBACCESS_DENIED_ERROR
,
thd
->
priv_user
,
thd
->
host_or_ip
,
dbname
);
mysql_log
.
write
(
thd
,
COM_INIT_DB
,
ER
(
ER_DBACCESS_DENIED_ERROR
),
thd
->
priv_user
,
thd
->
host_or_ip
,
dbname
);
DBUG_RETURN
(
1
);
}
#endif
(
void
)
sprintf
(
path
,
"%s/%s"
,
mysql_data_home
,
dbname
);
length
=
unpack_dirname
(
path
,
path
);
// Convert if not unix
found_libchar
=
0
;
if
(
length
&&
path
[
length
-
1
]
==
FN_LIBCHAR
)
{
found_libchar
=
1
;
path
[
length
-
1
]
=
0
;
// remove ending '\'
}
if
(
access
(
path
,
F_OK
))
{
net_printf
(
thd
,
ER_BAD_DB_ERROR
,
dbname
);
DBUG_RETURN
(
1
);
}
if
(
found_libchar
)
path
[
length
-
1
]
=
FN_LIBCHAR
;
strmov
(
path
+
length
,
MY_DB_OPT_FILE
);
load_db_opt
(
thd
,
path
,
&
create
);
List
<
Item
>
field_list
;
field_list
.
push_back
(
new
Item_empty_string
(
"Database"
,
NAME_LEN
));
field_list
.
push_back
(
new
Item_empty_string
(
"Create Database"
,
1024
));
if
(
protocol
->
send_fields
(
&
field_list
,
1
))
DBUG_RETURN
(
1
);
protocol
->
prepare_for_resend
();
protocol
->
store
(
dbname
,
strlen
(
dbname
),
system_charset_info
);
buffer
.
length
(
0
);
buffer
.
append
(
"CREATE DATABASE "
,
16
);
if
(
create_options
&
HA_LEX_CREATE_IF_NOT_EXISTS
)
buffer
.
append
(
"/*!32312 IF NOT EXISTS*/ "
,
25
);
append_identifier
(
thd
,
&
buffer
,
dbname
,
strlen
(
dbname
));
if
(
create
.
default_table_charset
)
{
buffer
.
append
(
" /*!40100"
,
9
);
buffer
.
append
(
" DEFAULT CHARACTER SET "
,
23
);
buffer
.
append
(
create
.
default_table_charset
->
csname
);
if
(
!
(
create
.
default_table_charset
->
state
&
MY_CS_PRIMARY
))
{
buffer
.
append
(
" COLLATE "
,
9
);
buffer
.
append
(
create
.
default_table_charset
->
name
);
}
buffer
.
append
(
" */"
,
3
);
}
protocol
->
store
(
buffer
.
ptr
(),
buffer
.
length
(),
buffer
.
charset
());
if
(
protocol
->
write
())
DBUG_RETURN
(
1
);
send_eof
(
thd
);
DBUG_RETURN
(
0
);
}
int
mysqld_show_logs
(
THD
*
thd
)
...
...
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