CMGDK r49-rc2
|
00001 / * C o p y r i g h t ( C ) 2 0 0 0 M y S Q L A B 00002 00003 T h i s p r o g r a m i s f r e e s o f t w a r e ; y o u c a n r e d i s t r i b u t e i t a n d / o r m o d i f y 00004 00005 i t u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d b y 00006 00007 t h e F r e e S o f t w a r e F o u n d a t i o n ; v e r s i o n 2 o f t h e L i c e n s e . 00008 00009 T h i s p r o g r a m i s d i s t r i b u t e d i n t h e h o p e t h a t i t w i l l b e u s e f u l , 00010 00011 b u t W I T H O U T A N Y W A R R A N T Y ; w i t h o u t e v e n t h e i m p l i e d w a r r a n t y o f 00012 00013 M E R C H A N T A B I L I T Y o r F I T N E S S F O R A P A R T I C U L A R P U R P O S E . S e e t h e 00014 00015 G N U G e n e r a l P u b l i c L i c e n s e f o r m o r e d e t a i l s . 00016 00017 Y o u s h o u l d h a v e r e c e i v e d a c o p y o f t h e G N U G e n e r a l P u b l i c L i c e n s e 00018 00019 a l o n g w i t h t h i s p r o g r a m ; i f n o t , w r i t e t o t h e F r e e S o f t w a r e 00020 00021 F o u n d a t i o n , I n c . , 5 9 T e m p l e P l a c e , S u i t e 3 3 0 , B o s t o n , M A 0 2 1 1 1 - 1 3 0 7 U S A * / 00022 00023 / * T h i s f i l e i n c l u d e s c o n s t a n t s u s e d w i t h a l l d a t a b a s e s * / 00024 00025 # i f n d e f _ m y _ b a s e _ h 00026 00027 # d e f i n e _ m y _ b a s e _ h 00028 00029 # i f n d e f s t d i n / * I n c l u d e d f i r s t i n h a n d l e r * / 00030 00031 # d e f i n e C H S I Z E _ U S E D 00032 00033 # i n c l u d e < m y _ g l o b a l . h > 00034 00035 # i n c l u d e < m y _ d i r . h > / * T h i s i n c l u d e s t y p e s * / 00036 00037 # i n c l u d e < m y _ s y s . h > 00038 00039 # i n c l u d e < m _ s t r i n g . h > 00040 00041 # i n c l u d e < e r r n o . h > 00042 00043 # i f n d e f E O V E R F L O W 00044 00045 # d e f i n e E O V E R F L O W 8 4 00046 00047 # e n d i f 00048 00049 # i f ! d e f i n e d ( U S E _ M Y _ F U N C ) & & ! d e f i n e d ( T H R E A D ) 00050 00051 # i n c l u d e < m y _ n o s y s . h > / * F o r f a s t e r c o d e , a f t e r t e s t * / 00052 00053 # e n d i f / * U S E _ M Y _ F U N C * / 00054 00055 # e n d i f / * s t d i n * / 00056 00057 # i n c l u d e < m y _ l i s t . h > 00058 00059 / * T h e f o l l o w i n g i s b i t s i n t h e f l a g p a r a m e t e r t o h a _ o p e n ( ) * / 00060 00061 # d e f i n e H A _ O P E N _ A B O R T _ I F _ L O C K E D 0 / * d e f a u l t * / 00062 00063 # d e f i n e H A _ O P E N _ W A I T _ I F _ L O C K E D 1 00064 00065 # d e f i n e H A _ O P E N _ I G N O R E _ I F _ L O C K E D 2 00066 00067 # d e f i n e H A _ O P E N _ T M P _ T A B L E 4 / * T a b l e i s a t e m p t a b l e * / 00068 00069 # d e f i n e H A _ O P E N _ D E L A Y _ K E Y _ W R I T E 8 / * D o n ' t u p d a t e i n d e x * / 00070 00071 # d e f i n e H A _ O P E N _ A B O R T _ I F _ C R A S H E D 1 6 00072 00073 # d e f i n e H A _ O P E N _ F O R _ R E P A I R 3 2 / * o p e n e v e n i f c r a s h e d * / 00074 00075 # d e f i n e H A _ O P E N _ F R O M _ S Q L _ L A Y E R 6 4 00076 00077 # d e f i n e H A _ O P E N _ M M A P 1 2 8 / * o p e n m e m o r y m a p p e d * / 00078 00079 # d e f i n e H A _ O P E N _ C O P Y 2 5 6 / * O p e n c o p y ( f o r r e p a i r ) * / 00080 00081 / * I n t e r n a l t e m p t a b l e , u s e d f o r t e m p o r a r y r e s u l t s * / 00082 00083 # d e f i n e H A _ O P E N _ I N T E R N A L _ T A B L E 5 1 2 00084 00085 / * T h e f o l l o w i n g i s p a r a m e t e r t o h a _ r k e y ( ) h o w t o u s e k e y * / 00086 00087 / * 00088 00089 W e d e f i n e a c o m p l e t e - f i e l d p r e f i x o f a k e y v a l u e a s a p r e f i x w h e r e 00090 00091 t h e l a s t i n c l u d e d f i e l d i n t h e p r e f i x c o n t a i n s t h e f u l l f i e l d , n o t 00092 00093 j u s t s o m e b y t e s f r o m t h e s t a r t o f t h e f i e l d . A p a r t i a l - f i e l d p r e f i x 00094 00095 i s a l l o w e d t o c o n t a i n o n l y a f e w f i r s t b y t e s f r o m t h e l a s t i n c l u d e d 00096 00097 f i e l d . 00098 00099 B e l o w H A _ R E A D _ K E Y _ E X A C T , . . . , H A _ R E A D _ B E F O R E _ K E Y c a n t a k e a 00100 00101 c o m p l e t e - f i e l d p r e f i x o f a k e y v a l u e a s t h e s e a r c h 00102 00103 k e y . H A _ R E A D _ P R E F I X a n d H A _ R E A D _ P R E F I X _ L A S T c o u l d a l s o t a k e a 00104 00105 p a r t i a l - f i e l d p r e f i x , b u t c u r r e n t l y ( 4 . 0 . 1 0 ) t h e y a r e o n l y u s e d w i t h 00106 00107 c o m p l e t e - f i e l d p r e f i x e s . M y S Q L u s e s a p a d d i n g t r i c k t o i m p l e m e n t 00108 00109 L I K E ' a b c % ' q u e r i e s . 00110 00111 N O T E t h a t i n I n n o D B H A _ R E A D _ P R E F I X _ L A S T w i l l N O T w o r k w i t h a 00112 00113 p a r t i a l - f i e l d p r e f i x b e c a u s e I n n o D B c u r r e n t l y s t r i p s s p a c e s f r o m t h e 00114 00115 e n d o f v a r c h a r f i e l d s ! 00116 00117 * / 00118 00119 e n u m h a _ r k e y _ f u n c t i o n { 00120 00121 H A _ R E A D _ K E Y _ E X A C T , / * F i n d f i r s t r e c o r d e l s e e r r o r * / 00122 00123 H A _ R E A D _ K E Y _ O R _ N E X T , / * R e c o r d o r n e x t r e c o r d * / 00124 00125 H A _ R E A D _ K E Y _ O R _ P R E V , / * R e c o r d o r p r e v i o u s * / 00126 00127 H A _ R E A D _ A F T E R _ K E Y , / * F i n d n e x t r e c . a f t e r k e y - r e c o r d * / 00128 00129 H A _ R E A D _ B E F O R E _ K E Y , / * F i n d n e x t r e c . b e f o r e k e y - r e c o r d * / 00130 00131 H A _ R E A D _ P R E F I X , / * K e y w h i c h a s s a m e p r e f i x * / 00132 00133 H A _ R E A D _ P R E F I X _ L A S T , / * L a s t k e y w i t h t h e s a m e p r e f i x * / 00134 00135 H A _ R E A D _ P R E F I X _ L A S T _ O R _ P R E V , / * L a s t o r p r e v k e y w i t h t h e s a m e p r e f i x * / 00136 00137 H A _ R E A D _ M B R _ C O N T A I N , 00138 00139 H A _ R E A D _ M B R _ I N T E R S E C T , 00140 00141 H A _ R E A D _ M B R _ W I T H I N , 00142 00143 H A _ R E A D _ M B R _ D I S J O I N T , 00144 00145 H A _ R E A D _ M B R _ E Q U A L 00146 00147 } ; 00148 00149 / * K e y a l g o r i t h m t y p e s * / 00150 00151 e n u m h a _ k e y _ a l g { 00152 00153 H A _ K E Y _ A L G _ U N D E F = 0 , / * N o t s p e c i f i e d ( o l d f i l e ) * / 00154 00155 H A _ K E Y _ A L G _ B T R E E = 1 , / * B - t r e e , d e f a u l t o n e * / 00156 00157 H A _ K E Y _ A L G _ R T R E E = 2 , / * R - t r e e , f o r s p a t i a l s e a r c h e s * / 00158 00159 H A _ K E Y _ A L G _ H A S H = 3 , / * H A S H k e y s ( H E A P t a b l e s ) * / 00160 00161 H A _ K E Y _ A L G _ F U L L T E X T = 4 / * F U L L T E X T ( M y I S A M t a b l e s ) * / 00162 00163 } ; 00164 00165 / * I n d e x a n d t a b l e b u i l d m e t h o d s * / 00166 00167 e n u m h a _ b u i l d _ m e t h o d { 00168 00169 H A _ B U I L D _ D E F A U L T , 00170 00171 H A _ B U I L D _ O N L I N E , 00172 00173 H A _ B U I L D _ O F F L I N E 00174 00175 } ; 00176 00177 / * S t o r a g e m e d i a t y p e s * / 00178 00179 e n u m h a _ s t o r a g e _ m e d i a { 00180 00181 H A _ S M _ D E F A U L T = 0 , / * N o t s p e c i f i e d ( e n g i n e d e f a u l t ) * / 00182 00183 H A _ S M _ D I S K = 1 , / * D I S K s t o r a g e * / 00184 00185 H A _ S M _ M E M O R Y = 2 / * M A I N M E M O R Y s t o r a g e * / 00186 00187 } ; 00188 00189 / * T h e f o l l o w i n g i s p a r a m e t e r t o h a _ e x t r a ( ) * / 00190 00191 e n u m h a _ e x t r a _ f u n c t i o n { 00192 00193 H A _ E X T R A _ N O R M A L = 0 , / * O p t i m i z e f o r s p a c e ( d e f ) * / 00194 00195 H A _ E X T R A _ Q U I C K = 1 , / * O p t i m i z e f o r s p e e d * / 00196 00197 H A _ E X T R A _ N O T _ U S E D = 2 , 00198 00199 H A _ E X T R A _ C A C H E = 3 , / * C a c h e r e c o r d i n H A _ r r n d ( ) * / 00200 00201 H A _ E X T R A _ N O _ C A C H E = 4 , / * E n d c a c h i n g o f r e c o r d s ( d e f ) * / 00202 00203 H A _ E X T R A _ N O _ R E A D C H E C K = 5 , / * N o r e a d c h e c k o n u p d a t e * / 00204 00205 H A _ E X T R A _ R E A D C H E C K = 6 , / * U s e r e a d c h e c k ( d e f ) * / 00206 00207 H A _ E X T R A _ K E Y R E A D = 7 , / * R e a d o n l y k e y t o d a t a b a s e * / 00208 00209 H A _ E X T R A _ N O _ K E Y R E A D = 8 , / * N o r m a l r e a d o f r e c o r d s ( d e f ) * / 00210 00211 H A _ E X T R A _ N O _ U S E R _ C H A N G E = 9 , / * N o u s e r i s a l l o w e d t o w r i t e * / 00212 00213 H A _ E X T R A _ K E Y _ C A C H E = 1 0 , 00214 00215 H A _ E X T R A _ N O _ K E Y _ C A C H E = 1 1 , 00216 00217 H A _ E X T R A _ W A I T _ L O C K = 1 2 , / * W a i t u n t i l f i l e i s a v a l a b l y ( d e f ) * / 00218 00219 H A _ E X T R A _ N O _ W A I T _ L O C K = 1 3 , / * I f f i l e i s l o c k e d , r e t u r n q u i c k l y * / 00220 00221 H A _ E X T R A _ W R I T E _ C A C H E = 1 4 , / * U s e w r i t e c a c h e i n h a _ w r i t e ( ) * / 00222 00223 H A _ E X T R A _ F L U S H _ C A C H E = 1 5 , / * f l u s h w r i t e _ r e c o r d _ c a c h e * / 00224 00225 H A _ E X T R A _ N O _ K E Y S = 1 6 , / * R e m o v e a l l u p d a t e o f k e y s * / 00226 00227 H A _ E X T R A _ K E Y R E A D _ C H A N G E _ P O S = 1 7 , / * K e y r e a d , b u t c h a n g e p o s * / 00228 00229 / * x x x x c h k - r m u s t b e u s e d * / 00230 00231 H A _ E X T R A _ R E M E M B E R _ P O S = 1 8 , / * R e m e m b e r p o s f o r n e x t / p r e v * / 00232 00233 H A _ E X T R A _ R E S T O R E _ P O S = 1 9 , 00234 00235 H A _ E X T R A _ R E I N I T _ C A C H E = 2 0 , / * i n i t c a c h e f r o m c u r r e n t r e c o r d * / 00236 00237 H A _ E X T R A _ F O R C E _ R E O P E N = 2 1 , / * D a t a f i l e h a v e c h a n g e d o n d i s k * / 00238 00239 H A _ E X T R A _ F L U S H , / * F l u s h t a b l e s t o d i s k * / 00240 00241 H A _ E X T R A _ N O _ R O W S , / * D o n ' t w r i t e r o w s * / 00242 00243 H A _ E X T R A _ R E S E T _ S T A T E , / * R e s e t p o s i t i o n s * / 00244 00245 H A _ E X T R A _ I G N O R E _ D U P _ K E Y , / * D u p k e y s d o n ' t r o l l b a c k e v e r y t h i n g * / 00246 00247 H A _ E X T R A _ N O _ I G N O R E _ D U P _ K E Y , 00248 00249 H A _ E X T R A _ P R E P A R E _ F O R _ D R O P , 00250 00251 H A _ E X T R A _ P R E P A R E _ F O R _ U P D A T E , / * R e m o v e r e a d c a c h e i f p r o b l e m s * / 00252 00253 H A _ E X T R A _ P R E L O A D _ B U F F E R _ S I Z E , / * S e t b u f f e r s i z e f o r p r e l o a d i n g * / 00254 00255 / * 00256 00257 O n - t h e - f l y s w i t c h i n g b e t w e e n u n i q u e a n d n o n - u n i q u e k e y i n s e r t i n g . 00258 00259 * / 00260 00261 H A _ E X T R A _ C H A N G E _ K E Y _ T O _ U N I Q U E , 00262 00263 H A _ E X T R A _ C H A N G E _ K E Y _ T O _ D U P , 00264 00265 / * 00266 00267 W h e n u s i n g H A _ E X T R A _ K E Y R E A D , o v e r w r i t e o n l y k e y m e m b e r f i e l d s a n d k e e p 00268 00269 o t h e r f i e l d s i n t a c t . W h e n t h i s i s o f f ( b y d e f a u l t ) I n n o D B w i l l u s e m e m c p y 00270 00271 t o o v e r w r i t e e n t i r e r o w . 00272 00273 * / 00274 00275 H A _ E X T R A _ K E Y R E A D _ P R E S E R V E _ F I E L D S , 00276 00277 H A _ E X T R A _ M M A P , 00278 00279 / * 00280 00281 I g n o r e i f t h e a t u p l e i s n o t f o u n d , c o n t i n u e p r o c e s s i n g t h e 00282 00283 t r a n s a c t i o n a n d i g n o r e t h a t ' r o w ' . N e e d e d f o r i d e m p o t e n c y 00284 00285 h a n d l i n g o n t h e s l a v e 00286 00287 C u r r e n t l y o n l y u s e d b y N D B s t o r a g e e n g i n e . P a r t i t i o n h a n d l e r i g n o r e s f l a g . 00288 00289 * / 00290 00291 H A _ E X T R A _ I G N O R E _ N O _ K E Y , 00292 00293 H A _ E X T R A _ N O _ I G N O R E _ N O _ K E Y , 00294 00295 / * 00296 00297 M a r k t h e t a b l e a s a l o g t a b l e . F o r s o m e h a n d l e r s ( e . g . C S V ) t h i s r e s u l t s 00298 00299 i n a s p e c i a l l o c k i n g f o r t h e t a b l e . 00300 00301 * / 00302 00303 H A _ E X T R A _ M A R K _ A S _ L O G _ T A B L E , 00304 00305 / * 00306 00307 I n f o r m s h a n d l e r t h a t w r i t e _ r o w ( ) w h i c h t r i e s t o i n s e r t n e w r o w i n t o t h e 00308 00309 t a b l e a n d e n c o u n t e r s s o m e a l r e a d y e x i s t i n g r o w w i t h s a m e p r i m a r y / u n i q u e 00310 00311 k e y c a n r e p l a c e o l d r o w w i t h n e w r o w i n s t e a d o f r e p o r t i n g e r r o r ( b a s i c a l l y 00312 00313 i t i n f o r m s h a n d l e r t h a t w e d o R E P L A C E i n s t e a d o f s i m p l e I N S E R T ) . 00314 00315 O f f b y d e f a u l t . 00316 00317 * / 00318 00319 H A _ E X T R A _ W R I T E _ C A N _ R E P L A C E , 00320 00321 H A _ E X T R A _ W R I T E _ C A N N O T _ R E P L A C E , 00322 00323 / * 00324 00325 I n f o r m h a n d l e r t h a t d e l e t e _ r o w ( ) / u p d a t e _ r o w ( ) c a n n o t b a t c h d e l e t e s / u p d a t e s 00326 00327 a n d s h o u l d p e r f o r m t h e m i m m e d i a t e l y . T h i s m a y b e n e e d e d w h e n t a b l e h a s 00328 00329 A F T E R D E L E T E / U P D A T E t r i g g e r s w h i c h a c c e s s t o s u b j e c t t a b l e . 00330 00331 T h e s e f l a g s a r e r e s e t b y t h e h a n d l e r : : e x t r a ( H A _ E X T R A _ R E S E T ) c a l l . 00332 00333 * / 00334 00335 H A _ E X T R A _ D E L E T E _ C A N N O T _ B A T C H , 00336 00337 H A _ E X T R A _ U P D A T E _ C A N N O T _ B A T C H , 00338 00339 / * 00340 00341 I n f o r m h a n d l e r t h a t a n " I N S E R T . . . O N D U P L I C A T E K E Y U P D A T E " w i l l b e 00342 00343 e x e c u t e d . T h i s c o n d i t i o n i s u n s e t b y H A _ E X T R A _ N O _ I G N O R E _ D U P _ K E Y . 00344 00345 * / 00346 00347 H A _ E X T R A _ I N S E R T _ W I T H _ U P D A T E , 00348 00349 / * I n f o r m h a n d l e r t h a t w e w i l l d o a r e n a m e * / 00350 00351 H A _ E X T R A _ P R E P A R E _ F O R _ R E N A M E , 00352 00353 / * 00354 00355 S p e c i a l a c t i o n s f o r M E R G E t a b l e s . 00356 00357 * / 00358 00359 H A _ E X T R A _ A D D _ C H I L D R E N _ L I S T , 00360 00361 H A _ E X T R A _ A T T A C H _ C H I L D R E N , 00362 00363 H A _ E X T R A _ I S _ A T T A C H E D _ C H I L D R E N , 00364 00365 H A _ E X T R A _ D E T A C H _ C H I L D R E N , 00366 00367 H A _ E X T R A _ O R D E R B Y _ L I M I T , 00368 00369 H A _ E X T R A _ N O _ O R D E R B Y _ L I M I T , 00370 00371 / * I n f o r m h a n d l e r w e w i l l f o r c e a c l o s e a s p a r t o f f l u s h * / 00372 00373 H A _ E X T R A _ P R E P A R E _ F O R _ F O R C E D _ C L O S E , 00374 00375 H A _ E X T R A _ A L L O W _ L O G _ D E L E T E 00376 00377 } ; 00378 00379 / * C o m p a t i b l e o p t i o n , t o b e d e l e t e d i n 6 . 0 * / 00380 00381 # d e f i n e H A _ E X T R A _ P R E P A R E _ F O R _ D E L E T E H A _ E X T R A _ P R E P A R E _ F O R _ D R O P 00382 00383 / * T h e f o l l o w i n g i s p a r a m e t e r t o h a _ p a n i c ( ) * / 00384 00385 e n u m h a _ p a n i c _ f u n c t i o n { 00386 00387 H A _ P A N I C _ C L O S E , / * C l o s e a l l d a t a b a s e s * / 00388 00389 H A _ P A N I C _ W R I T E , / * U n l o c k a n d w r i t e s t a t u s * / 00390 00391 H A _ P A N I C _ R E A D / * L o c k a n d r e a d k e y i n f o * / 00392 00393 } ; 00394 00395 / * T h e f o l l o w i n g i s p a r a m e t e r t o h a _ c r e a t e ( ) ; k e y t y p e s * / 00396 00397 e n u m h a _ b a s e _ k e y t y p e { 00398 00399 H A _ K E Y T Y P E _ E N D = 0 , 00400 00401 H A _ K E Y T Y P E _ T E X T = 1 , / * K e y i s s o r t e d a s l e t t e r s * / 00402 00403 H A _ K E Y T Y P E _ B I N A R Y = 2 , / * K e y i s s o r t e d a s u n s i g n e d c h a r s * / 00404 00405 H A _ K E Y T Y P E _ S H O R T _ I N T = 3 , 00406 00407 H A _ K E Y T Y P E _ L O N G _ I N T = 4 , 00408 00409 H A _ K E Y T Y P E _ F L O A T = 5 , 00410 00411 H A _ K E Y T Y P E _ D O U B L E = 6 , 00412 00413 H A _ K E Y T Y P E _ N U M = 7 , / * N o t p a c k e d n u m w i t h p r e - s p a c e * / 00414 00415 H A _ K E Y T Y P E _ U S H O R T _ I N T = 8 , 00416 00417 H A _ K E Y T Y P E _ U L O N G _ I N T = 9 , 00418 00419 H A _ K E Y T Y P E _ L O N G L O N G = 1 0 , 00420 00421 H A _ K E Y T Y P E _ U L O N G L O N G = 1 1 , 00422 00423 H A _ K E Y T Y P E _ I N T 2 4 = 1 2 , 00424 00425 H A _ K E Y T Y P E _ U I N T 2 4 = 1 3 , 00426 00427 H A _ K E Y T Y P E _ I N T 8 = 1 4 , 00428 00429 / * V a r c h a r ( 0 - 2 5 5 b y t e s ) w i t h l e n g t h p a c k e d w i t h 1 b y t e * / 00430 00431 H A _ K E Y T Y P E _ V A R T E X T 1 = 1 5 , / * K e y i s s o r t e d a s l e t t e r s * / 00432 00433 H A _ K E Y T Y P E _ V A R B I N A R Y 1 = 1 6 , / * K e y i s s o r t e d a s u n s i g n e d c h a r s * / 00434 00435 / * V a r c h a r ( 0 - 6 5 5 3 5 b y t e s ) w i t h l e n g t h p a c k e d w i t h 2 b y t e s * / 00436 00437 H A _ K E Y T Y P E _ V A R T E X T 2 = 1 7 , / * K e y i s s o r t e d a s l e t t e r s * / 00438 00439 H A _ K E Y T Y P E _ V A R B I N A R Y 2 = 1 8 , / * K e y i s s o r t e d a s u n s i g n e d c h a r s * / 00440 00441 H A _ K E Y T Y P E _ B I T = 1 9 00442 00443 } ; 00444 00445 # d e f i n e H A _ M A X _ K E Y T Y P E 3 1 / * M u s t b e l o g 2 - 1 * / 00446 00447 / * 00448 00449 T h e s e f l a g s k a n b e O R : e d t o k e y - f l a g 00450 00451 N o t e t h a t t h e s e c a n o n l y b e u p t o 1 6 b i t s ! 00452 00453 * / 00454 00455 # d e f i n e H A _ N O S A M E 1 / * S e t i f n o t d u p p l i c a t e d r e c o r d s * / 00456 00457 # d e f i n e H A _ P A C K _ K E Y 2 / * P a c k s t r i n g k e y t o p r e v i o u s k e y * / 00458 00459 # d e f i n e H A _ A U T O _ K E Y 1 6 00460 00461 # d e f i n e H A _ B I N A R Y _ P A C K _ K E Y 3 2 / * P a c k i n g o f a l l k e y s t o p r e v k e y * / 00462 00463 # d e f i n e H A _ F U L L T E X T 1 2 8 / * F o r f u l l - t e x t s e a r c h * / 00464 00465 # d e f i n e H A _ U N I Q U E _ C H E C K 2 5 6 / * C h e c k t h e k e y f o r u n i q u e n e s s * / 00466 00467 # d e f i n e H A _ S P A T I A L 1 0 2 4 / * F o r s p a t i a l s e a r c h * / 00468 00469 # d e f i n e H A _ N U L L _ A R E _ E Q U A L 2 0 4 8 / * N U L L i n k e y a r e c m p a s e q u a l * / 00470 00471 # d e f i n e H A _ G E N E R A T E D _ K E Y 8 1 9 2 / * A u t o m a t i c l y g e n e r a t e d k e y * / 00472 00473 # d e f i n e H A _ R T R E E _ I N D E X 1 6 3 8 4 / * F o r R T R E E s e a r c h * / 00474 00475 / * T h e c o m b i n a t i o n o f t h e a b o v e c a n b e u s e d f o r k e y t y p e c o m p a r i s o n . * / 00476 00477 # d e f i n e H A _ K E Y F L A G _ M A S K ( H A _ N O S A M E | H A _ P A C K _ K E Y | H A _ A U T O _ K E Y | \ 00478 00479 H A _ B I N A R Y _ P A C K _ K E Y | H A _ F U L L T E X T | H A _ U N I Q U E _ C H E C K | \ 00480 00481 H A _ S P A T I A L | H A _ N U L L _ A R E _ E Q U A L | H A _ G E N E R A T E D _ K E Y | \ 00482 00483 H A _ R T R E E _ I N D E X ) 00484 00485 # d e f i n e H A _ K E Y _ H A S _ P A R T _ K E Y _ S E G 6 5 5 3 6 / * K e y c o n t a i n s p a r t i a l s e g m e n t s * / 00486 00487 / * A u t o m a t i c b i t s i n k e y - f l a g * / 00488 00489 # d e f i n e H A _ S P A C E _ P A C K _ U S E D 4 / * T e s t f o r i f S P A C E _ P A C K u s e d * / 00490 00491 # d e f i n e H A _ V A R _ L E N G T H _ K E Y 8 00492 00493 # d e f i n e H A _ N U L L _ P A R T _ K E Y 6 4 00494 00495 # d e f i n e H A _ U S E S _ C O M M E N T 4 0 9 6 00496 00497 # d e f i n e H A _ U S E S _ P A R S E R 1 6 3 8 4 / * F u l l t e x t i n d e x u s e s [ p r e ] p a r s e r * / 00498 00499 # d e f i n e H A _ U S E S _ B L O C K _ S I Z E ( ( u i n t ) 3 2 7 6 8 ) 00500 00501 # d e f i n e H A _ S O R T _ A L L O W S _ S A M E 5 1 2 / * I n t e r n b i t w h e n s o r t i n g r e c o r d s * / 00502 00503 # i f M Y S Q L _ V E R S I O N _ I D < 0 x 5 0 2 0 0 00504 00505 / * 00506 00507 K e y h a s a p a r t t h a t c a n h a v e e n d s p a c e . I f t h i s i s a n u n i q u e k e y 00508 00509 w e h a v e t o h a n d l e i t d i f f e r e n t l y f r o m o t h e r u n i q u e k e y s a s w e c a n f i n d 00510 00511 m a n y m a t c h i n g r o w s f o r o n e k e y ( b e c a u s e e n d s p a c e a r e n o t c o m p a r e d ) 00512 00513 * / 00514 00515 # d e f i n e H A _ E N D _ S P A C E _ K E Y 0 / * w a s : 4 0 9 6 * / 00516 00517 # e l s e 00518 00519 # e r r o r H A _ E N D _ S P A C E _ K E Y i s o b s o l e t e , p l e a s e r e m o v e i t 00520 00521 # e n d i f 00522 00523 00524 00525 / * T h e s e f l a g s c a n b e a d d e d t o k e y - s e g - f l a g * / 00526 00527 # d e f i n e H A _ S P A C E _ P A C K 1 / * P a c k s p a c e i n k e y - s e g * / 00528 00529 # d e f i n e H A _ P A R T _ K E Y _ S E G 4 / * U s e d b y M y S Q L f o r p a r t - k e y - c o l s * / 00530 00531 # d e f i n e H A _ V A R _ L E N G T H _ P A R T 8 00532 00533 # d e f i n e H A _ N U L L _ P A R T 1 6 00534 00535 # d e f i n e H A _ B L O B _ P A R T 3 2 00536 00537 # d e f i n e H A _ S W A P _ K E Y 6 4 00538 00539 # d e f i n e H A _ R E V E R S E _ S O R T 1 2 8 / * S o r t k e y i n r e v e r s e o r d e r * / 00540 00541 # d e f i n e H A _ N O _ S O R T 2 5 6 / * d o n o t b o t h e r s o r t i n g o n t h i s k e y s e g * / 00542 00543 / * 00544 00545 E n d s p a c e i n u n i q u e / v a r c h a r a r e c o n s i d e r e d e q u a l . ( L i k e ' a ' a n d ' a ' ) 00546 00547 O n l y n e e d e d f o r i n t e r n a l t e m p o r a r y t a b l e s . 00548 00549 * / 00550 00551 # d e f i n e H A _ E N D _ S P A C E _ A R E _ E Q U A L 5 1 2 00552 00553 # d e f i n e H A _ B I T _ P A R T 1 0 2 4 00554 00555 / * o p t i o n b i t s f o r d a t a b a s e * / 00556 00557 # d e f i n e H A _ O P T I O N _ P A C K _ R E C O R D 1 00558 00559 # d e f i n e H A _ O P T I O N _ P A C K _ K E Y S 2 00560 00561 # d e f i n e H A _ O P T I O N _ C O M P R E S S _ R E C O R D 4 00562 00563 # d e f i n e H A _ O P T I O N _ L O N G _ B L O B _ P T R 8 / * n e w I S A M f o r m a t * / 00564 00565 # d e f i n e H A _ O P T I O N _ T M P _ T A B L E 1 6 00566 00567 # d e f i n e H A _ O P T I O N _ C H E C K S U M 3 2 00568 00569 # d e f i n e H A _ O P T I O N _ D E L A Y _ K E Y _ W R I T E 6 4 00570 00571 # d e f i n e H A _ O P T I O N _ N O _ P A C K _ K E Y S 1 2 8 / * R e s e r v e d f o r M y S Q L * / 00572 00573 # d e f i n e H A _ O P T I O N _ C R E A T E _ F R O M _ E N G I N E 2 5 6 00574 00575 # d e f i n e H A _ O P T I O N _ R E L I E S _ O N _ S Q L _ L A Y E R 5 1 2 00576 00577 # d e f i n e H A _ O P T I O N _ N U L L _ F I E L D S 1 0 2 4 00578 00579 # d e f i n e H A _ O P T I O N _ P A G E _ C H E C K S U M 2 0 4 8 00580 00581 # d e f i n e H A _ O P T I O N _ T E M P _ C O M P R E S S _ R E C O R D ( 1 L < < 1 5 ) / * s e t b y i s a m c h k * / 00582 00583 # d e f i n e H A _ O P T I O N _ R E A D _ O N L Y _ D A T A ( 1 L < < 1 6 ) / * S e t b y i s a m c h k * / 00584 00585 # d e f i n e H A _ O P T I O N _ N O _ C H E C K S U M ( 1 L < < 1 7 ) 00586 00587 # d e f i n e H A _ O P T I O N _ N O _ D E L A Y _ K E Y _ W R I T E ( 1 L < < 1 8 ) 00588 00589 / * B i t s i n f l a g t o c r e a t e ( ) * / 00590 00591 # d e f i n e H A _ D O N T _ T O U C H _ D A T A 1 / * D o n ' t e m p t y d a t a f i l e ( i s a m c h k ) * / 00592 00593 # d e f i n e H A _ P A C K _ R E C O R D 2 / * R e q u e s t p a c k e d r e c o r d f o r m a t * / 00594 00595 # d e f i n e H A _ C R E A T E _ T M P _ T A B L E 4 00596 00597 # d e f i n e H A _ C R E A T E _ C H E C K S U M 8 00598 00599 # d e f i n e H A _ C R E A T E _ K E E P _ F I L E S 1 6 / * d o n ' t o v e r w r i t e . M Y D a n d M Y I * / 00600 00601 # d e f i n e H A _ C R E A T E _ P A G E _ C H E C K S U M 3 2 00602 00603 # d e f i n e H A _ C R E A T E _ D E L A Y _ K E Y _ W R I T E 6 4 00604 00605 # d e f i n e H A _ C R E A T E _ R E L I E S _ O N _ S Q L _ L A Y E R 1 2 8 00606 00607 / * 00608 00609 T h e f o l l o w i n g f l a g s ( O R - e d ) a r e p a s s e d t o h a n d l e r : : i n f o ( ) m e t h o d . 00610 00611 T h e m e t h o d c o p i e s m i s c h a n d l e r i n f o r m a t i o n o u t o f t h e s t o r a g e e n g i n e 00612 00613 t o d a t a s t r u c t u r e s a c c e s s i b l e f r o m M y S Q L 00614 00615 S a m e f l a g s a r e a l s o p a s s e d d o w n t o m i _ s t a t u s , m y r g _ s t a t u s , e t c . 00616 00617 * / 00618 00619 / * t h i s o n e i s n o t u s e d * / 00620 00621 # d e f i n e H A _ S T A T U S _ P O S 1 00622 00623 / * 00624 00625 a s s u m i n g t h e t a b l e k e e p s s h a r e d a c t u a l c o p y o f t h e ' i n f o ' a n d 00626 00627 l o c a l , p o s s i b l y o u t d a t e d c o p y , t h e f o l l o w i n g f l a g m e a n s t h a t 00628 00629 i t s h o u l d n o t t r y t o g e t t h e a c t u a l d a t a ( l o c k i n g t h e s h a r e d s t r u c t u r e ) 00630 00631 s l i g h t l y o u t d a t e d v e r s i o n w i l l s u f f i c e 00632 00633 * / 00634 00635 # d e f i n e H A _ S T A T U S _ N O _ L O C K 2 00636 00637 / * u p d a t e t h e t i m e o f t h e l a s t m o d i f i c a t i o n ( i n h a n d l e r : : u p d a t e _ t i m e ) * / 00638 00639 # d e f i n e H A _ S T A T U S _ T I M E 4 00640 00641 / * 00642 00643 u p d a t e t h e ' c o n s t a n t ' p a r t o f t h e i n f o : 00644 00645 h a n d l e r : : m a x _ d a t a _ f i l e _ l e n g t h , m a x _ i n d e x _ f i l e _ l e n g t h , c r e a t e _ t i m e 00646 00647 s o r t k e y , r e f _ l e n g t h , b l o c k _ s i z e , d a t a _ f i l e _ n a m e , i n d e x _ f i l e _ n a m e . 00648 00649 h a n d l e r : : t a b l e - > s - > k e y s _ i n _ u s e , k e y s _ f o r _ k e y r e a d , r e c _ p e r _ k e y 00650 00651 * / 00652 00653 # d e f i n e H A _ S T A T U S _ C O N S T 8 00654 00655 / * 00656 00657 u p d a t e t h e ' v a r i a b l e ' p a r t o f t h e i n f o : 00658 00659 h a n d l e r : : r e c o r d s , d e l e t e d , d a t a _ f i l e _ l e n g t h , i n d e x _ f i l e _ l e n g t h , 00660 00661 d e l e t e _ l e n g t h , c h e c k _ t i m e , m e a n _ r e c _ l e n g t h 00662 00663 * / 00664 00665 # d e f i n e H A _ S T A T U S _ V A R I A B L E 1 6 00666 00667 / * 00668 00669 g e t t h e i n f o r m a t i o n a b o u t t h e k e y t h a t c a u s e d l a s t d u p l i c a t e v a l u e e r r o r 00670 00671 u p d a t e h a n d l e r : : e r r k e y a n d h a n d l e r : : d u p p _ r e f 00672 00673 s e e h a n d l e r : : g e t _ d u p _ k e y ( ) 00674 00675 * / 00676 00677 # d e f i n e H A _ S T A T U S _ E R R K E Y 3 2 00678 00679 / * 00680 00681 u p d a t e h a n d l e r : : a u t o _ i n c r e m e n t _ v a l u e 00682 00683 * / 00684 00685 # d e f i n e H A _ S T A T U S _ A U T O 6 4 00686 00687 / * 00688 00689 E r r o r c o d e s g i v e n b y h a n d l e r f u n c t i o n s 00690 00691 o p t _ s u m _ q u e r y ( ) a s s u m e s t h e s e c o d e s a r e > 1 00692 00693 D o n o t a d d e r r o r n u m b e r s b e f o r e H A _ E R R _ F I R S T . 00694 00695 I f n e c e s s a r y t o a d d l o w e r n u m b e r s , c h a n g e H A _ E R R _ F I R S T a c c o r d i n g l y . 00696 00697 * / 00698 00699 # d e f i n e H A _ E R R _ F I R S T 1 2 0 / * C o p y o f f i r s t e r r o r n r . * / 00700 00701 # d e f i n e H A _ E R R _ K E Y _ N O T _ F O U N D 1 2 0 / * D i d n ' t f i n d k e y o n r e a d o r u p d a t e * / 00702 00703 # d e f i n e H A _ E R R _ F O U N D _ D U P P _ K E Y 1 2 1 / * D u p p l i c a t e k e y o n w r i t e * / 00704 00705 # d e f i n e H A _ E R R _ I N T E R N A L _ E R R O R 1 2 2 / * I n t e r n a l e r r o r * / 00706 00707 # d e f i n e H A _ E R R _ R E C O R D _ C H A N G E D 1 2 3 / * U p p d a t e w i t h i s r e c o v e r a b l e * / 00708 00709 # d e f i n e H A _ E R R _ W R O N G _ I N D E X 1 2 4 / * W r o n g i n d e x g i v e n t o f u n c t i o n * / 00710 00711 # d e f i n e H A _ E R R _ C R A S H E D 1 2 6 / * I n d e x f i l e i s c r a s h e d * / 00712 00713 # d e f i n e H A _ E R R _ W R O N G _ I N _ R E C O R D 1 2 7 / * R e c o r d - f i l e i s c r a s h e d * / 00714 00715 # d e f i n e H A _ E R R _ O U T _ O F _ M E M 1 2 8 / * R e c o r d - f i l e i s c r a s h e d * / 00716 00717 # d e f i n e H A _ E R R _ N O T _ A _ T A B L E 1 3 0 / * n o t a M Y I f i l e - n o s i g n a t u r e * / 00718 00719 # d e f i n e H A _ E R R _ W R O N G _ C O M M A N D 1 3 1 / * C o m m a n d n o t s u p p o r t e d * / 00720 00721 # d e f i n e H A _ E R R _ O L D _ F I L E 1 3 2 / * o l d d a t a b a s f i l e * / 00722 00723 # d e f i n e H A _ E R R _ N O _ A C T I V E _ R E C O R D 1 3 3 / * N o r e c o r d r e a d i n u p d a t e ( ) * / 00724 00725 # d e f i n e H A _ E R R _ R E C O R D _ D E L E T E D 1 3 4 / * A r e c o r d i s n o t t h e r e * / 00726 00727 # d e f i n e H A _ E R R _ R E C O R D _ F I L E _ F U L L 1 3 5 / * N o m o r e r o o m i n f i l e * / 00728 00729 # d e f i n e H A _ E R R _ I N D E X _ F I L E _ F U L L 1 3 6 / * N o m o r e r o o m i n f i l e * / 00730 00731 # d e f i n e H A _ E R R _ E N D _ O F _ F I L E 1 3 7 / * e n d i n n e x t / p r e v / f i r s t / l a s t * / 00732 00733 # d e f i n e H A _ E R R _ U N S U P P O R T E D 1 3 8 / * u n s u p p o r t e d e x t e n s i o n u s e d * / 00734 00735 # d e f i n e H A _ E R R _ T O _ B I G _ R O W 1 3 9 / * T o o b i g r o w * / 00736 00737 # d e f i n e H A _ W R O N G _ C R E A T E _ O P T I O N 1 4 0 / * W r o n g c r e a t e o p t i o n * / 00738 00739 # d e f i n e H A _ E R R _ F O U N D _ D U P P _ U N I Q U E 1 4 1 / * D u p p l i c a t e u n i q u e o n w r i t e * / 00740 00741 # d e f i n e H A _ E R R _ U N K N O W N _ C H A R S E T 1 4 2 / * C a n ' t o p e n c h a r s e t * / 00742 00743 # d e f i n e H A _ E R R _ W R O N G _ M R G _ T A B L E _ D E F 1 4 3 / * c o n f l i c t i n g t a b l e s i n M E R G E * / 00744 00745 # d e f i n e H A _ E R R _ C R A S H E D _ O N _ R E P A I R 1 4 4 / * L a s t ( a u t o m a t i c ? ) r e p a i r f a i l e d * / 00746 00747 # d e f i n e H A _ E R R _ C R A S H E D _ O N _ U S A G E 1 4 5 / * T a b l e m u s t b e r e p a i r e d * / 00748 00749 # d e f i n e H A _ E R R _ L O C K _ W A I T _ T I M E O U T 1 4 6 00750 00751 # d e f i n e H A _ E R R _ L O C K _ T A B L E _ F U L L 1 4 7 00752 00753 # d e f i n e H A _ E R R _ R E A D _ O N L Y _ T R A N S A C T I O N 1 4 8 / * U p d a t e s n o t a l l o w e d * / 00754 00755 # d e f i n e H A _ E R R _ L O C K _ D E A D L O C K 1 4 9 00756 00757 # d e f i n e H A _ E R R _ C A N N O T _ A D D _ F O R E I G N 1 5 0 / * C a n n o t a d d a f o r e i g n k e y c o n s t r . * / 00758 00759 # d e f i n e H A _ E R R _ N O _ R E F E R E N C E D _ R O W 1 5 1 / * C a n n o t a d d a c h i l d r o w * / 00760 00761 # d e f i n e H A _ E R R _ R O W _ I S _ R E F E R E N C E D 1 5 2 / * C a n n o t d e l e t e a p a r e n t r o w * / 00762 00763 # d e f i n e H A _ E R R _ N O _ S A V E P O I N T 1 5 3 / * N o s a v e p o i n t w i t h t h a t n a m e * / 00764 00765 # d e f i n e H A _ E R R _ N O N _ U N I Q U E _ B L O C K _ S I Z E 1 5 4 / * N o n u n i q u e k e y b l o c k s i z e * / 00766 00767 # d e f i n e H A _ E R R _ N O _ S U C H _ T A B L E 1 5 5 / * T h e t a b l e d o e s n o t e x i s t i n e n g i n e * / 00768 00769 # d e f i n e H A _ E R R _ T A B L E _ E X I S T 1 5 6 / * T h e t a b l e e x i s t e d i n s t o r a g e e n g i n e * / 00770 00771 # d e f i n e H A _ E R R _ N O _ C O N N E C T I O N 1 5 7 / * C o u l d n o t c o n n e c t t o s t o r a g e e n g i n e * / 00772 00773 / * N U L L s a r e n o t s u p p o r t e d i n s p a t i a l i n d e x * / 00774 00775 # d e f i n e H A _ E R R _ N U L L _ I N _ S P A T I A L 1 5 8 00776 00777 # d e f i n e H A _ E R R _ T A B L E _ D E F _ C H A N G E D 1 5 9 / * T h e t a b l e c h a n g e d i n s t o r a g e e n g i n e * / 00778 00779 / * T h e r e ' s n o p a r t i t i o n i n t a b l e f o r g i v e n v a l u e * / 00780 00781 # d e f i n e H A _ E R R _ N O _ P A R T I T I O N _ F O U N D 1 6 0 00782 00783 # d e f i n e H A _ E R R _ R B R _ L O G G I N G _ F A I L E D 1 6 1 / * R o w - b a s e d b i n l o g g i n g o f r o w f a i l e d * / 00784 00785 # d e f i n e H A _ E R R _ D R O P _ I N D E X _ F K 1 6 2 / * I n d e x n e e d e d i n f o r e i g n k e y c o n s t r * / 00786 00787 / * 00788 00789 U p h o l d i n g f o r e i g n k e y c o n s t r a i n t s w o u l d l e a d t o a d u p l i c a t e k e y e r r o r 00790 00791 i n s o m e o t h e r t a b l e . 00792 00793 * / 00794 00795 # d e f i n e H A _ E R R _ F O R E I G N _ D U P L I C A T E _ K E Y 1 6 3 00796 00797 / * T h e t a b l e c h a n g e d i n s t o r a g e e n g i n e * / 00798 00799 # d e f i n e H A _ E R R _ T A B L E _ N E E D S _ U P G R A D E 1 6 4 00800 00801 # d e f i n e H A _ E R R _ T A B L E _ R E A D O N L Y 1 6 5 / * T h e t a b l e i s n o t w r i t a b l e * / 00802 00803 # d e f i n e H A _ E R R _ A U T O I N C _ R E A D _ F A I L E D 1 6 6 / * F a i l e d t o g e t n e x t a u t o i n c v a l u e * / 00804 00805 # d e f i n e H A _ E R R _ A U T O I N C _ E R A N G E 1 6 7 / * F a i l e d t o s e t r o w a u t o i n c v a l u e * / 00806 00807 # d e f i n e H A _ E R R _ G E N E R I C 1 6 8 / * G e n e r i c e r r o r * / 00808 00809 / * r o w n o t a c t u a l l y u p d a t e d : n e w v a l u e s s a m e a s t h e o l d v a l u e s * / 00810 00811 # d e f i n e H A _ E R R _ R E C O R D _ I S _ T H E _ S A M E 1 6 9 00812 00813 / * I t i s n o t p o s s i b l e t o l o g t h i s s t a t e m e n t * / 00814 00815 # d e f i n e H A _ E R R _ L O G G I N G _ I M P O S S I B L E 1 7 0 00816 00817 # d e f i n e H A _ E R R _ T A B L E S P A C E _ E X I S T 1 7 1 00818 00819 / * T h e e v e n t w a s c o r r u p t , l e a d i n g t o i l l e g a l d a t a b e i n g r e a d * / 00820 00821 # d e f i n e H A _ E R R _ C O R R U P T _ E V E N T 1 7 2 00822 00823 # d e f i n e H A _ E R R _ N E W _ F I L E 1 7 3 / * N e w f i l e f o r m a t * / 00824 00825 / * T h e e v e n t c o u l d n o t b e p r o c e s s e d n o o t h e r h a n d l e r e r r o r h a p p e n e d * / 00826 00827 # d e f i n e H A _ E R R _ R O W S _ E V E N T _ A P P L Y 1 7 4 00828 00829 # d e f i n e H A _ E R R _ I N I T I A L I Z A T I O N 1 7 5 / * E r r o r d u r i n g i n i t i a l i z a t i o n * / 00830 00831 # d e f i n e H A _ E R R _ F I L E _ T O O _ S H O R T 1 7 6 / * F i l e t o o s h o r t * / 00832 00833 # d e f i n e H A _ E R R _ W R O N G _ C R C 1 7 7 / * W r o n g C R C o n p a g e * / 00834 00835 # d e f i n e H A _ E R R _ L O C K _ O R _ A C T I V E _ T R A N S A C T I O N 1 7 8 00836 00837 # d e f i n e H A _ E R R _ N O _ S U C H _ T A B L E S P A C E 1 7 9 00838 00839 # d e f i n e H A _ E R R _ T A B L E S P A C E _ N O T _ E M P T Y 1 8 0 00840 00841 # d e f i n e H A _ E R R _ T A B L E S P A C E _ D A T A F I L E _ E X I S T 1 8 1 00842 00843 # d e f i n e H A _ E R R _ R O W _ N O T _ V I S I B L E 1 8 2 00844 00845 # d e f i n e H A _ E R R _ L A S T 1 8 2 / * C o p y o f l a s t e r r o r n r * / 00846 00847 / * N u m b e r o f d i f f e r e n t e r r o r s * / 00848 00849 # d e f i n e H A _ E R R _ E R R O R S ( H A _ E R R _ L A S T - H A _ E R R _ F I R S T + 1 ) 00850 00851 / * O t h e r c o n s t a n t s * / 00852 00853 # d e f i n e H A _ N A M E L E N 6 4 / * M a x l e n g t h o f s a v e d f i l e n a m e * / 00854 00855 # d e f i n e N O _ S U C H _ K E Y ( ~ ( u i n t ) 0 ) / * u s e d a s a k e y n o . * / 00856 00857 t y p e d e f u l o n g k e y _ p a r t _ m a p ; 00858 00859 # d e f i n e H A _ W H O L E _ K E Y ( ~ ( k e y _ p a r t _ m a p ) 0 ) 00860 00861 / * I n t e r n c o n s t a n t s i n d a t a b a s e s * / 00862 00863 / * b i t s i n _ s e a r c h * / 00864 00865 # d e f i n e S E A R C H _ F I N D 1 00866 00867 # d e f i n e S E A R C H _ N O _ F I N D 2 00868 00869 # d e f i n e S E A R C H _ S A M E 4 00870 00871 # d e f i n e S E A R C H _ B I G G E R 8 00872 00873 # d e f i n e S E A R C H _ S M A L L E R 1 6 00874 00875 # d e f i n e S E A R C H _ S A V E _ B U F F 3 2 00876 00877 # d e f i n e S E A R C H _ U P D A T E 6 4 00878 00879 # d e f i n e S E A R C H _ P R E F I X 1 2 8 00880 00881 # d e f i n e S E A R C H _ L A S T 2 5 6 00882 00883 # d e f i n e M B R _ C O N T A I N 5 1 2 00884 00885 # d e f i n e M B R _ I N T E R S E C T 1 0 2 4 00886 00887 # d e f i n e M B R _ W I T H I N 2 0 4 8 00888 00889 # d e f i n e M B R _ D I S J O I N T 4 0 9 6 00890 00891 # d e f i n e M B R _ E Q U A L 8 1 9 2 00892 00893 # d e f i n e M B R _ D A T A 1 6 3 8 4 00894 00895 # d e f i n e S E A R C H _ N U L L _ A R E _ E Q U A L 3 2 7 6 8 / * N U L L i n k e y s a r e e q u a l * / 00896 00897 # d e f i n e S E A R C H _ N U L L _ A R E _ N O T _ E Q U A L 6 5 5 3 6 / * N U L L i n k e y s a r e n o t e q u a l * / 00898 00899 / * U s e t h i s w h e n i n s e r t i n g a k e y i n p o s i t i o n o r d e r * / 00900 00901 # d e f i n e S E A R C H _ I N S E R T S E A R C H _ N U L L _ A R E _ N O T _ E Q U A L * 2 00902 00903 / * O n l y p a r t o f t h e k e y i s s p e c i f i e d w h i l e r e a d i n g * / 00904 00905 # d e f i n e S E A R C H _ P A R T _ K E Y S E A R C H _ I N S E R T * 2 00906 00907 / * U s e d w h e n u s e r k e y ( k e y 2 ) c o n t a i n s t r a n s a c t i o n i d ' s * / 00908 00909 # d e f i n e S E A R C H _ U S E R _ K E Y _ H A S _ T R A N S I D S E A R C H _ P A R T _ K E Y * 2 00910 00911 / * U s e d w h e n p a g e k e y ( k e y 1 ) c o n t a i n s t r a n s a c t i o n i d ' s * / 00912 00913 # d e f i n e S E A R C H _ P A G E _ K E Y _ H A S _ T R A N S I D S E A R C H _ U S E R _ K E Y _ H A S _ T R A N S I D * 2 00914 00915 / * b i t s i n o p t _ f l a g * / 00916 00917 # d e f i n e Q U I C K _ U S E D 1 00918 00919 # d e f i n e R E A D _ C A C H E _ U S E D 2 00920 00921 # d e f i n e R E A D _ C H E C K _ U S E D 4 00922 00923 # d e f i n e K E Y _ R E A D _ U S E D 8 00924 00925 # d e f i n e W R I T E _ C A C H E _ U S E D 1 6 00926 00927 # d e f i n e O P T _ N O _ R O W S 3 2 00928 00929 / * b i t s i n u p d a t e * / 00930 00931 # d e f i n e H A _ S T A T E _ C H A N G E D 1 / * D a t a b a s e h a s c h a n g e d * / 00932 00933 # d e f i n e H A _ S T A T E _ A K T I V 2 / * H a s a c u r r e n t r e c o r d * / 00934 00935 # d e f i n e H A _ S T A T E _ W R I T T E N 4 / * R e c o r d i s w r i t t e n * / 00936 00937 # d e f i n e H A _ S T A T E _ D E L E T E D 8 00938 00939 # d e f i n e H A _ S T A T E _ N E X T _ F O U N D 1 6 / * N e x t f o u n d r e c o r d ( r e c o r d b e f o r e ) * / 00940 00941 # d e f i n e H A _ S T A T E _ P R E V _ F O U N D 3 2 / * P r e v f o u n d r e c o r d ( r e c o r d a f t e r ) * / 00942 00943 # d e f i n e H A _ S T A T E _ N O _ K E Y 6 4 / * L a s t r e a d d i d n ' t f i n d r e c o r d * / 00944 00945 # d e f i n e H A _ S T A T E _ K E Y _ C H A N G E D 1 2 8 00946 00947 # d e f i n e H A _ S T A T E _ W R I T E _ A T _ E N D 2 5 6 / * s e t i n _ p s _ f i n d _ w r i t e p o s * / 00948 00949 # d e f i n e H A _ S T A T E _ B U F F _ S A V E D 5 1 2 / * I f c u r r e n t k e y b u f f i s i n f o - > b u f f * / 00950 00951 # d e f i n e H A _ S T A T E _ R O W _ C H A N G E D 1 0 2 4 / * T o i n v a l i d e R O W c a c h e * / 00952 00953 # d e f i n e H A _ S T A T E _ E X T E N D _ B L O C K 2 0 4 8 00954 00955 # d e f i n e H A _ S T A T E _ R N E X T _ S A M E 4 0 9 6 / * r n e x t _ s a m e o c c u p i e d l a s t k e y 2 * / 00956 00957 / * m y i s a m p a c k e x p e c t s n o m o r e t h a n 3 2 f i e l d t y p e s . * / 00958 00959 e n u m e n _ f i e l d t y p e { 00960 00961 F I E L D _ L A S T = - 1 , F I E L D _ N O R M A L , F I E L D _ S K I P _ E N D S P A C E , F I E L D _ S K I P _ P R E S P A C E , 00962 00963 F I E L D _ S K I P _ Z E R O , F I E L D _ B L O B , F I E L D _ C O N S T A N T , F I E L D _ I N T E R V A L L , F I E L D _ Z E R O , 00964 00965 F I E L D _ V A R C H A R , F I E L D _ C H E C K , 00966 00967 F I E L D _ e n u m _ v a l _ c o u n t 00968 00969 } ; 00970 00971 e n u m d a t a _ f i l e _ t y p e { 00972 00973 S T A T I C _ R E C O R D , D Y N A M I C _ R E C O R D , C O M P R E S S E D _ R E C O R D , B L O C K _ R E C O R D 00974 00975 } ; 00976 00977 / * F o r k e y r a n g e s * / 00978 00979 / * f r o m - i n f * / 00980 00981 # d e f i n e N O _ M I N _ R A N G E 1 00982 00983 / * t o + i n f * / 00984 00985 # d e f i n e N O _ M A X _ R A N G E 2 00986 00987 / * X < k e y , i . e . n o t i n c l u d i n g t h e l e f t e n d p o i n t * / 00988 00989 # d e f i n e N E A R _ M I N 4 00990 00991 / * X > k e y , i . e . n o t i n c l u d i n g t h e r i g h t e n d p o i n t * / 00992 00993 # d e f i n e N E A R _ M A X 8 00994 00995 / * 00996 00997 T h i s f l a g m e a n s t h a t i n d e x i s a u n i q u e i n d e x , a n d t h e i n t e r v a l i s 00998 00999 e q u i v a l e n t t o " A N D ( k e y p a r t _ i = c o n s t _ i ) " , w h e r e a l l o f c o n s t _ i a r e n o t N U L L s . 01000 01001 * / 01002 01003 # d e f i n e U N I Q U E _ R A N G E 1 6 01004 01005 / * 01006 01007 T h i s f l a g m e a n s t h a t t h e i n t e r v a l i s e q u i v a l e n t t o 01008 01009 " A N D ( k e y p a r t _ i = c o n s t _ i ) " , w h e r e n o t a l l k e y p a r t s m a y b e u s e d b u t a l l o f 01010 01011 c o n s t _ i a r e n o t N U L L s . 01012 01013 * / 01014 01015 # d e f i n e E Q _ R A N G E 3 2 01016 01017 / * 01018 01019 T h i s f l a g h a s t h e s a m e m e a n i n g a s U N I Q U E _ R A N G E , e x c e p t t h a t f o r a t l e a s t 01020 01021 o n e k e y p a r t t h e c o n d i t i o n i s " k e y p a r t I S N U L L " . 01022 01023 * / 01024 01025 # d e f i n e N U L L _ R A N G E 6 4 01026 01027 # d e f i n e G E O M _ F L A G 1 2 8 01028 01029 # d e f i n e S K I P _ R A N G E 2 5 6 01030 01031 # d e f i n e E M P T Y _ R A N G E 5 1 2 01032 01033 t y p e d e f s t r u c t s t _ k e y _ r a n g e 01034 01035 { 01036 01037 c o n s t u c h a r * k e y ; 01038 01039 u i n t l e n g t h ; 01040 01041 k e y _ p a r t _ m a p k e y p a r t _ m a p ; 01042 01043 e n u m h a _ r k e y _ f u n c t i o n f l a g ; 01044 01045 } k e y _ r a n g e ; 01046 01047 t y p e d e f s t r u c t s t _ k e y _ m u l t i _ r a n g e 01048 01049 { 01050 01051 k e y _ r a n g e s t a r t _ k e y ; 01052 01053 k e y _ r a n g e e n d _ k e y ; 01054 01055 c h a r * p t r ; / * F r e e t o u s e b y c a l l e r ( p t r t o r o w e t c ) * / 01056 01057 u i n t r a n g e _ f l a g ; / * k e y r a n g e f l a g s s e e a b o v e * / 01058 01059 } K E Y _ M U L T I _ R A N G E ; 01060 01061 01062 01063 / * F o r n u m b e r o f r e c o r d s * / 01064 01065 # i f d e f B I G _ T A B L E S 01066 01067 # d e f i n e r o w s 2 d o u b l e ( A ) u l o n g l o n g 2 d o u b l e ( A ) 01068 01069 t y p e d e f m y _ o f f _ t h a _ r o w s ; 01070 01071 # e l s e 01072 01073 # d e f i n e r o w s 2 d o u b l e ( A ) ( d o u b l e ) ( A ) 01074 01075 t y p e d e f u l o n g h a _ r o w s ; 01076 01077 # e n d i f 01078 01079 # d e f i n e H A _ P O S _ E R R O R ( ~ ( h a _ r o w s ) 0 ) 01080 01081 # d e f i n e H A _ O F F S E T _ E R R O R ( ~ ( m y _ o f f _ t ) 0 ) 01082 01083 # i f S Y S T E M _ S I Z E O F _ O F F _ T = = 4 01084 01085 # d e f i n e M A X _ F I L E _ S I Z E I N T _ M A X 3 2 01086 01087 # e l s e 01088 01089 # d e f i n e M A X _ F I L E _ S I Z E L O N G L O N G _ M A X 01090 01091 # e n d i f 01092 01093 # d e f i n e H A _ V A R C H A R _ P A C K L E N G T H ( f i e l d _ l e n g t h ) ( ( f i e l d _ l e n g t h ) < 2 5 6 ? 1 : 2 ) 01094 01095 / * i n v a l i d a t o r f u n c t i o n r e f e r e n c e f o r Q u e r y C a c h e * / 01096 01097 t y p e d e f v o i d ( * i n v a l i d a t o r _ b y _ f i l e n a m e ) ( c o n s t c h a r * f i l e n a m e ) ; 01098 01099 # e n d i f / * _ m y _ b a s e _ h * / 01100 01101