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
e12136b4
Commit
e12136b4
authored
Aug 23, 2003
by
monty@narttu.mysql.fi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
show symlinked directories in SHOW CREATE TABLE
parent
5192a581
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
65 additions
and
39 deletions
+65
-39
sql/mysql_priv.h
sql/mysql_priv.h
+1
-0
sql/mysqld.cc
sql/mysqld.cc
+6
-2
sql/sql_show.cc
sql/sql_show.cc
+55
-37
sql/sql_table.cc
sql/sql_table.cc
+3
-0
No files found.
sql/mysql_priv.h
View file @
e12136b4
...
@@ -194,6 +194,7 @@ char* query_table_status(THD *thd,const char *db,const char *table_name);
...
@@ -194,6 +194,7 @@ char* query_table_status(THD *thd,const char *db,const char *table_name);
#define MODE_SERIALIZABLE 16
#define MODE_SERIALIZABLE 16
#define MODE_ONLY_FULL_GROUP_BY 32
#define MODE_ONLY_FULL_GROUP_BY 32
#define MODE_NO_UNSIGNED_SUBTRACTION 64
#define MODE_NO_UNSIGNED_SUBTRACTION 64
#define MODE_NO_DIR_IN_CREATE 128
#define RAID_BLOCK_SIZE 1024
#define RAID_BLOCK_SIZE 1024
...
...
sql/mysqld.cc
View file @
e12136b4
...
@@ -433,8 +433,12 @@ time_t start_time;
...
@@ -433,8 +433,12 @@ time_t start_time;
ulong
opt_sql_mode
=
0L
;
ulong
opt_sql_mode
=
0L
;
const
char
*
sql_mode_names
[]
=
const
char
*
sql_mode_names
[]
=
{
"REAL_AS_FLOAT"
,
"PIPES_AS_CONCAT"
,
"ANSI_QUOTES"
,
"IGNORE_SPACE"
,
{
"SERIALIZE"
,
"ONLY_FULL_GROUP_BY"
,
"NO_UNSIGNED_SUBTRACTION"
,
NullS
};
"REAL_AS_FLOAT"
,
"PIPES_AS_CONCAT"
,
"ANSI_QUOTES"
,
"IGNORE_SPACE"
,
"SERIALIZE"
,
"ONLY_FULL_GROUP_BY"
,
"NO_UNSIGNED_SUBTRACTION"
,
"NO_DIR_IN_CREATE"
,
NullS
};
TYPELIB
sql_mode_typelib
=
{
array_elements
(
sql_mode_names
)
-
1
,
""
,
TYPELIB
sql_mode_typelib
=
{
array_elements
(
sql_mode_names
)
-
1
,
""
,
sql_mode_names
};
sql_mode_names
};
...
...
sql/sql_show.cc
View file @
e12136b4
...
@@ -27,8 +27,6 @@
...
@@ -27,8 +27,6 @@
#include "ha_berkeley.h" // For berkeley_show_logs
#include "ha_berkeley.h" // For berkeley_show_logs
#endif
#endif
/* extern "C" pthread_mutex_t THR_LOCK_keycache; */
static
const
char
*
grant_names
[]
=
{
static
const
char
*
grant_names
[]
=
{
"select"
,
"insert"
,
"update"
,
"delete"
,
"create"
,
"drop"
,
"reload"
,
"shutdown"
,
"select"
,
"insert"
,
"update"
,
"delete"
,
"create"
,
"drop"
,
"reload"
,
"shutdown"
,
"process"
,
"file"
,
"grant"
,
"references"
,
"index"
,
"alter"
};
"process"
,
"file"
,
"grant"
,
"references"
,
"index"
,
"alter"
};
...
@@ -817,17 +815,40 @@ append_identifier(THD *thd, String *packet, const char *name)
...
@@ -817,17 +815,40 @@ append_identifier(THD *thd, String *packet, const char *name)
}
}
}
}
/* Append directory name (if exists) to CREATE INFO */
static
void
append_directory
(
THD
*
thd
,
String
*
packet
,
const
char
*
dir_type
,
const
char
*
filename
)
{
uint
length
;
if
(
filename
&&
!
(
thd
->
sql_mode
&
MODE_NO_DIR_IN_CREATE
))
{
length
=
dirname_length
(
filename
);
packet
->
append
(
' '
);
packet
->
append
(
dir_type
);
packet
->
append
(
" DIRECTORY='"
,
12
);
packet
->
append
(
filename
,
length
);
packet
->
append
(
'\''
);
}
}
static
int
static
int
store_create_info
(
THD
*
thd
,
TABLE
*
table
,
String
*
packet
)
store_create_info
(
THD
*
thd
,
TABLE
*
table
,
String
*
packet
)
{
{
List
<
Item
>
field_list
;
char
tmp
[
MAX_FIELD_WIDTH
],
*
for_str
,
buff
[
128
],
*
end
;
String
type
(
tmp
,
sizeof
(
tmp
));
Field
**
ptr
,
*
field
;
uint
primary_key
;
KEY
*
key_info
;
handler
*
file
=
table
->
file
;
HA_CREATE_INFO
create_info
;
DBUG_ENTER
(
"store_create_info"
);
DBUG_ENTER
(
"store_create_info"
);
DBUG_PRINT
(
"enter"
,(
"table: %s"
,
table
->
real_name
));
DBUG_PRINT
(
"enter"
,(
"table: %s"
,
table
->
real_name
));
restore_record
(
table
,
2
);
// Get empty record
restore_record
(
table
,
2
);
// Get empty record
List
<
Item
>
field_list
;
char
tmp
[
MAX_FIELD_WIDTH
];
String
type
(
tmp
,
sizeof
(
tmp
));
if
(
table
->
tmp_table
)
if
(
table
->
tmp_table
)
packet
->
append
(
"CREATE TEMPORARY TABLE "
,
23
);
packet
->
append
(
"CREATE TEMPORARY TABLE "
,
23
);
else
else
...
@@ -835,13 +856,13 @@ store_create_info(THD *thd, TABLE *table, String *packet)
...
@@ -835,13 +856,13 @@ store_create_info(THD *thd, TABLE *table, String *packet)
append_identifier
(
thd
,
packet
,
table
->
real_name
);
append_identifier
(
thd
,
packet
,
table
->
real_name
);
packet
->
append
(
" (
\n
"
,
3
);
packet
->
append
(
" (
\n
"
,
3
);
Field
**
ptr
,
*
field
;
for
(
ptr
=
table
->
field
;
(
field
=
*
ptr
);
ptr
++
)
for
(
ptr
=
table
->
field
;
(
field
=
*
ptr
);
ptr
++
)
{
{
bool
has_default
;
uint
flags
=
field
->
flags
;
if
(
ptr
!=
table
->
field
)
if
(
ptr
!=
table
->
field
)
packet
->
append
(
",
\n
"
,
2
);
packet
->
append
(
",
\n
"
,
2
);
uint
flags
=
field
->
flags
;
packet
->
append
(
" "
,
2
);
packet
->
append
(
" "
,
2
);
append_identifier
(
thd
,
packet
,
field
->
field_name
);
append_identifier
(
thd
,
packet
,
field
->
field_name
);
packet
->
append
(
' '
);
packet
->
append
(
' '
);
...
@@ -852,7 +873,7 @@ store_create_info(THD *thd, TABLE *table, String *packet)
...
@@ -852,7 +873,7 @@ store_create_info(THD *thd, TABLE *table, String *packet)
field
->
sql_type
(
type
);
field
->
sql_type
(
type
);
packet
->
append
(
type
.
ptr
(),
type
.
length
());
packet
->
append
(
type
.
ptr
(),
type
.
length
());
bool
has_default
=
(
field
->
type
()
!=
FIELD_TYPE_BLOB
&&
has_default
=
(
field
->
type
()
!=
FIELD_TYPE_BLOB
&&
field
->
type
()
!=
FIELD_TYPE_TIMESTAMP
&&
field
->
type
()
!=
FIELD_TYPE_TIMESTAMP
&&
field
->
unireg_check
!=
Field
::
NEXT_NUMBER
);
field
->
unireg_check
!=
Field
::
NEXT_NUMBER
);
if
(
flags
&
NOT_NULL_FLAG
)
if
(
flags
&
NOT_NULL_FLAG
)
...
@@ -880,9 +901,10 @@ store_create_info(THD *thd, TABLE *table, String *packet)
...
@@ -880,9 +901,10 @@ store_create_info(THD *thd, TABLE *table, String *packet)
packet
->
append
(
" auto_increment"
,
15
);
packet
->
append
(
" auto_increment"
,
15
);
}
}
KEY
*
key_info
=
table
->
key_info
;
key_info
=
table
->
key_info
;
table
->
file
->
info
(
HA_STATUS_VARIABLE
|
HA_STATUS_NO_LOCK
|
HA_STATUS_TIME
);
file
->
info
(
HA_STATUS_VARIABLE
|
HA_STATUS_NO_LOCK
|
HA_STATUS_TIME
);
uint
primary_key
=
table
->
primary_key
;
file
->
update_create_info
(
&
create_info
);
primary_key
=
table
->
primary_key
;
for
(
uint
i
=
0
;
i
<
table
->
keys
;
i
++
,
key_info
++
)
for
(
uint
i
=
0
;
i
<
table
->
keys
;
i
++
,
key_info
++
)
{
{
...
@@ -918,7 +940,6 @@ store_create_info(THD *thd, TABLE *table, String *packet)
...
@@ -918,7 +940,6 @@ store_create_info(THD *thd, TABLE *table, String *packet)
table
->
field
[
key_part
->
fieldnr
-
1
]
->
key_length
()
&&
table
->
field
[
key_part
->
fieldnr
-
1
]
->
key_length
()
&&
!
(
key_info
->
flags
&
HA_FULLTEXT
)))
!
(
key_info
->
flags
&
HA_FULLTEXT
)))
{
{
char
buff
[
64
];
buff
[
0
]
=
'('
;
buff
[
0
]
=
'('
;
char
*
end
=
int10_to_str
((
long
)
key_part
->
length
,
buff
+
1
,
10
);
char
*
end
=
int10_to_str
((
long
)
key_part
->
length
,
buff
+
1
,
10
);
*
end
++
=
')'
;
*
end
++
=
')'
;
...
@@ -928,43 +949,38 @@ store_create_info(THD *thd, TABLE *table, String *packet)
...
@@ -928,43 +949,38 @@ store_create_info(THD *thd, TABLE *table, String *packet)
packet
->
append
(
')'
);
packet
->
append
(
')'
);
}
}
handler
*
file
=
table
->
file
;
/*
Get possible foreign key definitions stored in InnoDB and append them
/* Get possible foreign key definitions stored in InnoDB and append them
to the CREATE TABLE statement
to the CREATE TABLE statement */
*/
char
*
for_str
=
file
->
get_foreign_key_create_info
();
if
(
for_str
)
{
if
((
for_str
=
file
->
get_foreign_key_create_info
()))
{
packet
->
append
(
for_str
,
strlen
(
for_str
));
packet
->
append
(
for_str
,
strlen
(
for_str
));
file
->
free_foreign_key_create_info
(
for_str
);
file
->
free_foreign_key_create_info
(
for_str
);
}
}
packet
->
append
(
"
\n
)"
,
2
);
packet
->
append
(
"
\n
)"
,
2
);
packet
->
append
(
" TYPE="
,
6
);
packet
->
append
(
" TYPE="
,
6
);
packet
->
append
(
file
->
table_type
());
packet
->
append
(
file
->
table_type
());
char
buff
[
128
];
char
*
p
;
if
(
table
->
min_rows
)
if
(
table
->
min_rows
)
{
{
packet
->
append
(
" MIN_ROWS="
);
packet
->
append
(
" MIN_ROWS="
);
p
=
longlong10_to_str
(
table
->
min_rows
,
buff
,
10
);
end
=
longlong10_to_str
(
table
->
min_rows
,
buff
,
10
);
packet
->
append
(
buff
,
(
uint
)
(
p
-
buff
));
packet
->
append
(
buff
,
(
uint
)
(
end
-
buff
));
}
}
if
(
table
->
max_rows
)
if
(
table
->
max_rows
)
{
{
packet
->
append
(
" MAX_ROWS="
);
packet
->
append
(
" MAX_ROWS="
);
p
=
longlong10_to_str
(
table
->
max_rows
,
buff
,
10
);
end
=
longlong10_to_str
(
table
->
max_rows
,
buff
,
10
);
packet
->
append
(
buff
,
(
uint
)
(
p
-
buff
));
packet
->
append
(
buff
,
(
uint
)
(
end
-
buff
));
}
}
if
(
table
->
avg_row_length
)
if
(
table
->
avg_row_length
)
{
{
packet
->
append
(
" AVG_ROW_LENGTH="
);
packet
->
append
(
" AVG_ROW_LENGTH="
);
p
=
longlong10_to_str
(
table
->
avg_row_length
,
buff
,
10
);
end
=
longlong10_to_str
(
table
->
avg_row_length
,
buff
,
10
);
packet
->
append
(
buff
,
(
uint
)
(
p
-
buff
));
packet
->
append
(
buff
,
(
uint
)
(
end
-
buff
));
}
}
if
(
table
->
db_create_options
&
HA_OPTION_PACK_KEYS
)
if
(
table
->
db_create_options
&
HA_OPTION_PACK_KEYS
)
...
@@ -989,11 +1005,13 @@ store_create_info(THD *thd, TABLE *table, String *packet)
...
@@ -989,11 +1005,13 @@ store_create_info(THD *thd, TABLE *table, String *packet)
}
}
if
(
file
->
raid_type
)
if
(
file
->
raid_type
)
{
{
char
buff
[
100
];
sprintf
(
buff
,
" RAID_TYPE=%s RAID_CHUNKS=%d RAID_CHUNKSIZE=%ld"
,
sprintf
(
buff
,
" RAID_TYPE=%s RAID_CHUNKS=%d RAID_CHUNKSIZE=%ld"
,
my_raid_type
(
file
->
raid_type
),
file
->
raid_chunks
,
file
->
raid_chunksize
/
RAID_BLOCK_SIZE
);
my_raid_type
(
file
->
raid_type
),
file
->
raid_chunks
,
file
->
raid_chunksize
/
RAID_BLOCK_SIZE
);
packet
->
append
(
buff
);
packet
->
append
(
buff
);
}
}
append_directory
(
thd
,
packet
,
"DATA"
,
create_info
.
data_file_name
);
append_directory
(
thd
,
packet
,
"INDEX"
,
create_info
.
index_file_name
);
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
}
}
...
...
sql/sql_table.cc
View file @
e12136b4
...
@@ -747,7 +747,10 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
...
@@ -747,7 +747,10 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
thd
->
proc_info
=
"creating table"
;
thd
->
proc_info
=
"creating table"
;
if
(
thd
->
sql_mode
&
MODE_NO_DIR_IN_CREATE
)
create_info
->
data_file_name
=
create_info
->
index_file_name
=
0
;
create_info
->
table_options
=
db_options
;
create_info
->
table_options
=
db_options
;
if
(
rea_create_table
(
path
,
create_info
,
fields
,
key_count
,
if
(
rea_create_table
(
path
,
create_info
,
fields
,
key_count
,
key_info_buffer
))
key_info_buffer
))
{
{
...
...
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