mysql3types.inc 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. {
  2. Contains the types needed for use with MySQL v3
  3. }
  4. {
  5. Adapted from mysql3.pp by Bram Kuijvenhoven (Hexis BV, The Netherlands)
  6. }
  7. type
  8. my_bool = byte;
  9. gptr = pchar;
  10. Socket = Longint;
  11. PCardinal = ^Cardinal;
  12. {$ifdef linux}
  13. Var
  14. mysql_port : cardinal; external name 'mysql_port';
  15. mysql_unix_port : pchar; external name 'mysql_unix_port';
  16. {$endif}
  17. {$ifdef darwin}
  18. Var
  19. mysql_port : cardinal; external mysqllib name 'mysql_port';
  20. mysql_unix_port : pchar; external mysqllib name 'mysql_unix_port';
  21. {$endif}
  22. {
  23. #define IS_PRI_KEY(n) ((n) & PRI_KEY_FLAG)
  24. #define IS_NOT_NULL(n) ((n) & NOT_NULL_FLAG)
  25. #define IS_BLOB(n) ((n) & BLOB_FLAG)
  26. #define IS_NUM(t) ((t) <= FIELD_TYPE_INT24)
  27. }
  28. Type
  29. st_mysql_field = record
  30. name : Pchar; { Name of column }
  31. table : pchar; { Table of column if column was a field }
  32. def: pchar; { Default value (set by mysql_list_fields) }
  33. ftype : enum_field_types; { Type of field. See mysql_com.h for types }
  34. length : cardinal; { Width of column }
  35. max_length : cardinal; { Max width of selected set }
  36. flags : cardinal; { Div flags }
  37. decimals : cardinal; { Number of decimals in field }
  38. end;
  39. TMYSQL_FIELD = st_mysql_field;
  40. PMYSQL_FIELD = ^TMYSQL_FIELD;
  41. TMYSQL_ROW = PPchar; { return data as array of strings }
  42. TMYSQL_FIELD_OFFSET = cardinal; { offset to current field }
  43. {$ifndef oldmysql}
  44. my_ulonglong=qword;
  45. {$else}
  46. my_longlong=cardinal;
  47. {$endif}
  48. PST_MYSQL_Rows = ^st_mysql_rows;
  49. st_mysql_rows = Record
  50. next : pst_mysql_rows; { list of rows }
  51. Data : TMYSQL_ROW;
  52. end;
  53. TMYSQL_ROWS = st_mysql_rows;
  54. PMYSQL_ROWS = ^TMYSQL_ROWS;
  55. TMYSQL_ROW_OFFSET = PMYSQL_ROWS; { offset to current row }
  56. st_mysql_data = record
  57. rows : my_ulonglong;
  58. fields : cardinal;
  59. data : PMYSQL_ROWS;
  60. alloc : TMEM_ROOT;
  61. end;
  62. TMYSQL_DATA = st_mysql_data;
  63. PMYSQL_DATA = ^TMYSQL_DATA;
  64. st_mysql_options = record
  65. connect_timeout,client_flag : cardinal;
  66. compress,named_pipe : my_bool;
  67. port : cardinal;
  68. host,init_command,user,password,unix_socket,db : pchar;
  69. my_cnf_file,my_cnf_group : pchar;
  70. {$ifndef use_mysql_321}
  71. charset_dir, charset_name : pchar;
  72. use_ssl : my_bool;
  73. ssl_key, ssl_cert, ssl_ca, ssl_capath : pchar;
  74. {$endif}
  75. end;
  76. {$ifndef use_mysql_321}
  77. mysql_option = (MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS,
  78. MYSQL_OPT_NAMED_PIPE, MYSQL_INIT_COMMAND,
  79. MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP,
  80. MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME);
  81. {$endif}
  82. mysql_status = (MYSQL_STATUS_READY,
  83. MYSQL_STATUS_GET_RESULT,
  84. MYSQL_STATUS_USE_RESULT);
  85. {$ifndef use_mysql_321}
  86. (*
  87. charset_info_st = Record
  88. number : cardinal;
  89. name : pchar;
  90. ctype : pointer {uchar*};
  91. to_lower : pointer {uchar*};
  92. to_upper : pointer {uchar*};
  93. sort_order : pointer {uchar*};
  94. strxfrm_multiply : cardinal;
  95. { einige nicht näher definierte Felder }
  96. a, strxfrm, strnncoll, strnxfrm, like_range : pointer;
  97. mbmaxlen : cardinal;
  98. ismbchar, ismbhead, mbcharlen : pointer;
  99. end;
  100. *)
  101. {$endif}
  102. st_mysql = Record
  103. NET : TNET; { Communication parameters }
  104. {$ifndef use_mysql_321}
  105. connector_fd : gptr;
  106. {$endif}
  107. host,user,passwd,unix_socket,server_version,host_info,
  108. info,db : pchar;
  109. port,client_flag,server_capabilities : cardinal;
  110. protocol_version : cardinal;
  111. field_count : cardinal;
  112. {$ifndef use_mysql_321}
  113. server_status : cardinal;
  114. {$endif}
  115. thread_id : ptruint; { Id for connection in server }
  116. affected_rows : my_ulonglong;
  117. insert_id : my_ulonglong; { id if insert on table with NEXTNR }
  118. extra_info : my_ulonglong; { Used by mysqlshow }
  119. packet_length : sizeint;
  120. status : mysql_status;
  121. fields : PMYSQL_FIELD;
  122. field_alloc : TMEM_ROOT;
  123. free_me : my_bool; { If free in mysql_close }
  124. reconnect : my_bool; { set to 1 if automatic reconnect }
  125. options : st_mysql_options;
  126. {$ifndef use_mysql_321}
  127. scramble_buf : array[0..8] of char;
  128. charset : pointer { struct charset_info_st};
  129. server_language : cardinal;
  130. {$endif}
  131. end;
  132. TMYSQL = st_mysql;
  133. PMYSQL = ^TMYSQL;
  134. st_mysql_res = record
  135. row_count : my_ulonglong;
  136. field_count, current_field : cardinal;
  137. fields : PMYSQL_FIELD;
  138. data : PMYSQL_DATA;
  139. data_cursor : PMYSQL_ROWS;
  140. field_alloc : TMEM_ROOT;
  141. row : TMYSQL_ROW; { If unbuffered read }
  142. current_row : TMYSQL_ROW; { buffer to current row }
  143. lengths : psizeint; { column lengths of current row }
  144. handle : PMYSQL; { for unbuffered reads }
  145. eof : my_bool; { Used my mysql_fetch_row }
  146. end;
  147. TMYSQL_RES = st_mysql_res;
  148. PMYSQL_RES = ^TMYSQL_RES;
  149. { Translated macros }
  150. Function mysql_reload(mysql : PMYSQL) : Longint;