Auto-merge from mysql-next-mr.
This commit is contained in:
commit
fd433cfb96
@ -12717,3 +12717,13 @@ COUNT(t1.a)
|
|||||||
729
|
729
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@join_buffer_size= @save_join_buffer_size;
|
SET @@join_buffer_size= @save_join_buffer_size;
|
||||||
|
End of 5.1 tests
|
||||||
|
CREATE TABLE t1(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
|
||||||
|
INSERT INTO t1 VALUES(NULL,'a'),(NULL,'a');
|
||||||
|
CREATE TABLE t2(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
|
||||||
|
INSERT INTO t2 VALUES(NULL,'b'),(NULL,'b');
|
||||||
|
SELECT t1.id, t2.id, t1.name, t2.name FROM t1,t2 WHERE t1.id = t2.id;
|
||||||
|
id id name name
|
||||||
|
1 1 a b
|
||||||
|
2 2 a b
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
DROP TABLE IF EXISTS t1,t2,t3;
|
||||||
CREATE TABLE t1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE,
|
CREATE TABLE t1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE,
|
||||||
c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE, a INT PRIMARY KEY);
|
c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE, a INT PRIMARY KEY);
|
||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
@ -85,5 +86,37 @@ FLUSH TABLE mysql_db1.t1;
|
|||||||
SELECT COUNT(*) FROM mysql_db1.t1 WHERE c2 < 5;
|
SELECT COUNT(*) FROM mysql_db1.t1 WHERE c2 < 5;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
128
|
128
|
||||||
|
# ===== myisampack.1 =====
|
||||||
|
CREATE TABLE t1(a INT);
|
||||||
|
INSERT INTO t1 VALUES(20);
|
||||||
|
CREATE TABLE t2(a INT);
|
||||||
|
INSERT INTO t2 VALUES(40);
|
||||||
|
FLUSH TABLE t1,t2;
|
||||||
|
#If the myisampack --join operation is successful, we have table t3(.frm)
|
||||||
|
#so we should be able to query about the table from server.
|
||||||
|
SELECT COUNT(a) FROM t3;
|
||||||
|
COUNT(a)
|
||||||
|
1024
|
||||||
|
# ===== myisampack.2 =====
|
||||||
|
FLUSH TABLE t3;
|
||||||
|
#Tests the myisampack join operation with an existing destination .frm file,
|
||||||
|
#the command should return correct exit status(0) and
|
||||||
|
#we should be able to query the table.
|
||||||
|
SELECT COUNT(a) FROM t3;
|
||||||
|
COUNT(a)
|
||||||
|
1024
|
||||||
|
# ===== myisampack.3 =====
|
||||||
|
DROP TABLE t3;
|
||||||
|
#Tests the myisampack join operation without frm file for the first and second table
|
||||||
|
#No frm file is generated in this and we shouldn't be able to access the newly
|
||||||
|
#created table
|
||||||
|
SELECT COUNT(a) FROM t3;
|
||||||
|
ERROR 42S02: Table 'test.t3' doesn't exist
|
||||||
|
# ===== myisampack.4 =====
|
||||||
|
#Tests the myisampack join operation with an existing destination .frm,.MYI,.MDI
|
||||||
|
#the command should fail with exit status 2
|
||||||
|
myisampack: Can't create/write to file (Errcode: 17)
|
||||||
|
Aborted: file is not compressed
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
DROP TABLE mysql_db1.t1;
|
DROP TABLE mysql_db1.t1;
|
||||||
DROP DATABASE mysql_db1;
|
DROP DATABASE mysql_db1;
|
||||||
|
@ -2048,23 +2048,4 @@ CREATE TABLE t1(id INT,KEY(id)) ENGINE=MYISAM
|
|||||||
PARTITION BY HASH(id) PARTITIONS 2;
|
PARTITION BY HASH(id) PARTITIONS 2;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET SESSION SQL_MODE=DEFAULT;
|
SET SESSION SQL_MODE=DEFAULT;
|
||||||
#
|
|
||||||
# BUG#45816 - assertion failure with index containing double
|
|
||||||
# column on partitioned table
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (
|
|
||||||
a INT DEFAULT NULL,
|
|
||||||
b DOUBLE DEFAULT NULL,
|
|
||||||
c INT DEFAULT NULL,
|
|
||||||
KEY idx2(b,a)
|
|
||||||
) PARTITION BY HASH(c) PARTITIONS 3;
|
|
||||||
INSERT INTO t1 VALUES (6,8,9);
|
|
||||||
INSERT INTO t1 VALUES (6,8,10);
|
|
||||||
SELECT 1 FROM t1 JOIN t1 AS t2 USING (a) FOR UPDATE;
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
DROP TABLE t1;
|
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1623,3 +1623,15 @@ INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
|
|||||||
SELECT COUNT(t1.a) FROM t1, t1 a, t1 b, t1 c, t1 d, t1 e;
|
SELECT COUNT(t1.a) FROM t1, t1 a, t1 b, t1 c, t1 d, t1 e;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@join_buffer_size= @save_join_buffer_size;
|
SET @@join_buffer_size= @save_join_buffer_size;
|
||||||
|
|
||||||
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#40677 - Archive tables joined on primary return no result
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
|
||||||
|
INSERT INTO t1 VALUES(NULL,'a'),(NULL,'a');
|
||||||
|
CREATE TABLE t2(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
|
||||||
|
INSERT INTO t2 VALUES(NULL,'b'),(NULL,'b');
|
||||||
|
SELECT t1.id, t2.id, t1.name, t2.name FROM t1,t2 WHERE t1.id = t2.id;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
-- disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1,t2,t3;
|
||||||
|
-- enable_warnings
|
||||||
#
|
#
|
||||||
# BUG#31277 - myisamchk --unpack corrupts a table
|
# BUG#31277 - myisamchk --unpack corrupts a table
|
||||||
#
|
#
|
||||||
@ -105,5 +108,116 @@ let $MYSQLD_DATADIR= `select @@datadir`;
|
|||||||
--exec $MYISAMCHK -srq $MYSQLD_DATADIR/mysql_db1/t1
|
--exec $MYISAMCHK -srq $MYSQLD_DATADIR/mysql_db1/t1
|
||||||
SELECT COUNT(*) FROM mysql_db1.t1 WHERE c2 < 5;
|
SELECT COUNT(*) FROM mysql_db1.t1 WHERE c2 < 5;
|
||||||
#
|
#
|
||||||
|
# Bug#36573 myisampack --join does not create destination table .frm file
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
# Testcase myisampack.1: Positive test for myisampack --join
|
||||||
|
# To test myisampack --join operation creates .frm file
|
||||||
|
# If it creates .frm file, we will be able to access from mysql
|
||||||
|
# server
|
||||||
|
#############################################################################
|
||||||
|
--echo # ===== myisampack.1 =====
|
||||||
|
CREATE TABLE t1(a INT);
|
||||||
|
INSERT INTO t1 VALUES(20);
|
||||||
|
|
||||||
|
let $i=9;
|
||||||
|
--disable_query_log
|
||||||
|
while ($i)
|
||||||
|
{
|
||||||
|
INSERT INTO t1 SELECT a from t1;
|
||||||
|
dec $i;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
CREATE TABLE t2(a INT);
|
||||||
|
INSERT INTO t2 VALUES(40);
|
||||||
|
|
||||||
|
let $i=9;
|
||||||
|
--disable_query_log
|
||||||
|
while ($i)
|
||||||
|
{
|
||||||
|
INSERT INTO t2 SELECT a from t2;
|
||||||
|
dec $i;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
FLUSH TABLE t1,t2;
|
||||||
|
--exec $MYISAMPACK --join=$MYSQLD_DATADIR/test/t3 $MYSQLD_DATADIR/test/t1 $MYSQLD_DATADIR/test/t2 2>&1
|
||||||
|
|
||||||
|
--echo #If the myisampack --join operation is successful, we have table t3(.frm)
|
||||||
|
--echo #so we should be able to query about the table from server.
|
||||||
|
SELECT COUNT(a) FROM t3;
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# Testcase myisampack.2: 2nd Positive test for myisampack --join
|
||||||
|
# Test myisampack join operation with an existing destination frm file.
|
||||||
|
# It should finish the join operation successfully
|
||||||
|
#############################################################################
|
||||||
|
--echo # ===== myisampack.2 =====
|
||||||
|
FLUSH TABLE t3;
|
||||||
|
--remove_file $MYSQLD_DATADIR/test/t3.MYI
|
||||||
|
--remove_file $MYSQLD_DATADIR/test/t3.MYD
|
||||||
|
--exec $MYISAMPACK --join=$MYSQLD_DATADIR/test/t3 $MYSQLD_DATADIR/test/t1 $MYSQLD_DATADIR/test/t2 2>&1
|
||||||
|
--echo #Tests the myisampack join operation with an existing destination .frm file,
|
||||||
|
--echo #the command should return correct exit status(0) and
|
||||||
|
--echo #we should be able to query the table.
|
||||||
|
|
||||||
|
SELECT COUNT(a) FROM t3;
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# Testcase myisampack.3: 3rd Positive test for myisampack --join
|
||||||
|
# Test myisampack join operation without frm file for first table and second
|
||||||
|
# table. It should finish the join operation successfully
|
||||||
|
#############################################################################
|
||||||
|
--echo # ===== myisampack.3 =====
|
||||||
|
--copy_file $MYSQLD_DATADIR/test/t1.frm $MYSQLTEST_VARDIR/tmp/bug36573.t1.frm
|
||||||
|
--copy_file $MYSQLD_DATADIR/test/t2.frm $MYSQLTEST_VARDIR/tmp/bug36573.t2.frm
|
||||||
|
--remove_file $MYSQLD_DATADIR/test/t1.frm
|
||||||
|
--remove_file $MYSQLD_DATADIR/test/t2.frm
|
||||||
|
|
||||||
|
DROP TABLE t3;
|
||||||
|
--exec $MYISAMPACK --join=$MYSQLD_DATADIR/test/t3 $MYSQLD_DATADIR/test/t1 $MYSQLD_DATADIR/test/t2 2>&1
|
||||||
|
--echo #Tests the myisampack join operation without frm file for the first and second table
|
||||||
|
--echo #No frm file is generated in this and we shouldn't be able to access the newly
|
||||||
|
--echo #created table
|
||||||
|
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
SELECT COUNT(a) FROM t3;
|
||||||
|
|
||||||
|
--copy_file $MYSQLTEST_VARDIR/tmp/bug36573.t1.frm $MYSQLD_DATADIR/test/t1.frm
|
||||||
|
--copy_file $MYSQLTEST_VARDIR/tmp/bug36573.t2.frm $MYSQLD_DATADIR/test/t2.frm
|
||||||
|
--copy_file $MYSQLTEST_VARDIR/tmp/bug36573.t1.frm $MYSQLD_DATADIR/test/t3.frm
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/bug36573.t1.frm
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/bug36573.t2.frm
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# Testcase myisampack.4: Negative test for myisampack --join
|
||||||
|
# Test myisampack join operation with an existing .MYI,.MDI,.frm files
|
||||||
|
# the test should fail
|
||||||
|
#############################################################################
|
||||||
|
--echo # ===== myisampack.4 =====
|
||||||
|
--echo #Tests the myisampack join operation with an existing destination .frm,.MYI,.MDI
|
||||||
|
--echo #the command should fail with exit status 2
|
||||||
|
#
|
||||||
|
# Note: Use of regular expressions in this file is for output printed in result file
|
||||||
|
# The main purpose of this regular expression is to supress the filenames for
|
||||||
|
# error messages produced so that we can create a generic result file
|
||||||
|
#
|
||||||
|
#1. /.*myisampack(\.exe)?: Can't create\/write to file .*\(/myisampack: Can't create\/write to file (/
|
||||||
|
# Replace everything before "myisampack" or "myisampack.exe" and followed by
|
||||||
|
# ": Can't create\/write to file " until the first open paranthesis , with
|
||||||
|
# "myisampack: Can't create\/write to file ("
|
||||||
|
#
|
||||||
|
#2. /Aborted: .*is/Aborted: file is/
|
||||||
|
# Replace everything after starting with "Aborted: " until ending with "is" with
|
||||||
|
# "Aborted: file is/
|
||||||
|
#
|
||||||
|
--replace_regex /.*myisampack(\.exe)?: Can't create\/write to file .*\(/myisampack: Can't create\/write to file (/ /Aborted: .*is/Aborted: file is/
|
||||||
|
--error 2
|
||||||
|
--exec $MYISAMPACK --join=$MYSQLD_DATADIR/test/t3 $MYSQLD_DATADIR/test/t1 $MYSQLD_DATADIR/test/t2 2>&1
|
||||||
|
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
DROP TABLE mysql_db1.t1;
|
DROP TABLE mysql_db1.t1;
|
||||||
DROP DATABASE mysql_db1;
|
DROP DATABASE mysql_db1;
|
||||||
|
|
||||||
|
@ -2039,23 +2039,24 @@ CREATE TABLE t1(id INT,KEY(id)) ENGINE=MYISAM
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET SESSION SQL_MODE=DEFAULT;
|
SET SESSION SQL_MODE=DEFAULT;
|
||||||
|
|
||||||
|
# This testcase is commented due to the Bug #46853
|
||||||
--echo #
|
# Should be uncommented after fixing Bug #46853
|
||||||
--echo # BUG#45816 - assertion failure with index containing double
|
#--echo #
|
||||||
--echo # column on partitioned table
|
#--echo # BUG#45816 - assertion failure with index containing double
|
||||||
--echo #
|
#--echo # column on partitioned table
|
||||||
|
#--echo #
|
||||||
CREATE TABLE t1 (
|
#
|
||||||
a INT DEFAULT NULL,
|
#CREATE TABLE t1 (
|
||||||
b DOUBLE DEFAULT NULL,
|
# a INT DEFAULT NULL,
|
||||||
c INT DEFAULT NULL,
|
# b DOUBLE DEFAULT NULL,
|
||||||
KEY idx2(b,a)
|
# c INT DEFAULT NULL,
|
||||||
) PARTITION BY HASH(c) PARTITIONS 3;
|
# KEY idx2(b,a)
|
||||||
|
#) PARTITION BY HASH(c) PARTITIONS 3;
|
||||||
INSERT INTO t1 VALUES (6,8,9);
|
#
|
||||||
INSERT INTO t1 VALUES (6,8,10);
|
#INSERT INTO t1 VALUES (6,8,9);
|
||||||
|
#INSERT INTO t1 VALUES (6,8,10);
|
||||||
SELECT 1 FROM t1 JOIN t1 AS t2 USING (a) FOR UPDATE;
|
#
|
||||||
|
#SELECT 1 FROM t1 JOIN t1 AS t2 USING (a) FOR UPDATE;
|
||||||
DROP TABLE t1;
|
#
|
||||||
|
#DROP TABLE t1;
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -3934,15 +3934,43 @@ bool mysql_create_table_no_lock(THD *thd,
|
|||||||
create_info->table_existed= 0; // Mark that table is created
|
create_info->table_existed= 0; // Mark that table is created
|
||||||
|
|
||||||
#ifdef HAVE_READLINK
|
#ifdef HAVE_READLINK
|
||||||
if (test_if_data_home_dir(create_info->data_file_name))
|
|
||||||
{
|
{
|
||||||
my_error(ER_WRONG_ARGUMENTS, MYF(0), "DATA DIRECTORY");
|
size_t dirlen;
|
||||||
goto unlock_and_end;
|
char dirpath[FN_REFLEN];
|
||||||
}
|
|
||||||
if (test_if_data_home_dir(create_info->index_file_name))
|
/*
|
||||||
{
|
data_file_name and index_file_name include the table name without
|
||||||
my_error(ER_WRONG_ARGUMENTS, MYF(0), "INDEX DIRECTORY");
|
extension. Mostly this does not refer to an existing file. When
|
||||||
goto unlock_and_end;
|
comparing data_file_name or index_file_name against the data
|
||||||
|
directory, we try to resolve all symbolic links. On some systems,
|
||||||
|
we use realpath(3) for the resolution. This returns ENOENT if the
|
||||||
|
resolved path does not refer to an existing file. my_realpath()
|
||||||
|
does then copy the requested path verbatim, without symlink
|
||||||
|
resolution. Thereafter the comparison can fail even if the
|
||||||
|
requested path is within the data directory. E.g. if symlinks to
|
||||||
|
another file system are used. To make realpath(3) return the
|
||||||
|
resolved path, we strip the table name and compare the directory
|
||||||
|
path only. If the directory doesn't exist either, table creation
|
||||||
|
will fail anyway.
|
||||||
|
*/
|
||||||
|
if (create_info->data_file_name)
|
||||||
|
{
|
||||||
|
dirname_part(dirpath, create_info->data_file_name, &dirlen);
|
||||||
|
if (test_if_data_home_dir(dirpath))
|
||||||
|
{
|
||||||
|
my_error(ER_WRONG_ARGUMENTS, MYF(0), "DATA DIRECTORY");
|
||||||
|
goto unlock_and_end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (create_info->index_file_name)
|
||||||
|
{
|
||||||
|
dirname_part(dirpath, create_info->index_file_name, &dirlen);
|
||||||
|
if (test_if_data_home_dir(dirpath))
|
||||||
|
{
|
||||||
|
my_error(ER_WRONG_ARGUMENTS, MYF(0), "INDEX DIRECTORY");
|
||||||
|
goto unlock_and_end;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||||
|
@ -981,7 +981,11 @@ int ha_archive::index_read_idx(uchar *buf, uint index, const uchar *key,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (found)
|
if (found)
|
||||||
|
{
|
||||||
|
/* notify handler that a record has been found */
|
||||||
|
table->status= 0;
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
}
|
||||||
|
|
||||||
error:
|
error:
|
||||||
DBUG_RETURN(rc ? rc : HA_ERR_END_OF_FILE);
|
DBUG_RETURN(rc ? rc : HA_ERR_END_OF_FILE);
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
|
|
||||||
#define DATA_TMP_EXT ".TMD"
|
#define DATA_TMP_EXT ".TMD"
|
||||||
#define OLD_EXT ".OLD"
|
#define OLD_EXT ".OLD"
|
||||||
|
#define FRM_EXT ".frm"
|
||||||
#define WRITE_COUNT MY_HOW_OFTEN_TO_WRITE
|
#define WRITE_COUNT MY_HOW_OFTEN_TO_WRITE
|
||||||
|
|
||||||
struct st_file_buffer {
|
struct st_file_buffer {
|
||||||
@ -125,6 +126,7 @@ static void get_options(int *argc,char ***argv);
|
|||||||
static MI_INFO *open_isam_file(char *name,int mode);
|
static MI_INFO *open_isam_file(char *name,int mode);
|
||||||
static my_bool open_isam_files(PACK_MRG_INFO *mrg,char **names,uint count);
|
static my_bool open_isam_files(PACK_MRG_INFO *mrg,char **names,uint count);
|
||||||
static int compress(PACK_MRG_INFO *file,char *join_name);
|
static int compress(PACK_MRG_INFO *file,char *join_name);
|
||||||
|
static int create_dest_frm(char *source_table, char *dest_table);
|
||||||
static HUFF_COUNTS *init_huff_count(MI_INFO *info,my_off_t records);
|
static HUFF_COUNTS *init_huff_count(MI_INFO *info,my_off_t records);
|
||||||
static void free_counts_and_tree_and_queue(HUFF_TREE *huff_trees,
|
static void free_counts_and_tree_and_queue(HUFF_TREE *huff_trees,
|
||||||
uint trees,
|
uint trees,
|
||||||
@ -214,9 +216,13 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
error=ok=isamchk_neaded=0;
|
error=ok=isamchk_neaded=0;
|
||||||
if (join_table)
|
if (join_table)
|
||||||
{ /* Join files into one */
|
{
|
||||||
|
/*
|
||||||
|
Join files into one and create FRM file for the compressed table only if
|
||||||
|
the compression succeeds
|
||||||
|
*/
|
||||||
if (open_isam_files(&merge,argv,(uint) argc) ||
|
if (open_isam_files(&merge,argv,(uint) argc) ||
|
||||||
compress(&merge,join_table))
|
compress(&merge, join_table) || create_dest_frm(argv[0], join_table))
|
||||||
error=1;
|
error=1;
|
||||||
}
|
}
|
||||||
else while (argc--)
|
else while (argc--)
|
||||||
@ -757,6 +763,44 @@ static int compress(PACK_MRG_INFO *mrg,char *result_table)
|
|||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create FRM for the destination table for --join operation
|
||||||
|
Copy the first table FRM as the destination table FRM file. Doing so
|
||||||
|
will help the mysql server to recognize the newly created table.
|
||||||
|
See Bug#36573.
|
||||||
|
|
||||||
|
@param source_table Name of the source table
|
||||||
|
@param dest_table Name of the destination table
|
||||||
|
@retval 0 Successful copy operation
|
||||||
|
|
||||||
|
@note We always return 0 because we don't want myisampack to report error
|
||||||
|
even if the copy operation fails.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int create_dest_frm(char *source_table, char *dest_table)
|
||||||
|
{
|
||||||
|
char source_name[FN_REFLEN], dest_name[FN_REFLEN];
|
||||||
|
|
||||||
|
DBUG_ENTER("create_dest_frm");
|
||||||
|
|
||||||
|
(void) fn_format(source_name, source_table,
|
||||||
|
"", FRM_EXT, MY_UNPACK_FILENAME | MY_RESOLVE_SYMLINKS);
|
||||||
|
(void) fn_format(dest_name, dest_table,
|
||||||
|
"", FRM_EXT, MY_UNPACK_FILENAME | MY_RESOLVE_SYMLINKS);
|
||||||
|
/*
|
||||||
|
Error messages produced by my_copy() are suppressed as this
|
||||||
|
is not vital for --join operation. User shouldn't see any error messages
|
||||||
|
like "source file frm not found" and "unable to create destination frm
|
||||||
|
file. So we don't pass the flag MY_WME -Write Message on Error to
|
||||||
|
my_copy()
|
||||||
|
*/
|
||||||
|
(void) my_copy(source_name, dest_name, MYF(MY_DONT_OVERWRITE_FILE));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Init a huff_count-struct for each field and init it */
|
/* Init a huff_count-struct for each field and init it */
|
||||||
|
|
||||||
static HUFF_COUNTS *init_huff_count(MI_INFO *info,my_off_t records)
|
static HUFF_COUNTS *init_huff_count(MI_INFO *info,my_off_t records)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user