milib.h 53 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495
  1. /*
  2. * Licensed Materials - Property of IBM and/or HCL
  3. *
  4. * IBM Informix Dynamic Server
  5. * Copyright IBM Corporation 1996, 2013
  6. * (c) Copyright HCL Technologies Ltd. 2017. All Rights Reserved.
  7. *
  8. ***************************************************************************
  9. *
  10. * Title: milib.h
  11. * Description: MIAPI constants, enums, data structures, and prototypes
  12. *
  13. ***************************************************************************
  14. */
  15. #ifndef _MILIB_H_
  16. #define _MILIB_H_
  17. #ifndef _MITYPES_H_
  18. #include "mitypes.h"
  19. #endif /* _MITYPES_H_ */
  20. #ifndef _MEMDUR_H_
  21. #include "memdur.h"
  22. #endif /* _MEMDUR_H_ */
  23. #include "xa.h"
  24. /*
  25. * Define NULL if we don't have it yet
  26. */
  27. #ifndef NULL
  28. #include <stddef.h>
  29. #endif /* NULL */
  30. /*
  31. * Asynchronous action possibilities
  32. */
  33. typedef enum mi_async_action
  34. {
  35. MI_AS_NONE,
  36. MI_AS_RESULT,
  37. MI_AS_ROW,
  38. MI_AS_ERROR,
  39. MI_AS_DEAD,
  40. MI_AS_UNKNOWN
  41. } MI_ASYNC_ACTION;
  42. enum mi_nologmodecheck_duration
  43. {
  44. MI_ONCE, /* Until one database is open */
  45. MI_SESSION /* for the entire session */
  46. };
  47. /*
  48. * Callbacks
  49. */
  50. typedef enum mi_event_type
  51. {
  52. MI_EVENT_SAVEPOINT = -3, /* For new savepoint CB Test */
  53. MI_EVENT_COMMIT_ABORT = -2, /* Reserved */
  54. MI_All_Events = -1, /* Special All Events flag */
  55. MI_Exception = 0, /* an exception, (server error) */
  56. MI_Alerter_Fire_Msg = 1, /* An alerter callback */
  57. MI_Delivery_Status_Msg = 2, /* A Delivery Status callback */
  58. MI_Query_Interrupt_Ack = 3, /* A Query Interrupt acknowledgement */
  59. MI_Client_Library_Error = 4, /* Client-side library errors */
  60. MI_Xact_State_Change = 5, /* Transaction State Change */
  61. MI_Print = 6, /* print a text string */
  62. MI_Request = 7, /* prompt for & get a user response */
  63. MI_EVENT_END_STMT = 8, /* Callback event for end of
  64. statement */
  65. MI_EVENT_END_SESSION = 9, /* Callback event for end of session */
  66. MI_EVENT_END_XACT = 10, /* Callback event end of transaction
  67. when memory is freed */
  68. MI_EVENT_POST_XACT = 11, /* Reserved */
  69. MI_EVENT_MAX = 12,
  70. /* synonyms, for backwards compatibility: */
  71. MI_EVENT_ALL_EVENTS = MI_All_Events,
  72. MI_EVENT_EXCEPTION = MI_Exception,
  73. MI_EVENT_ALERTER_FIRE_MSG = MI_Alerter_Fire_Msg,
  74. MI_EVENT_DELIVERY_STATUS_MSG = MI_Delivery_Status_Msg,
  75. MI_EVENT_QUERY_INTERRUPT_ACK = MI_Query_Interrupt_Ack,
  76. MI_EVENT_CLIENT_LIBRARY_ERROR = MI_Client_Library_Error,
  77. MI_EVENT_XACT_STATE_CHANGE = MI_Xact_State_Change,
  78. MI_EVENT_PRINT = MI_Print,
  79. MI_EVENT_REQUEST = MI_Request
  80. } MI_EVENT_TYPE;
  81. /*
  82. * Valid Callback Retcodes
  83. */
  84. typedef enum mi_callback_status
  85. {
  86. MI_CB_CONTINUE = 0,
  87. MI_CB_EXC_HANDLED = 1
  88. } MI_CALLBACK_STATUS;
  89. /*
  90. * Cursors
  91. */
  92. /* Masks for cursor definition */
  93. #define MI_BINARY 0x0001 /* return result in binary */
  94. #define MI_SEND_SENSITIVE 0x0002 /* cursor is sensitive */
  95. #define MI_SEND_READ 0x0004 /* cursor is readonly */
  96. #define MI_SEND_SCROLL 0x0008 /* cursor is scrollable */
  97. #define MI_SEND_REOPT 0x0010 /* reoptimizing cursor */
  98. #define MI_SEND_HOLD 0x0020 /* hold cursor */
  99. /* Used with parameterized queries and cursors. */
  100. typedef enum mi_cursor_action
  101. {
  102. MI_CURSOR_NEXT,
  103. MI_CURSOR_PRIOR,
  104. MI_CURSOR_FIRST,
  105. MI_CURSOR_LAST,
  106. MI_CURSOR_ABSOLUTE,
  107. MI_CURSOR_RELATIVE,
  108. MI_CURSOR_CURRENT
  109. } MI_CURSOR_ACTION;
  110. /*
  111. * Different types of ID's
  112. */
  113. typedef enum mi_id
  114. {
  115. MI_SESSION_ID,
  116. MI_STATEMENT_ID
  117. } MI_ID;
  118. /*
  119. * Func Call (Client Function Types)
  120. */
  121. typedef enum mi_functype
  122. {
  123. MI_C_FUNC,
  124. MI_VISUAL_BASIC_FUNC,
  125. MI_PASCAL_FUNC
  126. } MI_FUNCTYPE;
  127. /*
  128. * Error Raise Levels
  129. */
  130. #define MI_MESSAGE 1
  131. #define MI_NOTICE MI_MESSAGE
  132. #define MI_EXCEPTION 2
  133. #define MI_WARN MI_EXCEPTION
  134. #define MI_SQL 3
  135. #define MI_FATAL 4
  136. /*
  137. * Library Errors
  138. */
  139. #define MI_LIB_BADARG 5 /* Bad arg to LIBMI function */
  140. #define MI_LIB_USAGE 6 /* Bad LIB usage sequence */
  141. #define MI_LIB_INTERR 7 /* Internal error */
  142. #define MI_LIB_NOIMP 8 /* feature not implemented */
  143. #define MI_LIB_DROPCONN 9 /* Connection to server lost */
  144. #define MI_LIB_BADSERV 10 /* Can't connect to server */
  145. /*
  146. * Execution modes
  147. */
  148. /* Masks for mi_exec() */
  149. #define MI_QUERY_NORMAL 0x0000 /* string rep return values */
  150. #define MI_QUERY_BINARY 0x0001 /* binary return values */
  151. /*
  152. * Return values from mi_get_result()
  153. */
  154. #define MI_ERROR (mi_integer)(-1)
  155. #define MI_NO_MORE_RESULTS (mi_integer)0
  156. #define MI_ROWS (mi_integer)1
  157. #define MI_DML (mi_integer)3
  158. #define MI_DDL (mi_integer)4
  159. #define MI_FUNCTION_RESULTS (mi_integer)5
  160. #define MI_END_OF_DATA (mi_integer)6
  161. #define MI_OK (mi_integer)0
  162. /*
  163. * Special return value for the streamwrite() and streamread() support
  164. * UDR's. These UDR's should return MI_MISSING_DATA instead of MI_OK or
  165. * MI_ERROR when the streamwrite() routine could not access out-of-row
  166. * data.
  167. */
  168. #define MI_MISSING_DATA (mi_integer) -2
  169. /*
  170. * Return values for mi_tab_check_msg
  171. */
  172. #define MI_INVALID_CALL (mi_integer)1
  173. /*
  174. * Return values for mi_value()
  175. */
  176. #define MI_NORMAL_VALUE 0x0000
  177. #define MI_NULL_VALUE 0x0001
  178. #define MI_ROW_VALUE 0x0002
  179. #define MI_COLLECTION_VALUE 0x0003
  180. /*
  181. * Return value for mi_call routine
  182. */
  183. #define MI_MAXARGS (mi_integer)10
  184. #define MI_NOMEM (mi_integer)-1 /* Same as defined in mt.h */
  185. #define MI_DONE (mi_integer)0 /* Same as defined in mt.h */
  186. #define MI_CONTINUE (mi_integer)1
  187. #define MI_TOOMANY (mi_integer)2 /* Too many argments */
  188. /*
  189. * Return values for: (also use MI_ERROR and MI_OK)
  190. *
  191. * mi_named_alloc()
  192. * mi_named_zalloc()
  193. * mi_named_get()
  194. * mi_lock_memory()
  195. * mi_unlock_memory()
  196. * mi_try_lock_memory()
  197. *
  198. */
  199. #define MI_NAME_ALREADY_EXISTS (mi_integer)1
  200. #define MI_NO_SUCH_NAME (mi_integer)2
  201. #define MI_LOCK_IS_BUSY (mi_integer)3
  202. #define MI_POTENTIAL_DEADLOCK (mi_integer)4
  203. /*
  204. * Set Requests
  205. */
  206. typedef enum mi_setrequest
  207. {
  208. SET_INIT,
  209. SET_RETONE,
  210. SET_END,
  211. SET_INVALID
  212. } MI_SETREQUEST;
  213. /*
  214. * Miscellaneous
  215. */
  216. #define MI_TRUE ((mi_boolean) 1)
  217. #define MI_FALSE ((mi_boolean) 0)
  218. #define MI_READ_ALL_ROWS -999
  219. #define MI_CURRENT_CLASS -999
  220. /*
  221. * Transition states for callbacks
  222. */
  223. typedef enum
  224. {
  225. MI_BEGIN,
  226. MI_NORMAL_END,
  227. MI_ABORT_END
  228. } MI_TRANSITION_TYPE;
  229. #define MI_XACT_BEGIN MI_BEGIN
  230. #define MI_XACT_END MI_NORMAL_END
  231. #define MI_XACT_ABORT MI_ABORT_END
  232. /*
  233. * Return values for mi_transaction_state
  234. */
  235. #define MI_NO_XACT 0
  236. #define MI_EXPLICIT_XACT 1
  237. #define MI_IMPLICIT_XACT 2
  238. /*
  239. * Cast Status values set in mi_cast_get()
  240. */
  241. #define MI_NO_CAST 0
  242. #define MI_NOP_CAST 1
  243. #define MI_SYSTEM_CAST 2
  244. #define MI_UDR_CAST 3
  245. #define MI_EXPLICIT_CAST 4
  246. #define MI_IMPLICIT_CAST 5
  247. #define MI_ERROR_CAST 6
  248. /* Errors for ax_reg() */
  249. #define MI_INVALID_XANAME (mi_integer) -9265
  250. #define MI_NOTINTX (mi_integer) -9266
  251. #define MI_NOSUCH_XASOURCE (mi_integer) -9267
  252. #define MI_NOSUCH_XASRC_REGISTERED (mi_integer) -9268
  253. #define MI_XAOPEN_ERROR (mi_integer) -9269
  254. /*
  255. * Values for udr_type in mi_routine_get_by_typeid()
  256. */
  257. typedef enum mi_udr_type
  258. {
  259. MI_FUNC,
  260. MI_PROC
  261. } MI_UDR_TYPE;
  262. /* flag values for mi_dbcreate() */
  263. typedef enum mi_dbcreate_flags
  264. {
  265. MI_DBCREATE_DEFAULT,
  266. MI_DBCREATE_LOG,
  267. MI_DBCREATE_LOG_BUFFERED,
  268. MI_DBCREATE_LOG_ANSI
  269. } MI_DBCREATE_FLAGS;
  270. /*
  271. * Parameter types for function argument API
  272. */
  273. typedef enum mi_funcarg_type
  274. {
  275. MI_FUNCARG_COLUMN,
  276. MI_FUNCARG_CONSTANT,
  277. MI_FUNCARG_PARAM
  278. } MI_FUNCARG_TYPE;
  279. /*
  280. * option selectors for mi_get_connection_option()
  281. */
  282. /* True if current DB is an ANSI DB */
  283. #define MI_IS_ANSI_DB 1000
  284. /* True if current DB is in exclusive mode */
  285. #define MI_IS_EXCLUSIVE_DB 1001
  286. /* True if current DB is unlogged */
  287. #define MI_IS_LOGGED_DB 1002
  288. /* True if current DB is a system DB */
  289. #define MI_IS_SYSTEM_DB 1003
  290. /*
  291. * CloudSync specific flags
  292. */
  293. #define MI_CLOUDSYNC_CB1 0x00010000
  294. /*
  295. * options bitmasks
  296. */
  297. #define MI_CALLBACK_GENERIC 0x00000000
  298. #define MI_CALLBACK_LAST 0x00000001
  299. #define MI_CALLBACK_NODUPS 0x00000002
  300. #define MI_CALLBACK_IDMASK MI_CLOUDSYNC_CB1
  301. /*
  302. * Trigger Events.
  303. */
  304. #define MI_TRIGGER_NOT_IN_EVENT 0x0000
  305. #define MI_TRIGGER_INSERT_EVENT 0x0001
  306. #define MI_TRIGGER_DELETE_EVENT 0x0002
  307. #define MI_TRIGGER_UPDATE_EVENT 0x0004
  308. #define MI_TRIGGER_SELECT_EVENT 0x0008
  309. #define MI_TRIGGER_BEFORE_EVENT 0x0010
  310. #define MI_TRIGGER_AFTER_EVENT 0x0020
  311. #define MI_TRIGGER_FOREACH_EVENT 0x0040
  312. #define MI_TRIGGER_INSTEAD_EVENT 0x0080
  313. #define MI_TRIGGER_REMOTE_EVENT 0x0100
  314. /*
  315. * Option for mi_trigger_tabname.
  316. *
  317. */
  318. #define MI_TRIGGER_CURRENTTABLE 0x0000
  319. #define MI_TRIGGER_TOPTABLE 0x0001
  320. #define MI_TRIGGER_TABLENAME 0x0002
  321. #define MI_TRIGGER_OWNERNAME 0x0004
  322. #define MI_TRIGGER_DBASENAME 0x0008
  323. #define MI_TRIGGER_SERVERNAME 0x0010
  324. #define MI_TRIGGER_FULLNAME 0x0020
  325. /*
  326. * HDR states.
  327. */
  328. #define MI_HDR_ON 0x01
  329. #define MI_HDR_PRIMARY 0x02
  330. /*
  331. * Both MI_HDR_SECONDARY and MI_SECONDARY designate if the server is any kind
  332. * of secondary node. Prior to IDS 11.50 there was only one secondary type,
  333. * the HDR secondary.
  334. */
  335. #define MI_HDR_SECONDARY 0x04 /* for backwards compatibility */
  336. #define MI_SECONDARY 0x04 /* recommended over MI_HDR_SECONDARY */
  337. /*
  338. * MI_HDR_SEC_NODE designates if the server is exactly and only an HDR
  339. * secondary node (and not another secondary type node).
  340. */
  341. #define MI_HDR_SEC_NODE 0x08
  342. #define MI_RSS_SECONDARY 0x10
  343. #define MI_SDS_SECONDARY 0x20
  344. #define MI_UPDATABLE_SECONDARY 0x40
  345. /*
  346. * Data structures.
  347. */
  348. /* Type Information */
  349. typedef struct mi_type_desc MI_TYPE_DESC;
  350. #ifndef MI_TYPEID
  351. typedef struct mi_typeid MI_TYPEID;
  352. #endif /* MI_TYEPID */
  353. /* Variable Length Data Types */
  354. /* SQL types-expose lowercase structure names, all the rest-expose uppercase */
  355. typedef struct MI_BITVARYING mi_bitvarying;
  356. typedef struct MI_LVARCHAR mi_lvarchar;
  357. typedef struct MI_SENDRECV mi_sendrecv;
  358. typedef struct MI_IMPEXP mi_impexp;
  359. typedef struct MI_IMPEXPBIN mi_impexpbin;
  360. /* Rows, Columns and Composites and SaveSets */
  361. typedef struct mi_save_set MI_SAVE_SET;
  362. typedef struct mi_statement MI_STATEMENT;
  363. typedef struct mi_querydesc MI_QUERYDESC;
  364. typedef struct mi_error_desc MI_ERROR_DESC;
  365. typedef struct mi_callback_handle MI_CALLBACK_HANDLE;
  366. typedef struct mi_row MI_ROW;
  367. typedef struct mi_row_desc MI_ROW_DESC;
  368. /* MI_FPARAM, Function Descriptor and Callbacks */
  369. typedef struct mi_fp_typeinfo MI_FP_TYPEINFO;
  370. typedef mi_integer mi_funcid;
  371. typedef struct mi_func_desc MI_FUNC_DESC;
  372. typedef struct mi_fparam MI_FPARAM;
  373. /* MI_CONNECTION_INFO & MI_DATABASE_INFO */
  374. typedef struct mi_connection MI_CONNECTION;
  375. typedef struct mi_connection_info
  376. {
  377. char *server_name; /* INFORMIXSERVER */
  378. mi_integer server_port; /* SERVERNUM */
  379. char *locale; /* Processing locale */
  380. mi_integer reserved1; /* reserved for future */
  381. mi_integer reserved2; /* reserved for future */
  382. } MI_CONNECTION_INFO;
  383. typedef struct mi_database_info
  384. {
  385. char *database_name;
  386. char *user_name;
  387. char *password;
  388. } MI_DATABASE_INFO;
  389. /* Collections */
  390. typedef struct mi_collection MI_COLLECTION;
  391. typedef struct mi_coll_desc MI_COLL_DESC;
  392. /* Server Transition Descriptor */
  393. typedef struct mi_transition_desc MI_TRANSITION_DESC;
  394. /* Client only */
  395. typedef struct mi_parameter_info
  396. {
  397. mi_integer callbacks_enabled;
  398. mi_integer pointer_checks_enabled;
  399. } MI_PARAMETER_INFO;
  400. /* Selectivity */
  401. typedef struct mi_funcarg MI_FUNCARG;
  402. /*
  403. * Function Pointer Types
  404. */
  405. typedef void * (MI_PROC_VACALLBACK *MI_C_FUNC_PTR) ();
  406. typedef MI_CALLBACK_STATUS (MI_PROC_CALLBACK *MI_CALLBACK_FUNC)
  407. ARGS((MI_EVENT_TYPE type,
  408. MI_CONNECTION *conn,
  409. void *cb_data,
  410. void *user_data));
  411. /*
  412. * Public function prototypes.
  413. */
  414. EXTERNC_BEGIN
  415. /*
  416. * New routines for variable length data types
  417. */
  418. MI_DECL
  419. mi_lvarchar * MI_PROC_EXPORT
  420. mi_new_var ARGS((mi_integer datalen));
  421. MI_DECL
  422. mi_integer MI_PROC_EXPORT
  423. mi_var_free ARGS((mi_lvarchar *varptr));
  424. MI_DECL
  425. mi_integer MI_PROC_EXPORT
  426. mi_get_varlen ARGS((mi_lvarchar *varptr));
  427. MI_DECL
  428. char * MI_PROC_EXPORT
  429. mi_get_vardata ARGS((mi_lvarchar *varptr));
  430. MI_DECL
  431. char * MI_PROC_EXPORT
  432. mi_get_vardata_align ARGS((mi_lvarchar *varptr,
  433. mi_integer align));
  434. MI_DECL
  435. void MI_PROC_EXPORT
  436. mi_set_varlen ARGS((mi_lvarchar *varptr,
  437. mi_integer datalen));
  438. MI_DECL
  439. void MI_PROC_EXPORT
  440. mi_set_vardata ARGS((mi_lvarchar *varptr,
  441. char *dataptr));
  442. MI_DECL
  443. void MI_PROC_EXPORT
  444. mi_set_vardata_align ARGS((mi_lvarchar *varptr,
  445. char *dataptr,
  446. mi_integer align));
  447. MI_DECL
  448. void MI_PROC_EXPORT
  449. mi_set_varptr ARGS((mi_lvarchar *varptr,
  450. char *dataptr));
  451. /* add this function to fix the datablade related problems */
  452. MI_DECL
  453. mi_smallint MI_PROC_EXPORT
  454. mi_set_optcompind ARGS((mi_smallint optcompind));
  455. MI_DECL
  456. void MI_PROC_EXPORT
  457. mi_set_no_langcheck ARGS((void));
  458. MI_DECL
  459. void MI_PROC_EXPORT
  460. mi_unset_no_langcheck ARGS((void));
  461. MI_DECL
  462. void MI_PROC_EXPORT
  463. mi_set_no_logmodecheck ARGS((mi_integer duration));
  464. MI_DECL
  465. void MI_PROC_EXPORT
  466. mi_unset_no_logmodecheck ARGS((mi_integer duration));
  467. MI_DECL
  468. void MI_PROC_EXPORT
  469. mi_set_ses_explsql ARGS((void));
  470. MI_DECL
  471. void MI_PROC_EXPORT
  472. mi_unset_ses_explsql ARGS((void));
  473. MI_DECL
  474. mi_integer MI_PROC_EXPORT
  475. mi_check_remote_version ARGS((mi_char1 required));
  476. MI_DECL
  477. mi_lvarchar * MI_PROC_EXPORT
  478. mi_var_copy ARGS((mi_lvarchar *lv));
  479. MI_DECL
  480. mi_string * MI_PROC_EXPORT
  481. mi_lvarchar_to_string ARGS((mi_lvarchar *lv));
  482. MI_DECL
  483. mi_lvarchar * MI_PROC_EXPORT
  484. mi_string_to_lvarchar ARGS((mi_string *str));
  485. MI_DECL
  486. void MI_PROC_EXPORT
  487. mi_var_to_buffer ARGS((mi_lvarchar *varptr,
  488. char *buffer));
  489. /*
  490. * Converting and Copying (server only)
  491. */
  492. MI_DECL
  493. mi_unsigned_integer MI_PROC_EXPORT
  494. mi_fix_integer ARGS((mi_unsigned_integer val));
  495. MI_DECL
  496. mi_unsigned_integer MI_PROC_EXPORT
  497. mi_fix_smallint ARGS((mi_unsigned_integer val));
  498. /*
  499. * Get and put byte routines
  500. */
  501. MI_DECL
  502. mi_unsigned_char1 * MI_PROC_EXPORT
  503. mi_get_bytes ARGS((mi_unsigned_char1 *iodata,
  504. char *valp,
  505. mi_integer nbytes));
  506. MI_DECL
  507. mi_unsigned_char1 * MI_PROC_EXPORT
  508. mi_put_bytes ARGS((mi_unsigned_char1 *iodata,
  509. char *valp,
  510. mi_integer nbytes));
  511. /*
  512. * Get/put routines for standard datatypes
  513. */
  514. MI_DECL
  515. mi_unsigned_char1 * MI_PROC_EXPORT
  516. mi_get_double_precision ARGS((mi_unsigned_char1 *datap,
  517. mi_double_precision *valp));
  518. MI_DECL
  519. mi_unsigned_char1 * MI_PROC_EXPORT
  520. mi_put_double_precision ARGS((mi_unsigned_char1 *datap,
  521. mi_double_precision *valp));
  522. MI_DECL
  523. mi_unsigned_char1 * MI_PROC_EXPORT
  524. mi_get_real ARGS((mi_unsigned_char1 *datap,
  525. mi_real *mi_realp));
  526. MI_DECL
  527. mi_unsigned_char1 * MI_PROC_EXPORT
  528. mi_put_real ARGS((mi_unsigned_char1 *datap,
  529. mi_real *mi_realval));
  530. MI_DECL
  531. mi_unsigned_char1 * MI_PROC_EXPORT
  532. mi_get_integer ARGS((mi_unsigned_char1 *datap,
  533. mi_integer *mi_integerp));
  534. MI_DECL
  535. mi_unsigned_char1 * MI_PROC_EXPORT
  536. mi_put_integer ARGS((mi_unsigned_char1 *datap,
  537. mi_integer mi_integerval));
  538. MI_DECL
  539. mi_unsigned_char1 * MI_PROC_EXPORT
  540. mi_get_smallint ARGS((mi_unsigned_char1 *datap,
  541. mi_smallint *smallintp));
  542. MI_DECL
  543. mi_unsigned_char1 * MI_PROC_EXPORT
  544. mi_put_smallint ARGS((mi_unsigned_char1 *datap,
  545. mi_integer smallintval));
  546. MI_DECL
  547. mi_unsigned_char1 * MI_PROC_EXPORT
  548. mi_get_date ARGS((mi_unsigned_char1 *datap,
  549. mi_date *datep));
  550. MI_DECL
  551. mi_unsigned_char1 * MI_PROC_EXPORT
  552. mi_put_date ARGS((mi_unsigned_char1 *datap,
  553. mi_date *datep));
  554. MI_DECL
  555. mi_unsigned_char1 * MI_PROC_EXPORT
  556. mi_get_int8 ARGS((mi_unsigned_char1 *datap,
  557. mi_int8 *int8p));
  558. MI_DECL
  559. mi_unsigned_char1 * MI_PROC_EXPORT
  560. mi_put_int8 ARGS((mi_unsigned_char1 *datap,
  561. mi_int8 *int8p));
  562. #ifndef NOBIGINT
  563. MI_DECL
  564. mi_unsigned_char1 * MI_PROC_EXPORT
  565. mi_get_bigint ARGS((mi_unsigned_char1 *datap,
  566. mi_bigint *bintp));
  567. MI_DECL
  568. mi_unsigned_char1 * MI_PROC_EXPORT
  569. mi_put_bigint ARGS((mi_unsigned_char1 *datap,
  570. mi_bigint *bintp));
  571. MI_DECL
  572. mi_integer MI_PROC_EXPORT
  573. mi_last_bigserial ARGS((MI_CONNECTION *conn, mi_bigint *out));
  574. MI_DECL
  575. mi_unsigned_bigint MI_PROC_EXPORT
  576. mi_fix_bigint ARGS((mi_unsigned_bigint val));
  577. #endif
  578. MI_DECL
  579. mi_unsigned_char1 * MI_PROC_EXPORT
  580. mi_get_datetime ARGS((mi_unsigned_char1 *datap,
  581. mi_datetime *dtp));
  582. MI_DECL
  583. mi_unsigned_char1 * MI_PROC_EXPORT
  584. mi_put_datetime ARGS((mi_unsigned_char1 *datap,
  585. mi_datetime *dtp));
  586. MI_DECL
  587. mi_unsigned_char1 * MI_PROC_EXPORT
  588. mi_get_interval ARGS((mi_unsigned_char1 *datap,
  589. mi_interval *ip));
  590. MI_DECL
  591. mi_unsigned_char1 * MI_PROC_EXPORT
  592. mi_put_interval ARGS((mi_unsigned_char1 *datap,
  593. mi_interval *ip));
  594. MI_DECL
  595. mi_unsigned_char1 * MI_PROC_EXPORT
  596. mi_get_money ARGS((mi_unsigned_char1 *datap,
  597. mi_money *moneyp));
  598. MI_DECL
  599. mi_unsigned_char1 * MI_PROC_EXPORT
  600. mi_put_money ARGS((mi_unsigned_char1 *datap,
  601. mi_money *moneyp));
  602. MI_DECL
  603. mi_unsigned_char1 * MI_PROC_EXPORT
  604. mi_get_decimal ARGS((mi_unsigned_char1 *datap,
  605. mi_decimal *decimalp));
  606. MI_DECL
  607. mi_unsigned_char1 * MI_PROC_EXPORT
  608. mi_put_decimal ARGS((mi_unsigned_char1 *datap,
  609. mi_decimal *decimalp));
  610. MI_DECL
  611. mi_unsigned_char1 * MI_PROC_EXPORT
  612. mi_get_ref ARGS((mi_unsigned_char1 *datap,
  613. mi_ref *refp));
  614. MI_DECL
  615. mi_unsigned_char1 * MI_PROC_EXPORT
  616. mi_put_ref ARGS((mi_unsigned_char1 *datap,
  617. mi_ref *refp));
  618. /*
  619. * Get/put string functions
  620. */
  621. MI_DECL
  622. mi_unsigned_char1 * MI_PROC_EXPORT
  623. mi_get_string ARGS((mi_unsigned_char1 *datap,
  624. mi_string **stringp,
  625. mi_integer srcbytes));
  626. MI_DECL
  627. mi_unsigned_char1 * MI_PROC_EXPORT
  628. mi_put_string ARGS((mi_unsigned_char1 **datap,
  629. mi_string *valp,
  630. mi_integer srcbytes));
  631. /*
  632. * Old and deprecated Code conversion functions
  633. */
  634. MI_DECL
  635. mi_date MI_PROC_EXPORT
  636. mi_date_to_binary ARGS((mi_lvarchar *date_string));
  637. MI_DECL
  638. mi_lvarchar * MI_PROC_EXPORT
  639. mi_binary_to_date ARGS((mi_date date_data));
  640. MI_DECL
  641. mi_datetime * MI_PROC_EXPORT
  642. mi_datetime_to_binary ARGS((mi_lvarchar *dttime));
  643. MI_DECL
  644. mi_lvarchar * MI_PROC_EXPORT
  645. mi_binary_to_datetime ARGS((mi_datetime *dttime));
  646. MI_DECL
  647. mi_money * MI_PROC_EXPORT
  648. mi_money_to_binary ARGS((mi_lvarchar *money_string));
  649. MI_DECL
  650. mi_lvarchar * MI_PROC_EXPORT
  651. mi_binary_to_money ARGS((mi_money *money_data));
  652. MI_DECL
  653. mi_decimal * MI_PROC_EXPORT
  654. mi_decimal_to_binary ARGS((mi_lvarchar *decimal_string));
  655. MI_DECL
  656. mi_lvarchar * MI_PROC_EXPORT
  657. mi_binary_to_decimal ARGS((mi_decimal *decimal_data));
  658. /*
  659. * New Code conversion functions
  660. */
  661. MI_DECL
  662. mi_date MI_PROC_EXPORT
  663. mi_string_to_date ARGS((mi_string *date_string));
  664. MI_DECL
  665. mi_string * MI_PROC_EXPORT
  666. mi_date_to_string ARGS((mi_date date_data));
  667. MI_DECL
  668. mi_datetime * MI_PROC_EXPORT
  669. mi_string_to_datetime ARGS((mi_string *datetime_string, mi_string *tynm));
  670. MI_DECL
  671. mi_string * MI_PROC_EXPORT
  672. mi_datetime_to_string ARGS((mi_datetime *dttime));
  673. MI_DECL
  674. mi_money * MI_PROC_EXPORT
  675. mi_string_to_money ARGS((mi_string *money_string));
  676. MI_DECL
  677. mi_string * MI_PROC_EXPORT
  678. mi_money_to_string ARGS((mi_money *money_data));
  679. MI_DECL
  680. mi_decimal * MI_PROC_EXPORT
  681. mi_string_to_decimal ARGS((mi_string *decimal_string));
  682. MI_DECL
  683. mi_string * MI_PROC_EXPORT
  684. mi_decimal_to_string ARGS((mi_decimal *decimal_data));
  685. MI_DECL
  686. mi_interval * MI_PROC_EXPORT
  687. mi_string_to_interval ARGS((mi_string *interval_string, mi_string *tynm));
  688. MI_DECL
  689. mi_string * MI_PROC_EXPORT
  690. mi_interval_to_string ARGS((mi_interval *intime));
  691. /*
  692. * Function prototypes for type information
  693. */
  694. MI_DECL
  695. mi_boolean MI_PROC_EXPORT
  696. mi_typeid_is_builtin ARGS((MI_TYPEID *typeptr));
  697. MI_DECL
  698. mi_boolean MI_PROC_EXPORT
  699. mi_typeid_is_complex ARGS((MI_TYPEID *typeptr));
  700. MI_DECL
  701. mi_boolean MI_PROC_EXPORT
  702. mi_typeid_is_row ARGS((MI_TYPEID *typeptr));
  703. MI_DECL
  704. mi_boolean MI_PROC_EXPORT
  705. mi_typeid_is_list ARGS((MI_TYPEID *typeptr));
  706. MI_DECL
  707. mi_boolean MI_PROC_EXPORT
  708. mi_typeid_is_multiset ARGS((MI_TYPEID *typeptr));
  709. MI_DECL
  710. mi_boolean MI_PROC_EXPORT
  711. mi_typeid_is_set ARGS((MI_TYPEID *typeptr));
  712. MI_DECL
  713. mi_boolean MI_PROC_EXPORT
  714. mi_typeid_is_collection ARGS((MI_TYPEID *typeptr));
  715. MI_DECL
  716. mi_boolean MI_PROC_EXPORT
  717. mi_typeid_is_reference ARGS((MI_TYPEID *typeptr));
  718. MI_DECL
  719. mi_boolean MI_PROC_EXPORT
  720. mi_typeid_is_distinct ARGS((MI_TYPEID *typeptr));
  721. MI_DECL
  722. mi_boolean MI_PROC_EXPORT
  723. mi_typeid_is_userUDT ARGS((MI_TYPEID *typeptr));
  724. MI_DECL
  725. mi_boolean MI_PROC_EXPORT
  726. mi_typeid_is_constructor ARGS((MI_TYPEID *typeptr));
  727. MI_DECL
  728. mi_string * MI_PROC_EXPORT
  729. mi_type_typename ARGS((MI_TYPE_DESC *td));
  730. MI_DECL
  731. mi_string * MI_PROC_EXPORT
  732. mi_type_owner ARGS((MI_TYPE_DESC *td));
  733. MI_DECL
  734. mi_string * MI_PROC_EXPORT
  735. mi_type_full_name ARGS((MI_TYPE_DESC *td));
  736. MI_DECL
  737. MI_TYPE_DESC * MI_PROC_EXPORT
  738. mi_type_element_typedesc ARGS((MI_TYPE_DESC *td));
  739. MI_DECL
  740. MI_TYPE_DESC * MI_PROC_EXPORT
  741. mi_type_constructor_typedesc ARGS((MI_TYPE_DESC *td));
  742. MI_DECL
  743. mi_integer MI_PROC_EXPORT
  744. mi_type_align ARGS((MI_TYPE_DESC *td));
  745. MI_DECL
  746. mi_boolean MI_PROC_EXPORT
  747. mi_type_byvalue ARGS((MI_TYPE_DESC *td));
  748. MI_DECL
  749. mi_integer MI_PROC_EXPORT
  750. mi_type_length ARGS((MI_TYPE_DESC *td));
  751. MI_DECL
  752. mi_integer MI_PROC_EXPORT
  753. mi_type_maxlength ARGS((MI_TYPE_DESC *td));
  754. MI_DECL
  755. mi_integer MI_PROC_EXPORT
  756. mi_type_scale ARGS((MI_TYPE_DESC *td));
  757. MI_DECL
  758. mi_integer MI_PROC_EXPORT
  759. mi_type_precision ARGS((MI_TYPE_DESC *td));
  760. MI_DECL
  761. mi_integer MI_PROC_EXPORT
  762. mi_type_qualifier ARGS((MI_TYPE_DESC *td));
  763. MI_DECL
  764. MI_TYPE_DESC * MI_PROC_EXPORT
  765. mi_get_type_source_type ARGS((MI_TYPE_DESC *td));
  766. MI_DECL
  767. mi_boolean MI_PROC_EXPORT
  768. mi_typeid_equals ARGS((MI_TYPEID *typeone, MI_TYPEID *typetwo));
  769. /* Fetch a typeid from a null terminated string or an lvarchar
  770. * and get a type descriptor from an id
  771. */
  772. MI_DECL
  773. MI_TYPEID * MI_PROC_EXPORT
  774. mi_typename_to_id ARGS((MI_CONNECTION *conn,
  775. mi_lvarchar *name));
  776. MI_DECL
  777. MI_TYPEID * MI_PROC_EXPORT
  778. mi_typestring_to_id ARGS((MI_CONNECTION *conn,
  779. mi_string *name));
  780. MI_DECL
  781. MI_TYPE_DESC * MI_PROC_EXPORT
  782. mi_typename_to_typedesc ARGS((MI_CONNECTION *conn,
  783. mi_lvarchar *name));
  784. MI_DECL
  785. MI_TYPE_DESC * MI_PROC_EXPORT
  786. mi_typestring_to_typedesc ARGS((MI_CONNECTION *conn,
  787. mi_string *name));
  788. MI_DECL
  789. MI_TYPE_DESC * MI_PROC_EXPORT
  790. mi_type_typedesc ARGS((MI_CONNECTION *conn, MI_TYPEID *tid));
  791. MI_DECL
  792. MI_TYPEID * MI_PROC_EXPORT
  793. mi_typedesc_typeid ARGS((MI_TYPE_DESC *tdesc));
  794. /*
  795. * Prototypes for MI_FUNC_DESC accessor functions
  796. */
  797. MI_DECL
  798. mi_integer MI_PROC_EXPORT
  799. mi_func_handlesnulls ARGS((MI_FUNC_DESC *func_desc));
  800. MI_DECL
  801. char * MI_PROC_EXPORT
  802. mi_func_commutator ARGS((MI_FUNC_DESC *func_desc));
  803. MI_DECL
  804. char * MI_PROC_EXPORT
  805. mi_func_negator ARGS((MI_FUNC_DESC *func_desc));
  806. /*
  807. * Its a Server Only function
  808. */
  809. MI_DECL
  810. mi_integer MI_PROC_EXPORT
  811. mi_func_isvariant ARGS((MI_FUNC_DESC *func_desc));
  812. /*
  813. * Prototypes for MI_FPARAM accessor functions
  814. */
  815. MI_DECL
  816. mi_boolean MI_PROC_EXPORT
  817. mi_fp_usr_fparam ARGS((MI_FPARAM *fparamPtr));
  818. MI_DECL
  819. void * MI_PROC_EXPORT
  820. mi_fp_funcstate ARGS((MI_FPARAM *fparamPtr));
  821. MI_DECL
  822. void MI_PROC_EXPORT
  823. mi_fp_setfuncstate ARGS((MI_FPARAM *fparamPtr,
  824. void *value));
  825. MI_DECL
  826. MI_SETREQUEST MI_PROC_EXPORT
  827. mi_fp_request ARGS((MI_FPARAM *fparamPtr));
  828. MI_DECL
  829. mi_integer MI_PROC_EXPORT
  830. mi_fp_nrets ARGS((MI_FPARAM *fparamPtr));
  831. MI_DECL
  832. void MI_PROC_EXPORT
  833. mi_fp_setnrets ARGS((MI_FPARAM *fparamPtr,
  834. mi_integer value));
  835. MI_DECL
  836. mi_boolean MI_PROC_EXPORT
  837. mi_fp_returnisnull ARGS((MI_FPARAM *fparamPtr, mi_integer nth));
  838. MI_DECL
  839. void MI_PROC_EXPORT
  840. mi_fp_setreturnisnull ARGS((MI_FPARAM *fparamPtr,
  841. mi_integer nth,
  842. mi_integer value));
  843. MI_DECL
  844. void MI_PROC_EXPORT
  845. mi_fp_setisdone ARGS((MI_FPARAM *fparamPtr,
  846. mi_integer value));
  847. MI_DECL
  848. mi_integer MI_PROC_EXPORT
  849. mi_fp_nargs ARGS((MI_FPARAM *fparamPtr));
  850. MI_DECL
  851. void MI_PROC_EXPORT
  852. mi_fp_setnargs ARGS((MI_FPARAM *fparamPtr,
  853. mi_integer value));
  854. MI_DECL
  855. mi_unsigned_char1 MI_PROC_EXPORT
  856. mi_fp_argisnull ARGS((MI_FPARAM *fparamPtr,
  857. mi_integer arg));
  858. MI_DECL
  859. void MI_PROC_EXPORT
  860. mi_fp_setargisnull ARGS((MI_FPARAM *fparamPtr,
  861. mi_integer arg,
  862. mi_integer value));
  863. MI_DECL
  864. MI_TYPEID * MI_PROC_EXPORT
  865. mi_fp_argtype ARGS((MI_FPARAM *fparamPtr,
  866. mi_integer nth));
  867. MI_DECL
  868. void MI_PROC_EXPORT
  869. mi_fp_setargtype ARGS((MI_FPARAM *fparamPtr,
  870. mi_integer nth,
  871. MI_TYPEID *type_id));
  872. MI_DECL
  873. mi_integer MI_PROC_EXPORT
  874. mi_fp_arglen ARGS((MI_FPARAM *fparamPtr,
  875. mi_integer nth));
  876. MI_DECL
  877. void MI_PROC_EXPORT
  878. mi_fp_setarglen ARGS((MI_FPARAM *fparamPtr,
  879. mi_integer nth,
  880. mi_integer len));
  881. MI_DECL
  882. mi_integer MI_PROC_EXPORT
  883. mi_fp_argprec ARGS((MI_FPARAM *fparamPtr,
  884. mi_integer nth));
  885. MI_DECL
  886. void MI_PROC_EXPORT
  887. mi_fp_setargprec ARGS((MI_FPARAM *fparamPtr,
  888. mi_integer nth,
  889. mi_integer prec));
  890. MI_DECL
  891. mi_integer MI_PROC_EXPORT
  892. mi_fp_argscale ARGS((MI_FPARAM *fparamPtr,
  893. mi_integer nth));
  894. MI_DECL
  895. void MI_PROC_EXPORT
  896. mi_fp_setargscale ARGS((MI_FPARAM *fparamPtr,
  897. mi_integer nth,
  898. mi_integer scale));
  899. MI_DECL
  900. MI_TYPEID * MI_PROC_EXPORT
  901. mi_fp_rettype ARGS((MI_FPARAM *fparamPtr,
  902. mi_integer nth));
  903. MI_DECL
  904. void MI_PROC_EXPORT
  905. mi_fp_setrettype ARGS((MI_FPARAM *fparamPtr,
  906. mi_integer nth,
  907. MI_TYPEID *type_id));
  908. MI_DECL
  909. mi_integer MI_PROC_EXPORT
  910. mi_fp_retlen ARGS((MI_FPARAM *fparamPtr,
  911. mi_integer nth));
  912. MI_DECL
  913. void MI_PROC_EXPORT
  914. mi_fp_setretlen ARGS((MI_FPARAM *fparamPtr,
  915. mi_integer nth,
  916. mi_integer len));
  917. MI_DECL
  918. mi_integer MI_PROC_EXPORT
  919. mi_fp_retprec ARGS((MI_FPARAM *fparamPtr,
  920. mi_integer nth));
  921. MI_DECL
  922. void MI_PROC_EXPORT
  923. mi_fp_setretprec ARGS((MI_FPARAM *fparamPtr,
  924. mi_integer nth,
  925. mi_integer prec));
  926. MI_DECL
  927. mi_integer MI_PROC_EXPORT
  928. mi_fp_retscale ARGS((MI_FPARAM *fparamPtr,
  929. mi_integer nth));
  930. MI_DECL
  931. void MI_PROC_EXPORT
  932. mi_fp_setretscale ARGS((MI_FPARAM *fparamPtr,
  933. mi_integer nth,
  934. mi_integer scale));
  935. MI_DECL
  936. mi_funcid MI_PROC_EXPORT
  937. mi_fp_getfuncid ARGS((MI_FPARAM *fparamPtr));
  938. MI_DECL
  939. void MI_PROC_EXPORT
  940. mi_fp_setfuncid ARGS((MI_FPARAM *fparamPtr,
  941. mi_funcid func));
  942. MI_DECL
  943. mi_integer MI_PROC_EXPORT
  944. mi_fp_getcolid ARGS((MI_FPARAM *fparamPtr));
  945. MI_DECL
  946. void MI_PROC_EXPORT
  947. mi_fp_setcolid ARGS((MI_FPARAM *fparamPtr,
  948. mi_integer value));
  949. MI_DECL
  950. MI_ROW * MI_PROC_EXPORT
  951. mi_fp_getrow ARGS((MI_FPARAM *fparamPtr));
  952. MI_DECL
  953. void MI_PROC_EXPORT
  954. mi_fp_setrow ARGS((MI_FPARAM *fparamPtr,
  955. MI_ROW *row));
  956. /*
  957. * Create (and free) a row based on the row descriptor and data info.
  958. */
  959. MI_DECL
  960. MI_ROW * MI_PROC_EXPORT
  961. mi_row_create ARGS((MI_CONNECTION *conn,
  962. MI_ROW_DESC *rowdesc,
  963. MI_DATUM coldata[],
  964. mi_boolean colisnull[]));
  965. MI_DECL
  966. mi_integer MI_PROC_EXPORT
  967. mi_row_free ARGS((MI_ROW *row));
  968. /*
  969. * Create (and free) a row descriptor, based on the row type information.
  970. */
  971. MI_DECL
  972. MI_ROW_DESC * MI_PROC_EXPORT
  973. mi_row_desc_create ARGS((MI_TYPEID *type_id));
  974. MI_DECL
  975. void MI_PROC_EXPORT
  976. mi_row_desc_free ARGS((MI_ROW_DESC *rowdesc));
  977. MI_DECL
  978. MI_ROW * MI_PROC_EXPORT
  979. mi_next_row ARGS((MI_CONNECTION *conn,
  980. mi_integer *error));
  981. MI_DECL
  982. mint MI_PROC_EXPORT
  983. mi_set_row_desc_duration ARGS((MI_ROW *row,
  984. MI_MEMORY_DURATION duration));
  985. /*
  986. * Fetch the row descriptor based on the row or the current row
  987. * in the specified connection.
  988. */
  989. MI_DECL
  990. MI_ROW_DESC * MI_PROC_EXPORT
  991. mi_get_row_desc ARGS((MI_ROW *row));
  992. MI_DECL
  993. MI_ROW_DESC * MI_PROC_EXPORT
  994. mi_get_row_desc_without_row ARGS((MI_CONNECTION *conn));
  995. MI_DECL
  996. MI_ROW_DESC *
  997. mi_get_row_desc_from_type_desc ARGS((MI_TYPE_DESC *type_desc_Ptr));
  998. /*
  999. * Get column information by number or name.
  1000. */
  1001. MI_DECL
  1002. mi_string * MI_PROC_EXPORT
  1003. mi_column_name ARGS((MI_ROW_DESC *idesc,
  1004. mi_integer value_no));
  1005. MI_DECL
  1006. MI_TYPE_DESC * MI_PROC_EXPORT
  1007. mi_column_typedesc ARGS((MI_ROW_DESC *rd,
  1008. mi_integer colno));
  1009. MI_DECL
  1010. MI_TYPEID * MI_PROC_EXPORT
  1011. mi_column_type_id ARGS((MI_ROW_DESC *idesc,
  1012. mi_integer value_no));
  1013. MI_DECL
  1014. mi_integer MI_PROC_EXPORT
  1015. mi_column_count ARGS((MI_ROW_DESC *idesc));
  1016. MI_DECL
  1017. mi_integer MI_PROC_EXPORT
  1018. mi_column_id ARGS((MI_ROW_DESC *idesc,
  1019. mi_string *colname));
  1020. MI_DECL
  1021. mi_integer MI_PROC_EXPORT
  1022. mi_value ARGS((MI_ROW *row,
  1023. mi_integer column_no,
  1024. MI_DATUM *retbuf,
  1025. mi_integer *retlen));
  1026. /* Same as mi_value() but uses column name */
  1027. MI_DECL
  1028. mi_integer MI_PROC_EXPORT
  1029. mi_value_by_name ARGS((MI_ROW *row,
  1030. char *column_name,
  1031. MI_DATUM *retbuf,
  1032. mi_integer *retlen));
  1033. MI_DECL
  1034. mi_integer MI_PROC_EXPORT
  1035. mi_value_length ARGS((MI_ROW *row,
  1036. mi_integer value_no));
  1037. MI_DECL
  1038. mi_integer MI_PROC_EXPORT
  1039. mi_column_precision ARGS((MI_ROW_DESC *idesc,
  1040. mi_integer value_no));
  1041. MI_DECL
  1042. mi_integer MI_PROC_EXPORT
  1043. mi_column_nullable ARGS((MI_ROW_DESC *idesc,
  1044. mi_integer value_no));
  1045. MI_DECL
  1046. mi_integer MI_PROC_EXPORT
  1047. mi_column_scale ARGS((MI_ROW_DESC *idesc,
  1048. mi_integer value_no));
  1049. MI_DECL
  1050. mi_integer MI_PROC_EXPORT
  1051. mi_column_default ARGS((MI_ROW_DESC *row_desc,
  1052. mi_integer column_no,
  1053. MI_DATUM *default_val));
  1054. MI_DECL
  1055. mi_integer MI_PROC_EXPORT
  1056. mi_column_default_string ARGS((MI_ROW_DESC *row_desc,
  1057. mi_integer column_no,
  1058. mi_string **default_val));
  1059. /*
  1060. * Data Handling Routines - Parameters and Environment
  1061. */
  1062. MI_DECL
  1063. char * MI_PROC_EXPORT
  1064. mi_sysname ARGS((char *name));
  1065. MI_DECL
  1066. mi_integer MI_PROC_EXPORT
  1067. mi_get_connection_info ARGS((MI_CONNECTION *conn,
  1068. MI_CONNECTION_INFO *ret));
  1069. MI_DECL
  1070. mi_integer MI_PROC_EXPORT
  1071. mi_get_connection_user_data ARGS((MI_CONNECTION *conn,
  1072. void **user_data));
  1073. MI_DECL
  1074. mi_integer MI_PROC_EXPORT
  1075. mi_get_database_info ARGS((MI_CONNECTION *conn,
  1076. MI_DATABASE_INFO *ret));
  1077. MI_DECL
  1078. mi_integer MI_PROC_EXPORT
  1079. mi_get_default_connection_info ARGS((MI_CONNECTION_INFO *ret));
  1080. MI_DECL
  1081. mi_integer MI_PROC_EXPORT
  1082. mi_get_default_database_info ARGS((MI_DATABASE_INFO *ret));
  1083. MI_DECL
  1084. mi_integer MI_PROC_EXPORT
  1085. mi_get_parameter_info ARGS((MI_PARAMETER_INFO *ret));
  1086. MI_DECL
  1087. mi_integer MI_PROC_EXPORT
  1088. mi_set_connection_user_data ARGS((MI_CONNECTION *conn,
  1089. void *conn_info));
  1090. MI_DECL
  1091. mi_integer MI_PROC_EXPORT
  1092. mi_set_default_connection_info ARGS((MI_CONNECTION_INFO *cinfo));
  1093. MI_DECL
  1094. mi_integer MI_PROC_EXPORT
  1095. mi_set_default_database_info ARGS((MI_DATABASE_INFO *dinfo));
  1096. MI_DECL
  1097. mi_integer MI_PROC_EXPORT
  1098. mi_set_parameter_info ARGS((const MI_PARAMETER_INFO *set));
  1099. MI_DECL
  1100. mi_integer MI_PROC_EXPORT
  1101. mi_get_connection_option ARGS((MI_CONNECTION *conn,
  1102. const mi_integer which_option,
  1103. mi_integer *result));
  1104. MI_DECL
  1105. mi_integer MI_PROC_EXPORT
  1106. mi_get_serverenv ARGS((const char *name, char **value));
  1107. MI_DECL
  1108. mi_integer MI_PROC_EXPORT
  1109. mi_server_version ARGS((MI_CONNECTION *conn, char *buf, mi_integer buflen));
  1110. /*
  1111. * Prototypes for collections
  1112. */
  1113. /* open */
  1114. MI_DECL
  1115. MI_COLL_DESC * MI_PROC_EXPORT
  1116. mi_collection_open ARGS((MI_CONNECTION *conn,
  1117. MI_COLLECTION *coll));
  1118. /* open with options */
  1119. MI_DECL
  1120. MI_COLL_DESC * MI_PROC_EXPORT
  1121. mi_collection_open_with_options ARGS((MI_CONNECTION *conn,
  1122. MI_COLLECTION *coll,
  1123. mi_integer flags));
  1124. /* Possible values for flags */
  1125. #define MI_COLL_NOSCROLL 0x1
  1126. #define MI_COLL_READONLY 0x2
  1127. /* flags for MI_CONNECTION.conn_flags */
  1128. #define MI_CONN_TD_BOUND 0x1 /* indicate that the conn is embedded
  1129. in a table descriptor. It and all its
  1130. sub-structures must have at least the
  1131. same lifespan */
  1132. /* close */
  1133. MI_DECL
  1134. mi_integer MI_PROC_EXPORT
  1135. mi_collection_close ARGS((MI_CONNECTION *conn,
  1136. MI_COLL_DESC *colldesc));
  1137. /* create */
  1138. MI_DECL
  1139. MI_COLLECTION * MI_PROC_EXPORT
  1140. mi_collection_create ARGS((MI_CONNECTION *conn,
  1141. MI_TYPEID *type_id));
  1142. /* free */
  1143. MI_DECL
  1144. mi_integer MI_PROC_EXPORT
  1145. mi_collection_free ARGS((MI_CONNECTION *conn,
  1146. MI_COLLECTION *coll));
  1147. /* copy */
  1148. MI_DECL
  1149. MI_COLLECTION * MI_PROC_EXPORT
  1150. mi_collection_copy ARGS((MI_CONNECTION *conn,
  1151. MI_COLLECTION *from));
  1152. /* fetch */
  1153. MI_DECL
  1154. mi_integer MI_PROC_EXPORT
  1155. mi_collection_fetch ARGS((MI_CONNECTION *conn,
  1156. MI_COLL_DESC *colldesc,
  1157. MI_CURSOR_ACTION action,
  1158. mi_integer jump,
  1159. MI_DATUM *retbuf,
  1160. mi_integer *ret_len));
  1161. /* insert */
  1162. MI_DECL
  1163. mi_integer MI_PROC_EXPORT
  1164. mi_collection_insert ARGS(( MI_CONNECTION *conn,
  1165. MI_COLL_DESC *colldesc,
  1166. MI_DATUM val,
  1167. MI_CURSOR_ACTION action,
  1168. mi_integer jump));
  1169. /* delete */
  1170. MI_DECL
  1171. mi_integer MI_PROC_EXPORT
  1172. mi_collection_delete ARGS((MI_CONNECTION *conn,
  1173. MI_COLL_DESC *colldesc,
  1174. MI_CURSOR_ACTION action,
  1175. mi_integer jump));
  1176. /* update */
  1177. MI_DECL
  1178. mi_integer MI_PROC_EXPORT
  1179. mi_collection_update ARGS((MI_CONNECTION *conn,
  1180. MI_COLL_DESC *colldesc,
  1181. MI_DATUM val,
  1182. MI_CURSOR_ACTION action,
  1183. mi_integer jump));
  1184. /* cardinality */
  1185. MI_DECL
  1186. mi_integer MI_PROC_EXPORT
  1187. mi_collection_card ARGS((MI_COLLECTION *coll,
  1188. mi_boolean *isnull));
  1189. /*
  1190. * Functions for conversion to and from a codeset for any locale specific
  1191. * DataBlades
  1192. */
  1193. MI_DECL
  1194. mi_integer MI_PROC_EXPORT
  1195. mi_convert_to_codeset ARGS((char *string,
  1196. char *locale_name));
  1197. MI_DECL
  1198. mi_integer MI_PROC_EXPORT
  1199. mi_convert_from_codeset ARGS((char *string,
  1200. char *locale_name));
  1201. /*
  1202. * Miscellaneous functions
  1203. */
  1204. MI_DECL
  1205. mi_integer MI_PROC_EXPORT
  1206. mi_library_version ARGS((char *buf,
  1207. mi_integer buflen));
  1208. MI_DECL
  1209. mi_boolean MI_PROC_EXPORT
  1210. mi_get_client_home ARGS((char *client_home_path,
  1211. mi_integer client_home_path_length));
  1212. MI_DECL
  1213. char * MI_PROC_EXPORT
  1214. mi_client_locale ARGS((void));
  1215. MI_DECL
  1216. mi_integer MI_PROC_EXPORT
  1217. mi_get_next_sysname ARGS((mi_integer *phandle, char *nameb,
  1218. mi_integer namebsize));
  1219. MI_DECL
  1220. mi_integer MI_PROC_EXPORT
  1221. mi_get_dbnames ARGS((MI_CONNECTION *conn,
  1222. char *dbnameps[], mi_integer dbnamepssize,
  1223. char *dbnamesb, mi_integer dbnamesbsize));
  1224. MI_DECL
  1225. mi_integer MI_PROC_EXPORT
  1226. mi_transaction_state ARGS((void));
  1227. /*
  1228. * Memory management
  1229. */
  1230. MI_DECL
  1231. MI_MEMORY_DURATION MI_PROC_EXPORT
  1232. mi_switch_mem_duration ARGS((MI_MEMORY_DURATION duration));
  1233. MI_DECL
  1234. mi_integer MI_PROC_EXPORT
  1235. mi_get_duration_size ARGS((MI_MEMORY_DURATION duration));
  1236. MI_DECL
  1237. MI_MEMORY_DURATION MI_PROC_EXPORT
  1238. mi_get_memptr_duration ARGS((void * memptr));
  1239. MI_DECL
  1240. void * MI_PROC_EXPORT
  1241. mi_alloc ARGS((mi_integer len));
  1242. MI_DECL
  1243. void * MI_PROC_EXPORT
  1244. mi_realloc ARGS((void *ptr, mi_integer size));
  1245. MI_DECL
  1246. mi_integer MI_PROC_EXPORT
  1247. mi_stack_limit ARGS((mi_integer size));
  1248. MI_DECL
  1249. void * MI_PROC_EXPORT
  1250. mi_dalloc ARGS((mi_integer len,
  1251. MI_MEMORY_DURATION duration));
  1252. MI_DECL
  1253. void * MI_PROC_EXPORT
  1254. mi_zalloc ARGS((mi_integer len));
  1255. MI_DECL
  1256. void MI_PROC_EXPORT
  1257. mi_free ARGS((void *ptr));
  1258. MI_DECL
  1259. void MI_PROC_EXPORT
  1260. mi_set_conn_flags ARGS((MI_CONNECTION *conn, mi_integer flags));
  1261. MI_DECL
  1262. mi_integer MI_PROC_EXPORT
  1263. mi_get_conn_flags ARGS((MI_CONNECTION *conn, mi_integer flags));
  1264. /*
  1265. * Client specific Routines
  1266. */
  1267. MI_DECL
  1268. mi_integer MI_PROC_EXPORT
  1269. mi_init_library ARGS((mi_integer flags));
  1270. MI_DECL
  1271. MI_CONNECTION * MI_PROC_EXPORT
  1272. mi_server_connect ARGS((MI_CONNECTION_INFO *conn_info));
  1273. MI_DECL
  1274. mi_integer MI_PROC_EXPORT
  1275. mi_login ARGS((MI_CONNECTION *conn,
  1276. const MI_DATABASE_INFO *dobbin));
  1277. MI_DECL
  1278. mi_integer MI_PROC_EXPORT
  1279. mi_dbcreate ARGS((MI_CONNECTION *conn,
  1280. const MI_DATABASE_INFO *dbinfo,
  1281. const char *dbspace,
  1282. MI_DBCREATE_FLAGS flag));
  1283. MI_DECL
  1284. mi_integer MI_PROC_EXPORT
  1285. mi_dbdrop ARGS((MI_CONNECTION *conn, const MI_DATABASE_INFO *dbinfo));
  1286. MI_DECL
  1287. mi_integer MI_PROC_EXPORT
  1288. mi_server_reconnect ARGS((MI_CONNECTION *conn));
  1289. MI_DECL
  1290. void MI_PROC_EXPORT
  1291. mi_cleanup ARGS((void));
  1292. MI_DECL
  1293. MI_ASYNC_ACTION MI_PROC_EXPORT
  1294. mi_processing_needed ARGS((MI_CONNECTION *miconn,
  1295. mi_integer flags));
  1296. MI_DECL
  1297. mi_integer MI_PROC_EXPORT
  1298. mi_event_pending ARGS((MI_CONNECTION *miconn));
  1299. MI_DECL
  1300. mi_integer MI_PROC_EXPORT
  1301. mi_unix_connection ARGS((MI_CONNECTION *miconn));
  1302. MI_DECL
  1303. mi_integer MI_PROC_EXPORT
  1304. mi_client ARGS((void));
  1305. MI_DECL
  1306. mi_integer MI_PROC_EXPORT
  1307. mi_register_function ARGS((MI_CONNECTION *conn,
  1308. MI_FUNCTYPE functype,
  1309. MI_C_FUNC_PTR func,
  1310. const mi_string *fsqlname,
  1311. const mi_string *functag,
  1312. mi_integer nargs,
  1313. mi_string *typenamearray[]));
  1314. /*
  1315. * Session, Thread, and Transaction Management
  1316. */
  1317. MI_DECL
  1318. MI_CONNECTION * MI_PROC_EXPORT
  1319. mi_open ARGS((const char *database_name,
  1320. const char *user_name,
  1321. const char *user_passwd));
  1322. MI_DECL
  1323. mi_integer MI_PROC_EXPORT
  1324. mi_close ARGS((MI_CONNECTION *conn));
  1325. /* For multi threaded environment - yield processing to other threads and
  1326. reschedule */
  1327. MI_DECL
  1328. void MI_PROC_EXPORT
  1329. mi_yield ARGS((void));
  1330. /* Expose mt_call routine */
  1331. MI_DECL
  1332. mi_integer MI_PROC_VAEXPORT
  1333. mi_call ARGS ((mi_integer *retval,
  1334. mi_integer (*func)(),
  1335. mi_integer nargs,
  1336. ...));
  1337. /* Expose mt_call_size routine */
  1338. MI_DECL
  1339. mi_integer MI_PROC_VAEXPORT
  1340. mi_call_size ARGS ((mulong stack_size,
  1341. mulong *retval,
  1342. muintptr (*func)(void),
  1343. mi_integer nargs,
  1344. ...));
  1345. /* check for user interrupt */
  1346. MI_DECL
  1347. mi_integer MI_PROC_EXPORT
  1348. mi_interrupt_check ARGS((void));
  1349. /* server state transitions */
  1350. MI_DECL
  1351. MI_TRANSITION_TYPE MI_PROC_EXPORT
  1352. mi_transition_type ARGS((MI_TRANSITION_DESC *data));
  1353. /*
  1354. * Query Processing
  1355. */
  1356. /* Parameterized queries and cursors */
  1357. MI_DECL
  1358. MI_STATEMENT * MI_PROC_EXPORT
  1359. mi_prepare ARGS((MI_CONNECTION *conn_desc,
  1360. mi_string *query,
  1361. mi_string *name));
  1362. MI_DECL
  1363. mi_integer MI_PROC_EXPORT
  1364. mi_exec_prepared_statement ARGS((MI_STATEMENT *stmtptr,
  1365. mi_integer control,
  1366. mi_integer are_binary,
  1367. mi_integer n_params,
  1368. MI_DATUM values[],
  1369. mi_integer lengths[],
  1370. mi_integer nulls[],
  1371. mi_string *types[],
  1372. mi_integer retlen,
  1373. mi_string *rettypes[]));
  1374. MI_DECL
  1375. mi_integer MI_PROC_EXPORT
  1376. mi_open_prepared_statement ARGS((MI_STATEMENT *stmt,
  1377. mi_integer control,
  1378. mi_integer are_binary,
  1379. mi_integer n_params,
  1380. MI_DATUM values[],
  1381. mi_integer lengths[],
  1382. mi_integer nulls[],
  1383. mi_string *types[],
  1384. mi_string *name,
  1385. mi_integer retlen,
  1386. mi_string *rettypes[]));
  1387. MI_DECL
  1388. mi_integer MI_PROC_EXPORT
  1389. mi_fetch_statement ARGS((MI_STATEMENT *stmtptr,
  1390. MI_CURSOR_ACTION orient,
  1391. mi_integer jump,
  1392. mi_integer count));
  1393. MI_DECL
  1394. mi_integer MI_PROC_EXPORT
  1395. mi_close_statement ARGS((MI_STATEMENT *stmtPtr));
  1396. MI_DECL
  1397. mi_integer MI_PROC_EXPORT
  1398. mi_recycle_statement ARGS((MI_STATEMENT *stmtPtr));
  1399. MI_DECL
  1400. mi_integer MI_PROC_EXPORT
  1401. mi_reset_statement ARGS((MI_STATEMENT *stmtPtr));
  1402. MI_DECL
  1403. mi_integer MI_PROC_EXPORT
  1404. mi_drop_prepared_statement ARGS((MI_STATEMENT *stmtPtr));
  1405. MI_DECL
  1406. MI_ROW_DESC * MI_PROC_EXPORT
  1407. mi_get_statement_row_desc ARGS((MI_STATEMENT *stmtPtr));
  1408. MI_DECL
  1409. mi_integer MI_PROC_EXPORT
  1410. mi_parameter_count ARGS((MI_STATEMENT *stmtPtr));
  1411. MI_DECL
  1412. mi_string * MI_PROC_EXPORT
  1413. mi_parameter_type_name ARGS((MI_STATEMENT *stmtPtr,
  1414. mi_integer paramNo));
  1415. MI_DECL
  1416. MI_TYPEID * MI_PROC_EXPORT
  1417. mi_parameter_type_id ARGS((MI_STATEMENT *stmtPtr,
  1418. mi_integer paramNo));
  1419. MI_DECL
  1420. mi_integer MI_PROC_EXPORT
  1421. mi_parameter_precision ARGS((MI_STATEMENT *stmtPtr,
  1422. mi_integer paramNo));
  1423. MI_DECL
  1424. mi_integer MI_PROC_EXPORT
  1425. mi_parameter_scale ARGS((MI_STATEMENT *stmtPtr,
  1426. mi_integer paramNo));
  1427. MI_DECL
  1428. mi_integer MI_PROC_EXPORT
  1429. mi_parameter_nullable ARGS((MI_STATEMENT *stmtPtr,
  1430. mi_integer paramNo));
  1431. /* Sending Commands */
  1432. MI_DECL
  1433. mi_integer MI_PROC_EXPORT
  1434. mi_exec ARGS((MI_CONNECTION *conn,
  1435. const mi_string *command,
  1436. mi_integer control));
  1437. MI_DECL
  1438. mi_integer MI_PROC_EXPORT
  1439. mi_query_finish ARGS((MI_CONNECTION *conn));
  1440. MI_DECL
  1441. mi_integer MI_PROC_EXPORT
  1442. mi_query_interrupt ARGS((MI_CONNECTION *conn,
  1443. mi_integer block_until_acknowledged));
  1444. /* Information about the current command */
  1445. MI_DECL
  1446. mi_integer MI_PROC_EXPORT
  1447. mi_binary_query ARGS((MI_CONNECTION *conn));
  1448. MI_DECL
  1449. mi_integer MI_PROC_EXPORT
  1450. mi_command_is_finished ARGS((MI_CONNECTION *conn));
  1451. MI_DECL
  1452. mi_string * MI_PROC_EXPORT
  1453. mi_current_command_name ARGS((MI_CONNECTION *conn));
  1454. /* General information about the results */
  1455. MI_DECL
  1456. char * MI_PROC_EXPORT
  1457. mi_result_command_name ARGS((MI_CONNECTION *conn));
  1458. MI_DECL
  1459. mi_string * MI_PROC_EXPORT
  1460. mi_statement_command_name ARGS((MI_STATEMENT *stmt));
  1461. MI_DECL
  1462. mi_integer MI_PROC_EXPORT
  1463. mi_get_result ARGS((MI_CONNECTION *conn));
  1464. MI_DECL
  1465. mi_integer MI_PROC_EXPORT
  1466. mi_result_row_count ARGS((MI_CONNECTION *conn));
  1467. /* return SERIAL of latest insert */
  1468. MI_DECL
  1469. mi_integer MI_PROC_EXPORT
  1470. mi_last_serial ARGS((MI_CONNECTION *conn, mi_integer *out));
  1471. MI_DECL
  1472. mi_integer MI_PROC_EXPORT
  1473. mi_last_serial8 ARGS((MI_CONNECTION *conn, mi_int8 *out));
  1474. /*
  1475. * Savesets
  1476. */
  1477. MI_DECL
  1478. MI_ROW * MI_PROC_EXPORT
  1479. mi_save_set_get_first ARGS((MI_SAVE_SET *save_set,
  1480. mi_integer *error));
  1481. MI_DECL
  1482. MI_ROW * MI_PROC_EXPORT
  1483. mi_save_set_get_last ARGS((MI_SAVE_SET *save_set,
  1484. mi_integer *error));
  1485. MI_DECL
  1486. MI_ROW * MI_PROC_EXPORT
  1487. mi_save_set_get_next ARGS((MI_SAVE_SET *save_set,
  1488. mi_integer *error));
  1489. MI_DECL
  1490. MI_ROW * MI_PROC_EXPORT
  1491. mi_save_set_get_previous ARGS((MI_SAVE_SET *save_set,
  1492. mi_integer *error));
  1493. MI_DECL
  1494. MI_ROW * MI_PROC_EXPORT
  1495. mi_save_set_insert ARGS((MI_SAVE_SET *save_set,
  1496. MI_ROW *row));
  1497. MI_DECL
  1498. MI_SAVE_SET * MI_PROC_EXPORT
  1499. mi_save_set_create ARGS((MI_CONNECTION *conn));
  1500. MI_DECL
  1501. mi_integer MI_PROC_EXPORT
  1502. mi_save_set_count ARGS((MI_SAVE_SET *save_set));
  1503. MI_DECL
  1504. mi_integer MI_PROC_EXPORT
  1505. mi_save_set_delete ARGS((MI_ROW *row));
  1506. MI_DECL
  1507. mi_integer MI_PROC_EXPORT
  1508. mi_save_set_destroy ARGS((MI_SAVE_SET *save_set));
  1509. MI_DECL
  1510. mi_integer MI_PROC_EXPORT
  1511. mi_save_set_member ARGS((MI_ROW *row));
  1512. /*
  1513. * Get id (currently for session and statement)
  1514. */
  1515. MI_DECL
  1516. mi_integer MI_PROC_EXPORT
  1517. mi_get_id ARGS((MI_CONNECTION *conn_desc, MI_ID id));
  1518. MI_DECL
  1519. mi_char* MI_PROC_EXPORT
  1520. mi_get_db_locale ARGS((void));
  1521. MI_DECL
  1522. mi_integer MI_PROC_EXPORT
  1523. mi_get_transaction_id ARGS((void));
  1524. /*
  1525. * Error and exception handling
  1526. */
  1527. MI_DECL
  1528. MI_ERROR_DESC * MI_PROC_EXPORT
  1529. mi_error_desc_copy ARGS((MI_ERROR_DESC *source));
  1530. MI_DECL
  1531. MI_CALLBACK_HANDLE * MI_PROC_EXPORT
  1532. mi_register_callback_with_options ARGS((MI_CONNECTION *conn,
  1533. MI_EVENT_TYPE event_type,
  1534. MI_CALLBACK_FUNC func,
  1535. void *user_data,
  1536. MI_CALLBACK_HANDLE *parent,
  1537. mi_integer flags));
  1538. MI_DECL
  1539. MI_CALLBACK_HANDLE * MI_PROC_EXPORT
  1540. mi_register_callback ARGS((MI_CONNECTION *conn,
  1541. MI_EVENT_TYPE event_type,
  1542. MI_CALLBACK_FUNC func,
  1543. void *user_data,
  1544. MI_CALLBACK_HANDLE *parent));
  1545. MI_DECL
  1546. mi_integer MI_PROC_EXPORT
  1547. mi_retrieve_callback ARGS((MI_CONNECTION *conn,
  1548. MI_EVENT_TYPE event_type,
  1549. MI_CALLBACK_HANDLE *handle,
  1550. MI_CALLBACK_FUNC *retfunc,
  1551. void **ret_user_data));
  1552. MI_DECL
  1553. mi_integer MI_PROC_EXPORT
  1554. mi_unregister_callback ARGS((MI_CONNECTION *conn,
  1555. MI_EVENT_TYPE event_type,
  1556. MI_CALLBACK_HANDLE *handle));
  1557. MI_DECL
  1558. mi_integer MI_PROC_EXPORT
  1559. mi_disable_callback ARGS((MI_CONNECTION *conn,
  1560. MI_EVENT_TYPE event_type,
  1561. MI_CALLBACK_HANDLE *handle));
  1562. MI_DECL
  1563. mi_integer MI_PROC_EXPORT
  1564. mi_disable_callbacks ARGS((void));
  1565. MI_DECL
  1566. mi_integer MI_PROC_EXPORT
  1567. mi_enable_callback ARGS((MI_CONNECTION *conn,
  1568. MI_EVENT_TYPE event_type,
  1569. MI_CALLBACK_HANDLE *handle));
  1570. MI_DECL
  1571. mi_integer MI_PROC_EXPORT
  1572. mi_enable_callbacks ARGS((void));
  1573. MI_DECL
  1574. mi_integer MI_PROC_EXPORT
  1575. mi_error_desc_destroy ARGS((MI_ERROR_DESC *desc));
  1576. MI_DECL
  1577. mi_integer MI_PROC_EXPORT
  1578. mi_error_desc_is_copy ARGS((MI_ERROR_DESC *desc));
  1579. MI_DECL
  1580. mi_integer MI_PROC_EXPORT
  1581. mi_error_level ARGS((MI_ERROR_DESC *estruct));
  1582. MI_DECL
  1583. mi_integer MI_PROC_EXPORT
  1584. mi_error_sqlcode ARGS((MI_ERROR_DESC *desc,
  1585. mi_integer *sqlcodep));
  1586. MI_DECL
  1587. mi_integer MI_PROC_EXPORT
  1588. mi_error_sql_state ARGS((MI_ERROR_DESC *desc,
  1589. char *buf,
  1590. mi_integer buflen));
  1591. MI_DECL
  1592. mi_integer MI_PROC_VAEXPORT
  1593. mi_db_error_raise ARGS((MI_CONNECTION *conn,
  1594. mi_integer msg_type,
  1595. char *msg,
  1596. ...));
  1597. MI_DECL
  1598. mi_integer MI_PROC_VAEXPORT
  1599. mi_exception_raise ARGS((MI_CONNECTION *conn,
  1600. mi_integer sqlcode,
  1601. mi_integer isamcode,
  1602. char *msg
  1603. ));
  1604. MI_DECL
  1605. mi_integer MI_PROC_VAEXPORT
  1606. mi_vti_error_raise ARGS((MI_CONNECTION *conn,
  1607. mi_integer sqlcode,
  1608. mi_integer isamcode
  1609. ));
  1610. MI_DECL
  1611. void MI_PROC_EXPORT
  1612. mi_default_callback ARGS((MI_EVENT_TYPE type,
  1613. MI_CONNECTION *conn,
  1614. void *cb_data,
  1615. void *user_data));
  1616. MI_DECL
  1617. void MI_PROC_EXPORT
  1618. mi_errmsg ARGS((MI_ERROR_DESC *desc,
  1619. char *buf,
  1620. mi_integer buflen));
  1621. MI_DECL
  1622. mi_integer MI_PROC_EXPORT
  1623. mi_error_desc_finish ARGS((MI_ERROR_DESC *desc));
  1624. MI_DECL
  1625. MI_ERROR_DESC * MI_PROC_EXPORT
  1626. mi_error_desc_next ARGS((MI_ERROR_DESC *desc));
  1627. /*
  1628. * Special secret interfaces for internal development
  1629. * Use at your own risk.
  1630. */
  1631. MI_DECL
  1632. mi_integer MI_PROC_EXPORT
  1633. mi_funcmap_get ARGS((MI_FUNC_DESC *fdesc, void **mhandle, void **fhandle));
  1634. MI_DECL
  1635. MI_C_FUNC_PTR MI_PROC_EXPORT
  1636. mi_funcaddr_get ARGS((void *mhandle, void *fhandle));
  1637. MI_DECL
  1638. mi_integer MI_PROC_EXPORT
  1639. mi_funcaddr_release ARGS((void *mhandle, void *fhandle));
  1640. MI_DECL
  1641. mi_integer MI_PROC_EXPORT
  1642. mi_disable_sql_logical_char_db ARGS((void));
  1643. MI_DECL
  1644. mi_integer MI_PROC_EXPORT
  1645. mi_enable_sql_logical_char_db ARGS((mi_integer opt));
  1646. MI_DECL
  1647. mi_integer MI_PROC_EXPORT
  1648. mi_task_process_request ARGS((char *tk_p_name, char *tk_p_args));
  1649. MI_DECL
  1650. mi_integer MI_PROC_EXPORT
  1651. mi_async_task_process_request ARGS((char *tk_p_name, char *tk_p_args));
  1652. /*
  1653. * Operating System File Interface
  1654. */
  1655. MI_DECL
  1656. mi_integer MI_PROC_EXPORT
  1657. mi_file_allocate ARGS((mi_integer n));
  1658. MI_DECL
  1659. mi_integer MI_PROC_EXPORT
  1660. mi_file_open ARGS((const char *name,
  1661. mi_integer flags,
  1662. mi_integer mode));
  1663. MI_DECL
  1664. mi_integer MI_PROC_EXPORT
  1665. mi_file_errno(void);
  1666. MI_DECL
  1667. mi_integer MI_PROC_EXPORT
  1668. mi_file_read ARGS((mi_integer fd,
  1669. char *buf,
  1670. mi_integer amnt));
  1671. MI_DECL
  1672. mi_integer MI_PROC_EXPORT
  1673. mi_file_seek ARGS((mi_integer fd,
  1674. mi_integer offset,
  1675. mi_integer whence));
  1676. MI_DECL
  1677. mi_integer MI_PROC_EXPORT
  1678. mi_file_seek8 ARGS((mi_integer fd,
  1679. mi_int8 *offset8,
  1680. mi_int8 *newpos8,
  1681. mi_integer whence));
  1682. MI_DECL
  1683. mi_integer MI_PROC_EXPORT
  1684. mi_file_sync ARGS((mi_integer fd));
  1685. MI_DECL
  1686. mi_integer MI_PROC_EXPORT
  1687. mi_file_tell ARGS((mi_integer fd));
  1688. MI_DECL
  1689. mi_integer MI_PROC_EXPORT
  1690. mi_file_tell8 ARGS((mi_integer fd,
  1691. mi_int8 *tellpos8));
  1692. MI_DECL
  1693. mi_integer MI_PROC_EXPORT
  1694. mi_file_unlink ARGS((mi_integer fd));
  1695. MI_DECL
  1696. mi_integer MI_PROC_EXPORT
  1697. mi_file_write ARGS((mi_integer fd,
  1698. const char *buf,
  1699. mi_integer amnt));
  1700. MI_DECL
  1701. void MI_PROC_EXPORT
  1702. mi_file_close ARGS((mi_integer fd));
  1703. /*
  1704. * Fastpath
  1705. */
  1706. MI_DECL
  1707. MI_DATUM MI_PROC_VAEXPORT
  1708. mi_routine_exec ARGS((MI_CONNECTION *conn,
  1709. MI_FUNC_DESC *fdesc,
  1710. mi_integer *error,
  1711. ...));
  1712. MI_DECL
  1713. mi_integer MI_PROC_EXPORT
  1714. mi_routine_end ARGS((MI_CONNECTION *conn,
  1715. MI_FUNC_DESC *fdesc));
  1716. MI_DECL
  1717. MI_FUNC_DESC * MI_PROC_EXPORT
  1718. mi_routine_get ARGS((MI_CONNECTION *conn,
  1719. mi_integer flags,
  1720. char *sig));
  1721. MI_DECL
  1722. MI_FUNC_DESC * MI_PROC_EXPORT
  1723. mi_routine_get_by_db_typeid ARGS((MI_CONNECTION *conn,
  1724. char *dbname,
  1725. MI_UDR_TYPE udr_type,
  1726. char *udr_name,
  1727. char *owner,
  1728. mi_integer arg_count,
  1729. MI_TYPEID *arg_types));
  1730. MI_DECL
  1731. MI_FUNC_DESC * MI_PROC_EXPORT
  1732. mi_routine_get_by_typeid ARGS((MI_CONNECTION *conn,
  1733. MI_UDR_TYPE udr_type,
  1734. char *udr_name,
  1735. char *owner,
  1736. mi_integer arg_count,
  1737. MI_TYPEID *arg_types));
  1738. MI_DECL
  1739. mi_integer MI_PROC_EXPORT
  1740. mi_routine_id_get ARGS((MI_CONNECTION *conn,
  1741. MI_FUNC_DESC *func_desc));
  1742. MI_DECL
  1743. MI_FUNC_DESC * MI_PROC_EXPORT
  1744. mi_func_desc_by_typeid ARGS((MI_CONNECTION *conn,
  1745. mi_funcid routine_id));
  1746. MI_DECL
  1747. MI_FUNC_DESC * MI_PROC_EXPORT
  1748. mi_cast_get ARGS((MI_CONNECTION *conn,
  1749. MI_TYPEID *from_type,
  1750. MI_TYPEID *to_type,
  1751. mi_char *cast_status));
  1752. MI_DECL
  1753. MI_FUNC_DESC * MI_PROC_EXPORT
  1754. mi_td_cast_get ARGS((MI_CONNECTION *conn,
  1755. MI_TYPE_DESC *from_tdesc,
  1756. MI_TYPE_DESC *to_tdesc,
  1757. mi_char *cast_status));
  1758. MI_DECL
  1759. MI_FPARAM * MI_PROC_EXPORT
  1760. mi_fparam_get ARGS((MI_CONNECTION *conn,
  1761. MI_FUNC_DESC *func_desc));
  1762. MI_DECL
  1763. MI_FPARAM * MI_PROC_EXPORT
  1764. mi_fparam_get_current ARGS((void));
  1765. MI_DECL
  1766. mi_string * MI_PROC_EXPORT
  1767. mi_fp_funcname ARGS((MI_FPARAM *fparamPtr));
  1768. MI_DECL
  1769. mi_unsigned_char1 * MI_PROC_EXPORT
  1770. mi_get_type ARGS((mi_unsigned_char1 *dataPtr, MI_TYPEID *typePtr));
  1771. MI_DECL
  1772. mi_unsigned_char1 * MI_PROC_EXPORT
  1773. mi_put_type ARGS((mi_unsigned_char1 *dataPtr, MI_TYPEID *typePtr));
  1774. /*
  1775. * MI_FPARAM allocating, copying, and freeing routines
  1776. */
  1777. MI_DECL
  1778. MI_FPARAM * MI_PROC_EXPORT
  1779. mi_fparam_allocate ARGS((mi_integer nargs));
  1780. MI_DECL
  1781. MI_FPARAM * MI_PROC_EXPORT
  1782. mi_fparam_copy ARGS((MI_FPARAM *fp_in));
  1783. MI_DECL
  1784. mi_integer MI_PROC_EXPORT
  1785. mi_fparam_free ARGS((MI_FPARAM *fp));
  1786. /*
  1787. * Routines for function argument API.
  1788. */
  1789. MI_DECL
  1790. mi_integer MI_PROC_EXPORT
  1791. mi_funcarg_get_routine_id ARGS((MI_FUNCARG *fa));
  1792. MI_DECL
  1793. mi_string * MI_PROC_EXPORT
  1794. mi_funcarg_get_routine_name ARGS((MI_FUNCARG *fa));
  1795. MI_DECL
  1796. MI_FUNCARG_TYPE MI_PROC_EXPORT
  1797. mi_funcarg_get_argtype ARGS((MI_FUNCARG *fa));
  1798. MI_DECL
  1799. MI_TYPEID *MI_PROC_EXPORT
  1800. mi_funcarg_get_datatype ARGS((MI_FUNCARG *fa));
  1801. MI_DECL
  1802. mi_integer MI_PROC_EXPORT
  1803. mi_funcarg_get_datalen ARGS((MI_FUNCARG *fa));
  1804. MI_DECL
  1805. mi_boolean MI_PROC_EXPORT
  1806. mi_funcarg_isnull ARGS((MI_FUNCARG *fa));
  1807. MI_DECL
  1808. MI_DATUM MI_PROC_EXPORT
  1809. mi_funcarg_get_constant ARGS((MI_FUNCARG *fa));
  1810. MI_DECL
  1811. mi_integer MI_PROC_EXPORT
  1812. mi_funcarg_get_tabid ARGS((MI_FUNCARG *fa));
  1813. MI_DECL
  1814. mi_integer MI_PROC_EXPORT
  1815. mi_funcarg_get_colno ARGS((MI_FUNCARG *fa));
  1816. MI_DECL
  1817. mi_bitvarying * MI_PROC_EXPORT
  1818. mi_funcarg_get_distrib ARGS((MI_FUNCARG *fa));
  1819. /* dlopen wrapper prototypes */
  1820. MI_DECL
  1821. void * MI_PROC_EXPORT
  1822. mi_so_load ARGS((char *name, char *vpclass ));
  1823. MI_DECL
  1824. void * MI_PROC_EXPORT
  1825. mi_so_handle ARGS(( char *name ));
  1826. MI_DECL
  1827. void MI_PROC_EXPORT
  1828. mi_so_unload ARGS(( void *mhandle ));
  1829. MI_DECL
  1830. void * MI_PROC_EXPORT
  1831. mi_so_symbol ARGS(( void *mhandle, char *symbol ));
  1832. MI_DECL
  1833. mi_integer MI_PROC_EXPORT
  1834. mi_udr_lock ARGS(( mi_integer action ));
  1835. MI_DECL
  1836. mi_integer MI_PROC_EXPORT
  1837. mi_vpinfo_vpid ARGS ((void));
  1838. MI_DECL
  1839. mi_integer MI_PROC_EXPORT
  1840. mi_vpinfo_classid ARGS ((void));
  1841. MI_DECL
  1842. mi_integer MI_PROC_EXPORT
  1843. mi_vpinfo_isnoyield ARGS ((void));
  1844. MI_DECL
  1845. const char * MI_PROC_EXPORT
  1846. mi_class_name ARGS ((mi_integer classid));
  1847. MI_DECL
  1848. mi_integer MI_PROC_EXPORT
  1849. mi_class_id ARGS ((const char * classname));
  1850. MI_DECL
  1851. mi_integer MI_PROC_EXPORT
  1852. mi_class_maxvps ARGS ((mi_integer classid, mi_integer * error));
  1853. MI_DECL
  1854. mi_integer MI_PROC_EXPORT
  1855. mi_class_numvp ARGS ((mi_integer classid));
  1856. MI_DECL
  1857. mi_integer MI_PROC_EXPORT
  1858. mi_call_on_vp ARGS (( mi_integer vpid, mi_integer *retval,
  1859. mi_integer (*func)(), mi_integer nargs, ... ));
  1860. MI_DECL
  1861. mi_integer MI_PROC_EXPORT
  1862. mi_switch_vpid ARGS (( mi_integer vpid));
  1863. MI_DECL
  1864. mi_integer MI_PROC_EXPORT
  1865. mi_process_exec ARGS (( char* argv[] ));
  1866. MI_DECL
  1867. mi_integer MI_PROC_EXPORT
  1868. mi_system ARGS ((const mi_char* cmd));
  1869. MI_DECL
  1870. mi_integer MI_PROC_EXPORT
  1871. mi_module_lock ARGS(( mi_integer action ));
  1872. MI_DECL
  1873. mi_string * MI_PROC_EXPORT
  1874. mi_trigger_tabname ARGS ((mi_integer flags));
  1875. MI_DECL
  1876. mi_integer MI_PROC_EXPORT
  1877. mi_trigger_event ARGS ((void));
  1878. MI_DECL
  1879. mi_integer MI_PROC_EXPORT
  1880. mi_trigger_level ARGS ((void));
  1881. MI_DECL
  1882. mi_string * MI_PROC_EXPORT
  1883. mi_trigger_name ARGS ((void));
  1884. MI_DECL
  1885. MI_ROW * MI_PROC_EXPORT
  1886. mi_trigger_get_old_row ARGS ((void));
  1887. MI_DECL
  1888. MI_ROW * MI_PROC_EXPORT
  1889. mi_trigger_get_new_row ARGS ((void));
  1890. MI_DECL
  1891. mi_integer MI_PROC_EXPORT
  1892. mi_hdr_status ARGS ((void));
  1893. MI_DECL
  1894. mi_integer MI_PROC_EXPORT
  1895. mi_hdr_exefunc ARGS((MI_CONNECTION *conn,
  1896. mi_char *func_name,
  1897. mi_char *data));
  1898. /*
  1899. * Prototype for stack estimation function
  1900. */
  1901. MI_DECL
  1902. mi_integer MI_PROC_EXPORT
  1903. mi_print_stack(void);
  1904. MI_DECL
  1905. mi_integer MI_PROC_EXPORT
  1906. mi_xa_register_xadatasource ARGS ((mi_string *));
  1907. MI_DECL
  1908. mi_integer MI_PROC_EXPORT
  1909. mi_xa_unregister_xadatasource ARGS ((mi_string *));
  1910. MI_DECL
  1911. mi_integer MI_PROC_EXPORT
  1912. mi_xa_get_xadatasource_rmid ARGS ((mi_string *));
  1913. MI_DECL
  1914. XID * MI_PROC_EXPORT
  1915. mi_xa_get_current_xid ARGS ((void));
  1916. MI_DECL
  1917. int MI_PROC_EXPORT
  1918. ax_reg ARGS ((int rmid, XID *xid, int4 flags));
  1919. MI_DECL
  1920. int MI_PROC_EXPORT
  1921. ax_unreg ARGS ((int rmid, int4 flags));
  1922. MI_DECL
  1923. mi_integer MI_PROC_VAEXPORT
  1924. mi_sql_error_raise(MI_CONNECTION *conn, mi_integer sqlcode, const char *msg);
  1925. MI_DECL
  1926. mi_integer MI_PROC_EXPORT
  1927. mi_datetime_compare ARGS ((mi_datetime *dtime1, mi_datetime *dtime2,
  1928. mi_integer *retval));
  1929. MI_DECL
  1930. mi_integer MI_PROC_EXPORT
  1931. mi_interval_compare ARGS ((mi_interval *inv1, mi_interval *inv2,
  1932. mi_integer *retval));
  1933. /*
  1934. * Prototype for AQT handling
  1935. */
  1936. MI_DECL
  1937. mi_integer MI_PROC_EXPORT
  1938. mi_aqt_register
  1939. ARGS ((
  1940. MI_CONNECTION *conn,
  1941. const char * owner,
  1942. const char * tabname,
  1943. const char * accelerator_instance,
  1944. const char * accelerator_datamart
  1945. ));
  1946. MI_DECL
  1947. mi_integer MI_PROC_EXPORT
  1948. mi_aqt_setVirtual
  1949. ARGS ((
  1950. MI_CONNECTION *conn,
  1951. const char * owner,
  1952. const char * tabname
  1953. ));
  1954. MI_DECL
  1955. mi_integer MI_PROC_EXPORT
  1956. mi_aqt_enable
  1957. ARGS ((
  1958. MI_CONNECTION *conn,
  1959. const char * owner,
  1960. const char * tabname,
  1961. dtime_t * timeStamp
  1962. ));
  1963. MI_DECL
  1964. mi_integer MI_PROC_EXPORT
  1965. mi_aqt_disable
  1966. ARGS ((
  1967. MI_CONNECTION *conn,
  1968. const char * owner,
  1969. const char * tabname
  1970. ));
  1971. MI_DECL
  1972. mi_integer MI_PROC_EXPORT
  1973. mi_protect_routine
  1974. ARGS ((
  1975. char * name
  1976. ));
  1977. MI_DECL
  1978. mi_unsigned_char1 MI_PROC_EXPORT
  1979. mi_fp_argisinput ARGS((MI_FPARAM *fparamPtr,
  1980. mi_integer arg));
  1981. MI_DECL
  1982. mi_unsigned_char1 MI_PROC_EXPORT
  1983. mi_fp_argisoutput ARGS((MI_FPARAM *fparamPtr,
  1984. mi_integer arg));
  1985. MI_DECL
  1986. mi_unsigned_integer MI_PROC_EXPORT
  1987. mi_row_rowid ARGS((MI_ROW *row));
  1988. MI_DECL
  1989. mi_integer MI_PROC_EXPORT
  1990. mi_row_fragid ARGS((MI_ROW *row));
  1991. EXTERNC_END
  1992. #endif /* _MILIB_H_ */