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