/ Hex Artifact Content
Login

Artifact 91343fe6893b8bc35f496bbcecec095a803e5763:


0000: 2f 2a 0a 2a 2a 20 32 30 30 31 20 53 65 70 74 65  /*.** 2001 Septe
0010: 6d 62 65 72 20 31 35 0a 2a 2a 0a 2a 2a 20 54 68  mber 15.**.** Th
0020: 65 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69  e author disclai
0030: 6d 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20  ms copyright to 
0040: 74 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65  this source code
0050: 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a  .  In place of.*
0060: 2a 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65  * a legal notice
0070: 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c 65 73  , here is a bles
0080: 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d  sing:.**.**    M
0090: 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61  ay you do good a
00a0: 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20  nd not evil..** 
00b0: 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20     May you find 
00c0: 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20  forgiveness for 
00d0: 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72  yourself and for
00e0: 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20  give others..** 
00f0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
0100: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0110: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0120: 79 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a  you give..**.***
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0170: 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 54 68 69 73 20 68  ******.** This h
0180: 65 61 64 65 72 20 66 69 6c 65 20 64 65 66 69 6e  eader file defin
0190: 65 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65  es the interface
01a0: 20 74 68 61 74 20 74 68 65 20 73 71 6c 69 74 65   that the sqlite
01b0: 20 42 2d 54 72 65 65 20 66 69 6c 65 0a 2a 2a 20   B-Tree file.** 
01c0: 73 75 62 73 79 73 74 65 6d 2e 20 20 53 65 65 20  subsystem.  See 
01d0: 63 6f 6d 6d 65 6e 74 73 20 69 6e 20 74 68 65 20  comments in the 
01e0: 73 6f 75 72 63 65 20 63 6f 64 65 20 66 6f 72 20  source code for 
01f0: 61 20 64 65 74 61 69 6c 65 64 20 64 65 73 63 72  a detailed descr
0200: 69 70 74 69 6f 6e 0a 2a 2a 20 6f 66 20 77 68 61  iption.** of wha
0210: 74 20 65 61 63 68 20 69 6e 74 65 72 66 61 63 65  t each interface
0220: 20 72 6f 75 74 69 6e 65 20 64 6f 65 73 2e 0a 2a   routine does..*
0230: 2a 0a 2a 2a 20 40 28 23 29 20 24 49 64 3a 20 62  *.** @(#) $Id: b
0240: 74 72 65 65 2e 68 2c 76 20 31 2e 34 34 20 32 30  tree.h,v 1.44 20
0250: 30 34 2f 30 35 2f 31 30 20 32 33 3a 32 39 3a 35  04/05/10 23:29:5
0260: 30 20 64 72 68 20 45 78 70 20 24 0a 2a 2f 0a 23  0 drh Exp $.*/.#
0270: 69 66 6e 64 65 66 20 5f 42 54 52 45 45 5f 48 5f  ifndef _BTREE_H_
0280: 0a 23 64 65 66 69 6e 65 20 5f 42 54 52 45 45 5f  .#define _BTREE_
0290: 48 5f 0a 0a 2f 2a 20 54 4f 44 4f 3a 20 54 68 69  H_../* TODO: Thi
02a0: 73 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20  s definition is 
02b0: 6a 75 73 74 20 69 6e 63 6c 75 64 65 64 20 73 6f  just included so
02c0: 20 6f 74 68 65 72 20 6d 6f 64 75 6c 65 73 20 63   other modules c
02d0: 6f 6d 70 69 6c 65 2e 20 49 74 0a 2a 2a 20 6e 65  ompile. It.** ne
02e0: 65 64 73 20 74 6f 20 62 65 20 72 65 76 69 73 69  eds to be revisi
02f0: 74 65 64 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20  ted..*/.#define 
0300: 53 51 4c 49 54 45 5f 4e 5f 42 54 52 45 45 5f 4d  SQLITE_N_BTREE_M
0310: 45 54 41 20 31 30 0a 0a 2f 2a 0a 2a 2a 20 46 6f  ETA 10../*.** Fo
0320: 72 77 61 72 64 20 64 65 63 6c 61 72 61 74 69 6f  rward declaratio
0330: 6e 73 20 6f 66 20 73 74 72 75 63 74 75 72 65 0a  ns of structure.
0340: 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
0350: 74 20 42 74 72 65 65 20 42 74 72 65 65 3b 0a 74  t Btree Btree;.t
0360: 79 70 65 64 65 66 20 73 74 72 75 63 74 20 42 74  ypedef struct Bt
0370: 43 75 72 73 6f 72 20 42 74 43 75 72 73 6f 72 3b  Cursor BtCursor;
0380: 0a 0a 0a 69 6e 74 20 73 71 6c 69 74 65 33 42 74  ...int sqlite3Bt
0390: 72 65 65 4f 70 65 6e 28 63 6f 6e 73 74 20 63 68  reeOpen(const ch
03a0: 61 72 20 2a 7a 46 69 6c 65 6e 61 6d 65 2c 20 42  ar *zFilename, B
03b0: 74 72 65 65 20 2a 2a 2c 20 69 6e 74 20 6e 43 61  tree **, int nCa
03c0: 63 68 65 2c 20 69 6e 74 20 66 6c 61 67 73 29 3b  che, int flags);
03d0: 0a 0a 2f 2a 20 54 68 65 20 66 6c 61 67 73 20 70  ../* The flags p
03e0: 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69  arameter to sqli
03f0: 74 65 33 42 74 72 65 65 4f 70 65 6e 20 63 61 6e  te3BtreeOpen can
0400: 20 62 65 20 74 68 65 20 62 69 74 77 69 73 65 20   be the bitwise 
0410: 6f 72 20 6f 66 20 74 68 65 0a 2a 2a 20 66 6f 6c  or of the.** fol
0420: 6c 6f 77 69 6e 67 20 76 61 6c 75 65 73 2e 0a 2a  lowing values..*
0430: 2f 0a 23 64 65 66 69 6e 65 20 42 54 52 45 45 5f  /.#define BTREE_
0440: 4f 4d 49 54 5f 4a 4f 55 52 4e 41 4c 20 20 31 20  OMIT_JOURNAL  1 
0450: 20 2f 2a 20 44 6f 20 6e 6f 74 20 75 73 65 20 6a   /* Do not use j
0460: 6f 75 72 6e 61 6c 2e 20 20 4e 6f 20 61 72 67 75  ournal.  No argu
0470: 6d 65 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ment */.#define 
0480: 42 54 52 45 45 5f 4d 45 4d 4f 52 59 20 20 20 20  BTREE_MEMORY    
0490: 20 20 20 20 32 20 20 2f 2a 20 49 6e 2d 6d 65 6d      2  /* In-mem
04a0: 6f 72 79 20 44 42 2e 20 20 4e 6f 20 61 72 67 75  ory DB.  No argu
04b0: 6d 65 6e 74 20 2a 2f 0a 0a 69 6e 74 20 73 71 6c  ment */..int sql
04c0: 69 74 65 33 42 74 72 65 65 43 6c 6f 73 65 28 42  ite3BtreeClose(B
04d0: 74 72 65 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69  tree*);.int sqli
04e0: 74 65 33 42 74 72 65 65 53 65 74 43 61 63 68 65  te3BtreeSetCache
04f0: 53 69 7a 65 28 42 74 72 65 65 2a 2c 69 6e 74 29  Size(Btree*,int)
0500: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 42 74 72  ;.int sqlite3Btr
0510: 65 65 53 65 74 53 61 66 65 74 79 4c 65 76 65 6c  eeSetSafetyLevel
0520: 28 42 74 72 65 65 2a 2c 69 6e 74 29 3b 0a 69 6e  (Btree*,int);.in
0530: 74 20 73 71 6c 69 74 65 33 42 74 72 65 65 42 65  t sqlite3BtreeBe
0540: 67 69 6e 54 72 61 6e 73 28 42 74 72 65 65 2a 29  ginTrans(Btree*)
0550: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 42 74 72  ;.int sqlite3Btr
0560: 65 65 43 6f 6d 6d 69 74 28 42 74 72 65 65 2a 29  eeCommit(Btree*)
0570: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 42 74 72  ;.int sqlite3Btr
0580: 65 65 52 6f 6c 6c 62 61 63 6b 28 42 74 72 65 65  eeRollback(Btree
0590: 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 42  *);.int sqlite3B
05a0: 74 72 65 65 42 65 67 69 6e 53 74 6d 74 28 42 74  treeBeginStmt(Bt
05b0: 72 65 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74  ree*);.int sqlit
05c0: 65 33 42 74 72 65 65 43 6f 6d 6d 69 74 53 74 6d  e3BtreeCommitStm
05d0: 74 28 42 74 72 65 65 2a 29 3b 0a 69 6e 74 20 73  t(Btree*);.int s
05e0: 71 6c 69 74 65 33 42 74 72 65 65 52 6f 6c 6c 62  qlite3BtreeRollb
05f0: 61 63 6b 53 74 6d 74 28 42 74 72 65 65 2a 29 3b  ackStmt(Btree*);
0600: 0a 69 6e 74 20 73 71 6c 69 74 65 33 42 74 72 65  .int sqlite3Btre
0610: 65 43 72 65 61 74 65 54 61 62 6c 65 28 42 74 72  eCreateTable(Btr
0620: 65 65 2a 2c 20 69 6e 74 2a 2c 20 69 6e 74 20 66  ee*, int*, int f
0630: 6c 61 67 73 29 3b 0a 0a 63 6f 6e 73 74 20 63 68  lags);..const ch
0640: 61 72 20 2a 73 71 6c 69 74 65 33 42 74 72 65 65  ar *sqlite3Btree
0650: 47 65 74 46 69 6c 65 6e 61 6d 65 28 42 74 72 65  GetFilename(Btre
0660: 65 20 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  e *);.int sqlite
0670: 33 42 74 72 65 65 43 6f 70 79 46 69 6c 65 28 42  3BtreeCopyFile(B
0680: 74 72 65 65 20 2a 2c 20 42 74 72 65 65 20 2a 29  tree *, Btree *)
0690: 3b 0a 0a 2f 2a 20 54 68 65 20 66 6c 61 67 73 20  ;../* The flags 
06a0: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c  parameter to sql
06b0: 69 74 65 33 42 74 72 65 65 43 72 65 61 74 65 54  ite3BtreeCreateT
06c0: 61 62 6c 65 20 63 61 6e 20 62 65 20 74 68 65 20  able can be the 
06d0: 62 69 74 77 69 73 65 20 4f 52 0a 2a 2a 20 6f 66  bitwise OR.** of
06e0: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66   the following f
06f0: 6c 61 67 73 3a 0a 2a 2f 0a 23 64 65 66 69 6e 65  lags:.*/.#define
0700: 20 42 54 52 45 45 5f 49 4e 54 4b 45 59 20 20 20   BTREE_INTKEY   
0710: 20 20 31 20 20 20 20 20 20 2f 2a 20 54 61 62 6c    1      /* Tabl
0720: 65 20 68 61 73 20 6f 6e 6c 79 20 36 34 2d 62 69  e has only 64-bi
0730: 74 20 69 6e 74 65 67 65 72 20 6b 65 79 73 20 2a  t integer keys *
0740: 2f 0a 23 64 65 66 69 6e 65 20 42 54 52 45 45 5f  /.#define BTREE_
0750: 5a 45 52 4f 44 41 54 41 20 20 20 32 20 20 20 20  ZERODATA   2    
0760: 20 20 2f 2a 20 54 61 62 6c 65 20 68 61 73 20 6b    /* Table has k
0770: 65 79 73 20 6f 6e 6c 79 20 2d 20 6e 6f 20 64 61  eys only - no da
0780: 74 61 20 2a 2f 0a 0a 69 6e 74 20 73 71 6c 69 74  ta */..int sqlit
0790: 65 33 42 74 72 65 65 44 72 6f 70 54 61 62 6c 65  e3BtreeDropTable
07a0: 28 42 74 72 65 65 2a 2c 20 69 6e 74 29 3b 0a 69  (Btree*, int);.i
07b0: 6e 74 20 73 71 6c 69 74 65 33 42 74 72 65 65 43  nt sqlite3BtreeC
07c0: 6c 65 61 72 54 61 62 6c 65 28 42 74 72 65 65 2a  learTable(Btree*
07d0: 2c 20 69 6e 74 29 3b 0a 69 6e 74 20 73 71 6c 69  , int);.int sqli
07e0: 74 65 33 42 74 72 65 65 47 65 74 4d 65 74 61 28  te3BtreeGetMeta(
07f0: 42 74 72 65 65 2a 2c 20 69 6e 74 20 69 64 78 2c  Btree*, int idx,
0800: 20 75 33 32 20 2a 70 56 61 6c 75 65 29 3b 0a 69   u32 *pValue);.i
0810: 6e 74 20 73 71 6c 69 74 65 33 42 74 72 65 65 55  nt sqlite3BtreeU
0820: 70 64 61 74 65 4d 65 74 61 28 42 74 72 65 65 2a  pdateMeta(Btree*
0830: 2c 20 69 6e 74 20 69 64 78 2c 20 75 33 32 20 76  , int idx, u32 v
0840: 61 6c 75 65 29 3b 0a 0a 69 6e 74 20 73 71 6c 69  alue);..int sqli
0850: 74 65 33 42 74 72 65 65 43 75 72 73 6f 72 28 0a  te3BtreeCursor(.
0860: 20 20 42 74 72 65 65 2a 2c 20 20 20 20 20 20 20    Btree*,       
0870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0880: 20 20 20 20 20 20 20 2f 2a 20 42 54 72 65 65 20         /* BTree 
0890: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 61 62 6c 65  containing table
08a0: 20 74 6f 20 6f 70 65 6e 20 2a 2f 0a 20 20 69 6e   to open */.  in
08b0: 74 20 69 54 61 62 6c 65 2c 20 20 20 20 20 20 20  t iTable,       
08c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
08d0: 20 20 20 2f 2a 20 49 6e 64 65 78 20 6f 66 20 72     /* Index of r
08e0: 6f 6f 74 20 70 61 67 65 20 2a 2f 0a 20 20 69 6e  oot page */.  in
08f0: 74 20 77 72 46 6c 61 67 2c 20 20 20 20 20 20 20  t wrFlag,       
0900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0910: 20 20 20 2f 2a 20 31 20 66 6f 72 20 77 72 69 74     /* 1 for writ
0920: 69 6e 67 2e 20 20 30 20 66 6f 72 20 72 65 61 64  ing.  0 for read
0930: 2d 6f 6e 6c 79 20 2a 2f 0a 20 20 69 6e 74 28 2a  -only */.  int(*
0940: 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73  )(void*,int,cons
0950: 74 20 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73  t void*,int,cons
0960: 74 20 76 6f 69 64 2a 29 2c 20 20 2f 2a 20 4b 65  t void*),  /* Ke
0970: 79 20 63 6f 6d 70 61 72 69 73 6f 6e 20 66 75 6e  y comparison fun
0980: 63 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64 2a  ction */.  void*
0990: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
09a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
09b0: 2f 2a 20 46 69 72 73 74 20 61 72 67 75 6d 65 6e  /* First argumen
09c0: 74 20 74 6f 20 63 6f 6d 70 61 72 65 20 66 75 6e  t to compare fun
09d0: 63 74 69 6f 6e 20 2a 2f 0a 20 20 42 74 43 75 72  ction */.  BtCur
09e0: 73 6f 72 20 2a 2a 70 70 43 75 72 73 6f 72 20 20  sor **ppCursor  
09f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a00: 2f 2a 20 52 65 74 75 72 6e 65 64 20 63 75 72 73  /* Returned curs
0a10: 6f 72 20 2a 2f 0a 29 3b 0a 0a 69 6e 74 20 73 71  or */.);..int sq
0a20: 6c 69 74 65 33 42 74 72 65 65 43 6c 6f 73 65 43  lite3BtreeCloseC
0a30: 75 72 73 6f 72 28 42 74 43 75 72 73 6f 72 2a 29  ursor(BtCursor*)
0a40: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 42 74 72  ;.int sqlite3Btr
0a50: 65 65 4d 6f 76 65 74 6f 28 42 74 43 75 72 73 6f  eeMoveto(BtCurso
0a60: 72 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  r*, const void *
0a70: 70 4b 65 79 2c 20 75 36 34 20 6e 4b 65 79 2c 20  pKey, u64 nKey, 
0a80: 69 6e 74 20 2a 70 52 65 73 29 3b 0a 69 6e 74 20  int *pRes);.int 
0a90: 73 71 6c 69 74 65 33 42 74 72 65 65 44 65 6c 65  sqlite3BtreeDele
0aa0: 74 65 28 42 74 43 75 72 73 6f 72 2a 29 3b 0a 69  te(BtCursor*);.i
0ab0: 6e 74 20 73 71 6c 69 74 65 33 42 74 72 65 65 49  nt sqlite3BtreeI
0ac0: 6e 73 65 72 74 28 42 74 43 75 72 73 6f 72 2a 2c  nsert(BtCursor*,
0ad0: 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 4b 65   const void *pKe
0ae0: 79 2c 20 75 36 34 20 6e 4b 65 79 2c 0a 20 20 20  y, u64 nKey,.   
0af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
0b10: 6f 6e 73 74 20 76 6f 69 64 20 2a 70 44 61 74 61  onst void *pData
0b20: 2c 20 69 6e 74 20 6e 44 61 74 61 29 3b 0a 69 6e  , int nData);.in
0b30: 74 20 73 71 6c 69 74 65 33 42 74 72 65 65 46 69  t sqlite3BtreeFi
0b40: 72 73 74 28 42 74 43 75 72 73 6f 72 2a 2c 20 69  rst(BtCursor*, i
0b50: 6e 74 20 2a 70 52 65 73 29 3b 0a 69 6e 74 20 73  nt *pRes);.int s
0b60: 71 6c 69 74 65 33 42 74 72 65 65 4c 61 73 74 28  qlite3BtreeLast(
0b70: 42 74 43 75 72 73 6f 72 2a 2c 20 69 6e 74 20 2a  BtCursor*, int *
0b80: 70 52 65 73 29 3b 0a 69 6e 74 20 73 71 6c 69 74  pRes);.int sqlit
0b90: 65 33 42 74 72 65 65 4e 65 78 74 28 42 74 43 75  e3BtreeNext(BtCu
0ba0: 72 73 6f 72 2a 2c 20 69 6e 74 20 2a 70 52 65 73  rsor*, int *pRes
0bb0: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 42 74  );.int sqlite3Bt
0bc0: 72 65 65 45 6f 66 28 42 74 43 75 72 73 6f 72 2a  reeEof(BtCursor*
0bd0: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 42 74  );.int sqlite3Bt
0be0: 72 65 65 46 6c 61 67 73 28 42 74 43 75 72 73 6f  reeFlags(BtCurso
0bf0: 72 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  r*);.int sqlite3
0c00: 42 74 72 65 65 50 72 65 76 69 6f 75 73 28 42 74  BtreePrevious(Bt
0c10: 43 75 72 73 6f 72 2a 2c 20 69 6e 74 20 2a 70 52  Cursor*, int *pR
0c20: 65 73 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  es);.int sqlite3
0c30: 42 74 72 65 65 4b 65 79 53 69 7a 65 28 42 74 43  BtreeKeySize(BtC
0c40: 75 72 73 6f 72 2a 2c 20 75 36 34 20 2a 70 53 69  ursor*, u64 *pSi
0c50: 7a 65 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  ze);.int sqlite3
0c60: 42 74 72 65 65 4b 65 79 28 42 74 43 75 72 73 6f  BtreeKey(BtCurso
0c70: 72 2a 2c 20 75 33 32 20 6f 66 66 73 65 74 2c 20  r*, u32 offset, 
0c80: 75 33 32 20 61 6d 74 2c 20 76 6f 69 64 2a 29 3b  u32 amt, void*);
0c90: 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 42 74  .void *sqlite3Bt
0ca0: 72 65 65 4b 65 79 46 65 74 63 68 28 42 74 43 75  reeKeyFetch(BtCu
0cb0: 72 73 6f 72 2a 29 3b 0a 69 6e 74 20 73 71 6c 69  rsor*);.int sqli
0cc0: 74 65 33 42 74 72 65 65 44 61 74 61 53 69 7a 65  te3BtreeDataSize
0cd0: 28 42 74 43 75 72 73 6f 72 2a 2c 20 75 33 32 20  (BtCursor*, u32 
0ce0: 2a 70 53 69 7a 65 29 3b 0a 69 6e 74 20 73 71 6c  *pSize);.int sql
0cf0: 69 74 65 33 42 74 72 65 65 44 61 74 61 28 42 74  ite3BtreeData(Bt
0d00: 43 75 72 73 6f 72 2a 2c 20 75 33 32 20 6f 66 66  Cursor*, u32 off
0d10: 73 65 74 2c 20 75 33 32 20 61 6d 74 2c 20 76 6f  set, u32 amt, vo
0d20: 69 64 2a 29 3b 0a 0a 63 68 61 72 20 2a 73 71 6c  id*);..char *sql
0d30: 69 74 65 33 42 74 72 65 65 49 6e 74 65 67 72 69  ite3BtreeIntegri
0d40: 74 79 43 68 65 63 6b 28 42 74 72 65 65 2a 2c 20  tyCheck(Btree*, 
0d50: 69 6e 74 20 2a 61 52 6f 6f 74 2c 20 69 6e 74 20  int *aRoot, int 
0d60: 6e 52 6f 6f 74 29 3b 0a 73 74 72 75 63 74 20 50  nRoot);.struct P
0d70: 61 67 65 72 20 2a 73 71 6c 69 74 65 33 42 74 72  ager *sqlite3Btr
0d80: 65 65 50 61 67 65 72 28 42 74 72 65 65 2a 29 3b  eePager(Btree*);
0d90: 0a 0a 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  ...#ifdef SQLITE
0da0: 5f 54 45 53 54 0a 69 6e 74 20 73 71 6c 69 74 65  _TEST.int sqlite
0db0: 33 42 74 72 65 65 43 75 72 73 6f 72 49 6e 66 6f  3BtreeCursorInfo
0dc0: 28 42 74 43 75 72 73 6f 72 2a 2c 20 69 6e 74 2a  (BtCursor*, int*
0dd0: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 42  );.void sqlite3B
0de0: 74 72 65 65 43 75 72 73 6f 72 4c 69 73 74 28 42  treeCursorList(B
0df0: 74 72 65 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69  tree*);.int sqli
0e00: 74 65 33 42 74 72 65 65 50 61 67 65 44 75 6d 70  te3BtreePageDump
0e10: 28 42 74 72 65 65 2a 2c 20 69 6e 74 2c 20 69 6e  (Btree*, int, in
0e20: 74 20 72 65 63 75 72 73 69 76 65 29 3b 0a 23 65  t recursive);.#e
0e30: 6e 64 69 66 0a 0a 0a 23 65 6e 64 69 66 20 2f 2a  ndif...#endif /*
0e40: 20 5f 42 54 52 45 45 5f 48 5f 20 2a 2f 0a         _BTREE_H_ */.