mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Add 3-byte and 6-byte integer serial types. This makes databases smaller
and faster. Should we go ahead and add 5- and 7-byte integer types too? (CVS 1499) FossilOrigin-Name: e6685af815c4c0c7f09bb097a59a121862b865cf
This commit is contained in:
@ -11,7 +11,7 @@
|
||||
# This file implements regression tests for SQLite library. The
|
||||
# focus of this script is btree database backend
|
||||
#
|
||||
# $Id: btree.test,v 1.25 2004/05/18 15:57:42 drh Exp $
|
||||
# $Id: btree.test,v 1.26 2004/05/30 21:14:59 drh Exp $
|
||||
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
@ -520,14 +520,15 @@ do_test btree-6.13 {
|
||||
do_test btree-7.1 {
|
||||
btree_begin_transaction $::b1
|
||||
} {}
|
||||
if 0 {
|
||||
catch {unset key}
|
||||
catch {unset data}
|
||||
do_test btree-7.2 {
|
||||
# Each record will be 10 bytes in size.
|
||||
# + 100 bytes of database header
|
||||
# + 6 bytes of table header
|
||||
# + 8 bytes of table header
|
||||
# + 91*10=910 bytes of cells
|
||||
# Totals 1016 bytes. 8 bytes left over
|
||||
# Totals 1018 bytes. 6 bytes left over
|
||||
# Keys are 1000 through 1090.
|
||||
for {set i 1000} {$i<1091} {incr i} {
|
||||
set key $i
|
||||
@ -535,28 +536,35 @@ do_test btree-7.2 {
|
||||
btree_insert $::c1 $key $data
|
||||
}
|
||||
lrange [btree_cursor_info $::c1] 4 5
|
||||
} {8 1}
|
||||
} {6 0}
|
||||
#btree_tree_dump $::b1 1
|
||||
do_test btree-7.3 {
|
||||
for {set i 1001} {$i<1091} {incr i 2} {
|
||||
btree_move_to $::c1 $i
|
||||
btree_delete $::c1
|
||||
}
|
||||
# Freed 45 blocks. Total freespace is 458
|
||||
# Freed 45 blocks. Total freespace is 456
|
||||
# Keys remaining are even numbers between 1000 and 1090, inclusive
|
||||
lrange [btree_cursor_info $::c1] 4 5
|
||||
} {458 46}
|
||||
} {456 45}
|
||||
#btree_tree_dump $::b1 1
|
||||
do_test btree-7.4 {
|
||||
# The largest free block is 10 bytes long. So if we insert
|
||||
# a record bigger than 10 bytes it should force a defrag
|
||||
# The record is 20 bytes long.
|
||||
btree_insert $::c1 2000 {123456789_12345}
|
||||
# The largest free block is 8 bytes long. But there is also a
|
||||
# huge hole between the cell pointer array and the cellcontent.
|
||||
# But if we insert a large enough record, it should force a defrag.
|
||||
set data 123456789_
|
||||
append data $data
|
||||
append data $data
|
||||
append data $data
|
||||
append data $data
|
||||
append data $data
|
||||
btree_insert $::c1 2000 $data
|
||||
btree_move_to $::c1 2000
|
||||
btree_key $::c1
|
||||
} {2000}
|
||||
do_test btree-7.5 {
|
||||
lrange [btree_cursor_info $::c1] 4 5
|
||||
} {438 1}
|
||||
} {343 0}
|
||||
#btree_tree_dump $::b1 1
|
||||
|
||||
# Delete an entry to make a hole of a known size, then immediately recreate
|
||||
@ -574,13 +582,13 @@ do_test btree-7.6 {
|
||||
} {}
|
||||
do_test btree-7.7 {
|
||||
lrange [btree_cursor_info $::c1] 4 5
|
||||
} {458 3} ;# Create two new holes of 10 bytes each
|
||||
#btree_page_dump $::b1 2
|
||||
} {363 2} ;# Create two new holes of 10 bytes each
|
||||
#btree_page_dump $::b1 1
|
||||
do_test btree-7.8 {
|
||||
btree_insert $::c1 1006 { 1006}
|
||||
lrange [btree_cursor_info $::c1] 4 5
|
||||
} {448 2} ;# Filled in the first hole
|
||||
#btree_page_dump $::b1 2
|
||||
} {353 1} ;# Filled in the first hole
|
||||
btree_page_dump $::b1 1
|
||||
|
||||
# Make sure the freeSpace() routine properly coaleses adjacent memory blocks
|
||||
#
|
||||
@ -588,7 +596,9 @@ do_test btree-7.9 {
|
||||
btree_move_to $::c1 1012
|
||||
btree_delete $::c1
|
||||
lrange [btree_cursor_info $::c1] 4 5
|
||||
} {458 2} ;# Coalesce with the whole before
|
||||
} {363 2} ;# Coalesce with the hole before
|
||||
btree_page_dump $::b1 1
|
||||
exit
|
||||
do_test btree-7.10 {
|
||||
btree_move_to $::c1 1008
|
||||
btree_delete $::c1
|
||||
@ -613,6 +623,7 @@ do_test btree-7.14 {
|
||||
do_test btree-7.15 {
|
||||
lindex [btree_pager_stats $::b1] 1
|
||||
} {1}
|
||||
} ;# endif
|
||||
|
||||
# Check to see that data on overflow pages work correctly.
|
||||
#
|
||||
@ -887,7 +898,7 @@ for {set i 1} {$i<=30} {incr i} {
|
||||
#
|
||||
catch {unset ::data}
|
||||
catch {unset ::key}
|
||||
for {set i 31} {$i<=999} {incr i} {
|
||||
for {set i 31} {$i<=2000} {incr i} {
|
||||
do_test btree-11.1.$i.1 {
|
||||
set key [format %03d $i]
|
||||
set ::data "*** $key *** $key *** $key *** $key ***"
|
||||
@ -918,20 +929,21 @@ do_test btree-11.3 {
|
||||
set ::c1 [btree_cursor $::b1 2 1]
|
||||
lindex [btree_pager_stats $::b1] 1
|
||||
} {2}
|
||||
#btree_page_dump $::b1 2
|
||||
|
||||
# Delete the dividers on the root page
|
||||
#
|
||||
#btree_page_dump $::b1 2
|
||||
do_test btree-11.4 {
|
||||
btree_move_to $::c1 551
|
||||
btree_move_to $::c1 1667
|
||||
btree_delete $::c1
|
||||
btree_move_to $::c1 551
|
||||
btree_move_to $::c1 1667
|
||||
set k [btree_key $::c1]
|
||||
if {$k==550} {
|
||||
if {$k==1666} {
|
||||
set k [btree_next $::c1]
|
||||
}
|
||||
btree_key $::c1
|
||||
} {552}
|
||||
} {1668}
|
||||
#btree_page_dump $::b1 2
|
||||
|
||||
# Change the data on an intermediate node such that the node becomes overfull
|
||||
# and has to split. We happen to know that intermediate nodes exist on
|
||||
|
Reference in New Issue
Block a user