summaryrefslogtreecommitdiff
path: root/myisam/myisampack.c
diff options
context:
space:
mode:
authorunknown <ramil@mysql.com>2005-09-05 18:28:56 +0500
committerunknown <ramil@mysql.com>2005-09-05 18:28:56 +0500
commit7655c12823074cc9492470bad0e1e188c643d375 (patch)
tree4523c480ff3020b7a082c4066c29b6f996ffa587 /myisam/myisampack.c
parent75b1feff0c9bca5ef3ee1dc08fa9db7e5b412cd7 (diff)
parentd20f831acdc50c7bf51496fd0c65e7600b2061aa (diff)
downloadmariadb-git-7655c12823074cc9492470bad0e1e188c643d375.tar.gz
Merge mysql.com:/usr/home/ram/work/4.1.b4214
into mysql.com:/usr/home/ram/work/mysql-5.0 myisam/mi_check.c: Auto merged myisam/mi_packrec.c: Auto merged myisam/mi_static.c: Auto merged myisam/myisamdef.h: Auto merged ndb/src/kernel/main.cpp: Auto merged ndb/src/kernel/vm/Emulator.cpp: Auto merged myisam/myisampack.c: merging
Diffstat (limited to 'myisam/myisampack.c')
-rw-r--r--myisam/myisampack.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/myisam/myisampack.c b/myisam/myisampack.c
index b8f21392f8a..3b091cd6ea2 100644
--- a/myisam/myisampack.c
+++ b/myisam/myisampack.c
@@ -2417,6 +2417,7 @@ static int compress_isam_file(PACK_MRG_INFO *mrg, HUFF_COUNTS *huff_counts)
HUFF_COUNTS *count,*end_count;
HUFF_TREE *tree;
MI_INFO *isam_file=mrg->file[0];
+ uint pack_version= (uint) isam_file->s->pack.version;
DBUG_ENTER("compress_isam_file");
/* Allocate a buffer for the records (excluding blobs). */
@@ -2455,25 +2456,11 @@ static int compress_isam_file(PACK_MRG_INFO *mrg, HUFF_COUNTS *huff_counts)
huff_counts[i].tree->height+huff_counts[i].length_bits;
}
max_calc_length= (max_calc_length + 7) / 8;
- if (max_calc_length < 254)
- pack_ref_length=1;
- else if (max_calc_length <= 65535)
- pack_ref_length=3;
- else
- pack_ref_length=4;
-
+ pack_ref_length= calc_pack_length(pack_version, max_calc_length);
record_count=0;
/* 'max_blob_length' is the max length of all blobs of a record. */
- pack_blob_length=0;
- if (isam_file->s->base.blobs)
- {
- if (mrg->max_blob_length < 254)
- pack_blob_length=1;
- else if (mrg->max_blob_length <= 65535)
- pack_blob_length=3;
- else
- pack_blob_length=4;
- }
+ pack_blob_length= isam_file->s->base.blobs ?
+ calc_pack_length(pack_version, mrg->max_blob_length) : 0;
max_pack_length=pack_ref_length+pack_blob_length;
DBUG_PRINT("fields", ("==="));
@@ -2746,9 +2733,10 @@ static int compress_isam_file(PACK_MRG_INFO *mrg, HUFF_COUNTS *huff_counts)
}
flush_bits();
length=(ulong) ((byte*) file_buffer.pos - record_pos) - max_pack_length;
- pack_length=save_pack_length(record_pos,length);
+ pack_length= save_pack_length(pack_version, record_pos, length);
if (pack_blob_length)
- pack_length+=save_pack_length(record_pos+pack_length,tot_blob_length);
+ pack_length+= save_pack_length(pack_version, record_pos + pack_length,
+ tot_blob_length);
DBUG_PRINT("fields", ("record: %lu length: %lu blob-length: %lu "
"length-bytes: %lu", (ulong) record_count, length,
tot_blob_length, pack_length));