* Added MySQL 5.7 header translation from Laco (bug ID 28417)

git-svn-id: trunk@31218 -
This commit is contained in:
michael 2015-07-22 18:59:41 +00:00
parent 433d0ce4f6
commit 4442ecc863
4 changed files with 107 additions and 39 deletions

1
.gitattributes vendored
View File

@ -5819,6 +5819,7 @@ packages/mysql/src/mysql51emb.pp svneol=native#text/plain
packages/mysql/src/mysql55.pp svneol=native#text/plain
packages/mysql/src/mysql55dyn.pp svneol=native#text/plain
packages/mysql/src/mysql56dyn.pp svneol=native#text/plain
packages/mysql/src/mysql57dyn.pp svneol=native#text/plain
packages/ncurses/Makefile svneol=native#text/plain
packages/ncurses/Makefile.fpc svneol=native#text/plain
packages/ncurses/Makefile.fpc.fpcmake svneol=native#text/plain

View File

@ -141,6 +141,13 @@ begin
end;
T.ResourceStrings := True;
T:=P.Targets.AddUnit('mysql57dyn.pp');
with T.Dependencies do
begin
AddInclude('mysql.inc');
end;
T.ResourceStrings := True;
P.ExamplePath.Add('examples');
P.Targets.AddExampleProgram('testdb3.pp');
P.Targets.AddExampleProgram('testdb4.pp');

View File

@ -23,15 +23,17 @@ interface
{$ifdef Load_Dynamically}{$define LinkDynamically}{$endif}
uses
{$IFDEF LinkDynamically}
sysutils,
sysutils,
{$ENDIF}
dynlibs,ctypes;
ctypes, dynlibs;
{$IFDEF Unix}
{$DEFINE extdecl:=cdecl}
const
mysqllib = 'libmysqlclient.'+sharedsuffix;
{$IF DEFINED(mysql55) or DEFINED(mysql56)}
{$IF DEFINED(mysql57)}
mysqlvlib = mysqllib+'.20';
{$ELSEIF DEFINED(mysql55) or DEFINED(mysql56)}
mysqlvlib = mysqllib+'.18';
{$ELSEIF DEFINED(mysql51)}
mysqlvlib = mysqllib+'.16';
@ -51,6 +53,10 @@ uses
{$ENDIF}
{$IFDEF mysql57}
{$DEFINE mysql56}
{$ENDIF mysql57}
{$IFDEF mysql56}
{$DEFINE mysql55}
{$ENDIF mysql56}
@ -88,8 +94,8 @@ uses
type
my_bool = cchar;
Pmy_bool = ^my_bool;
// pppchar = ^ppchar;
// ppbyte = ^pbyte;
ppcchar = ^pcchar;
psize_t = pointer;
PVIO = Pointer;
@ -111,6 +117,7 @@ uses
HOSTNAME_LENGTH = 60;
{$IFDEF mysql51}
SYSTEM_CHARSET_MBMAXLEN = 3;
FILENAME_CHARSET_MBMAXLEN = 5;
NAME_CHAR_LEN = 64; // Field/table name length
USERNAME_CHAR_LENGTH = 16;
NAME_LEN = (NAME_CHAR_LEN*SYSTEM_CHARSET_MBMAXLEN);
@ -133,6 +140,12 @@ uses
INDEX_COMMENT_MAXLEN = 1024;
TABLE_PARTITION_COMMENT_MAXLEN = 1024;
{ Maximum length of protocol packet. }
{ OK packet length limit also restricted to this value as any length greater
than this value will have first byte of OK packet to be 254 thus does not
provide a means to identify if this is OK or EOF packet. }
MAX_PACKET_LENGTH = (256*256*256-1);
const
MYSQL_NAMEDPIPE = 'MySQL';
MYSQL_SERVICENAME = 'MySQL';
@ -152,6 +165,9 @@ uses
COM_DAEMON,
{$IFDEF mysql56}
COM_BINLOG_DUMP_GTID,
{$IFDEF mysql57}
COM_RESET_CONNECTION,
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ELSE}
@ -160,6 +176,7 @@ uses
COM_RESET_STMT,COM_SET_OPTION,
{$ENDIF}
{$ENDIF}
{ Must be last }
COM_END
);
@ -217,6 +234,9 @@ uses
FIELD_FLAGS_COLUMN_FORMAT_MASK = (3 shl FIELD_FLAGS_COLUMN_FORMAT);
{$IFDEF mysql56}
FIELD_IS_DROPPED = (1 shl 26); // Intern: Field is being dropped
{$IFDEF mysql57}
EXPLICIT_NULL_FLAG = (1 shl 27); // Field is explicitly specified as NULL by the user
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
@ -245,6 +265,7 @@ uses
REFRESH_DES_KEY_FILE = $40000;
REFRESH_USER_RESOURCES = $80000;
REFRESH_FOR_EXPORT = $100000; // FLUSH TABLES ... FOR EXPORT
REFRESH_OPTIMIZER_COSTS = $200000; // FLUSH OPTIMIZER_COSTS
CLIENT_LONG_PASSWORD = 1; // new more secure passwords
CLIENT_FOUND_ROWS = 2; // Found instead of affected rows
@ -261,7 +282,7 @@ uses
CLIENT_IGNORE_SIGPIPE = 4096; // IGNORE sigpipes
CLIENT_TRANSACTIONS = 8192; // Client knows about transactions
CLIENT_RESERVED = 16384; // Old flag for 4.1 protocol
CLIENT_SECURE_CONNECTION = 32768; // New 4.1 authentication
CLIENT_SECURE_CONNECTION = 32768; // Old flag for 4.1 authentication
CLIENT_MULTI_STATEMENTS = 65536; // Enable/disable multi-stmt support
CLIENT_MULTI_RESULTS = 131072; // Enable/disable multi-results
CLIENT_PS_MULTI_RESULTS : cardinal = 1 shl 18; // Multi-results in PS-protocol
@ -269,6 +290,8 @@ uses
CLIENT_CONNECT_ATTRS : cardinal = (1 shl 20); // Client supports connection attributes
CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA : cardinal = (1 shl 21); // Enable authentication response packet to be larger than 255 bytes.
CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS : cardinal = (1 shl 22); // Don't close the connection for a connection with expired password.
CLIENT_SESSION_TRACK : cardinal = (1 shl 23); // Capable of handling server state change information. Its a hint to the server to include the state change information in Ok packet.
CLIENT_DEPRECATE_EOF : cardinal = (1 shl 24); // Client no longer needs EOF packet
CLIENT_SSL_VERIFY_SERVER_CERT : cardinal = 1 shl 30;
CLIENT_REMEMBER_OPTIONS : cardinal = 1 shl 31;
@ -294,21 +317,24 @@ uses
SERVER_STATUS_DB_DROPPED = 256; // A database was dropped
{$IFDEF mysql50}
SERVER_STATUS_NO_BACKSLASH_ESCAPES = 512;
{$ENDIF}
{$IFDEF mysql51}
{$IFDEF mysql51}
{
Sent to the client if after a prepared statement reprepare
we discovered that the new statement returns a different
number of result set columns.
}
SERVER_STATUS_METADATA_CHANGED = 1024;
{$ENDIF}
{$IFDEF mysql55}
{$IFDEF mysql55}
SERVER_QUERY_WAS_SLOW = 2048;
SERVER_PS_OUT_PARAMS = 4096; // To mark ResultSet containing output parameter values.
{$ENDIF}
{$IFDEF mysql56}
{$IFDEF mysql56}
SERVER_STATUS_IN_TRANS_READONLY = 8192;
{$IFDEF mysql57}
SERVER_SESSION_STATE_CHANGED = (1 shl 14); // This status flag, when on, implies that one of the state information has changed on the server because of the execution of the last statement.
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$IFDEF mysql41}
@ -340,7 +366,6 @@ uses
type
Pst_net = ^st_net;
st_net = record
{ $if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY) }
vio : PVio;
buff : pcuchar;
buff_end : pcuchar;
@ -365,7 +390,6 @@ uses
unused3: my_bool; // Please remove with the next incompatible ABI change
{ Pointer to query object in query cache, do not equal NULL (0) for
queries in cache that have not stored its results yet }
{ $endif }
unused: pcuchar;
last_errno: cuint;
error: cuchar;
@ -531,6 +555,24 @@ uses
MYSQL_OPTION_MULTI_STATEMENTS_OFF
);
{$IFDEF mysql57}
{ Type of state change information that the server can include in the Ok
packet.
Note : 1) session_state_type shouldn't go past 255 (i.e. 1-byte boundary).
2) Modify the definition of SESSION_TRACK_END when a new member is added.
}
enum_session_state_type = (
SESSION_TRACK_SYSTEM_VARIABLES, // Session system variables
SESSION_TRACK_SCHEMA, // Current schema
SESSION_TRACK_STATE_CHANGE, // track session state changes
SESSION_TRACK_GTIDS
);
const
SESSION_TRACK_BEGIN = ord(SESSION_TRACK_SYSTEM_VARIABLES);
SESSION_TRACK_END = ord(SESSION_TRACK_GTIDS);
{$ENDIF}
function net_new_transaction(net : st_net) : st_net;
{$IFNDEF LinkDynamically}
@ -721,10 +763,6 @@ uses
CLIENT_NET_READ_TIMEOUT = 365*24*3600; // Timeout on read
CLIENT_NET_WRITE_TIMEOUT = 365*24*3600; // Timeout on write
{$ifdef NETWARE}
(** unsupported pragma#pragma pack(push, 8) /* 8 byte alignment */*)
{$endif}
type
Pst_mysql_field = ^st_mysql_field;
st_mysql_field = record
@ -892,6 +930,9 @@ uses
,MYSQL_SERVER_PUBLIC_KEY
,MYSQL_ENABLE_CLEARTEXT_PLUGIN
,MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
{$IFDEF mysql57}
,MYSQL_OPT_SSL_ENFORCE
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
@ -1510,6 +1551,13 @@ uses
function mysql_real_query(mysql:PMYSQL; q:Pchar; length:culong):cint;extdecl;external mysqllib name 'mysql_real_query';
function mysql_store_result(mysql:PMYSQL):PMYSQL_RES;extdecl;external mysqllib name 'mysql_store_result';
function mysql_use_result(mysql:PMYSQL):PMYSQL_RES;extdecl;external mysqllib name 'mysql_use_result';
{$IFDEF mysql50}
procedure mysql_get_character_set_info(mysql:PMYSQL; charset:PMY_CHARSET_INFO);extdecl;external mysqllib name 'mysql_get_character_set_info';
{$IFDEF mysql57}
function mysql_session_track_get_first(mysql:PMYSQL; typ:enum_session_state_type; data:ppcchar; length:psize_t):cint; extdecl; external mysqllib name 'mysql_session_track_get_first';
function mysql_session_track_get_next(mysql:PMYSQL; typ:enum_session_state_type; data:ppcchar; length:psize_t):cint; extdecl; external mysqllib name 'mysql_session_track_get_next';
{$ENDIF}
{$ENDIF}
{$ELSE}
@ -1548,6 +1596,14 @@ uses
mysql_real_query: function (mysql:PMYSQL; q:Pchar; length:culong):cint;extdecl;
mysql_store_result: function (mysql:PMYSQL):PMYSQL_RES;extdecl;
mysql_use_result: function (mysql:PMYSQL):PMYSQL_RES;extdecl;
{$IFDEF mysql50}
mysql_get_character_set_info: procedure(mysql:PMYSQL; charset:PMY_CHARSET_INFO);extdecl;
{$IFDEF mysql57}
mysql_session_track_get_first: function(mysql:PMYSQL; typ:enum_session_state_type; data:ppcchar; length:psize_t):cint; extdecl;
mysql_session_track_get_next: function(mysql:PMYSQL; typ:enum_session_state_type; data:ppcchar; length:psize_t):cint; extdecl;
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$IFNDEF LinkDynamically}
@ -1558,9 +1614,6 @@ uses
{ perform query on slave }
function mysql_slave_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqllib name 'mysql_slave_query';
function mysql_slave_send_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqllib name 'mysql_slave_send_query';
{$IFDEF mysql50}
procedure mysql_get_character_set_info(mysql : PMYSQL; charset : PMY_CHARSET_INFO);extdecl;external mysqllib name 'mysql_get_character_set_info';
{$ENDIF}
{$ENDIF}
{ local infile support }
@ -1696,6 +1749,9 @@ uses
mysql_options: function (mysql:PMYSQL; option:mysql_option; arg:Pchar):cint;extdecl;
{$IFDEF mysql56}
mysql_options4: function (mysql:PMYSQL; option:mysql_option; arg1,arg2:Pointer):cint;extdecl;
{$IFDEF mysql57}
mysql_get_option: function (mysql:PMYSQL; option:mysql_option; arg:Pointer):cint;extdecl;
{$ENDIF}
{$ENDIF}
mysql_free_result: procedure (result:PMYSQL_RES);extdecl;
mysql_data_seek: procedure (result:PMYSQL_RES; offset:my_ulonglong);extdecl;
@ -1708,6 +1764,10 @@ uses
mysql_escape_string: function (fto:Pchar; from:Pchar; from_length:culong):culong;extdecl;
mysql_hex_string: function (fto:Pchar; from:Pchar; from_length:culong):culong;extdecl;
mysql_real_escape_string: function (mysql:PMYSQL; fto:Pchar; from:Pchar; length:culong):culong;extdecl;
{$IFDEF mysql57}
mysql_real_escape_string_quote: function(mysql:PMYSQL; fto:pcchar; from:pcchar; length:culong; quote: cchar):culong;extdecl;
mysql_reset_connection: function(mysql:PMYSQL):cint;extdecl;
{$ENDIF}
mysql_debug: procedure (debug:Pchar);extdecl;
mysql_rollback: function (mysql:PMYSQL):my_bool;extdecl;
@ -1757,16 +1817,8 @@ uses
function mysql_reload(mysql : PMySQL) : cint;
{$IFNDEF LinkDynamically}
{$ifdef USE_OLD_FUNCTIONS}
function mysql_connect(mysql:PMYSQL; host:Pchar; user:Pchar; passwd:Pchar):PMYSQL;extdecl;external External_library name 'mysql_connect';
function mysql_create_db(mysql:PMYSQL; DB:Pchar):cint;extdecl;external External_library name 'mysql_create_db';
function mysql_drop_db(mysql:PMYSQL; DB:Pchar):cint;extdecl;external External_library name 'mysql_drop_db';
function mysql_reload(mysql : PMySQL) : cint;
{$endif}
{$endif}
{$define HAVE_MYSQL_REAL_CONNECT}
{$define HAVE_MYSQL_REAL_CONNECT}
{ The following functions are mainly exported because of mysqlbinlog;
They are not for general usage }
@ -1775,9 +1827,6 @@ uses
function net_safe_read(mysql:PMYSQL):cuint;cdecl;external mysqllib name 'net_safe_read';
{$ENDIF}
{$ifdef NETWARE}
(** unsupported pragma#pragma pack(pop) /* restore alignment */*)
{$endif}
{$IFDEF LinkDynamically}
Function InitialiseMysql(Const LibraryName : AnsiString) : Integer;
@ -1812,6 +1861,7 @@ begin
Exit;
Inc(RefCount);
MysqlLoadedLibrary:=LibraryName;
// Only the procedure that are given in the c-library documentation are loaded, to
// avoid problems with 'incomplete' libraries
pointer(my_init) := GetProcedureAddress(MysqlLibraryHandle,'my_init');
@ -1821,13 +1871,9 @@ begin
pointer(mysql_affected_rows) := GetProcedureAddress(MysqlLibraryHandle,'mysql_affected_rows');
pointer(mysql_autocommit) := GetProcedureAddress(MysqlLibraryHandle,'mysql_autocommit');
pointer(mysql_change_user) := GetProcedureAddress(MysqlLibraryHandle,'mysql_change_user');
// pointer(mysql_charset_name) := GetProcedureAddress(MysqlLibraryHandle,'mysql_charset_name');
pointer(mysql_close) := GetProcedureAddress(MysqlLibraryHandle,'mysql_close');
pointer(mysql_commit) := GetProcedureAddress(MysqlLibraryHandle,'mysql_commit');
// pointer(mysql_connect) := GetProcedureAddress(MysqlLibraryHandle,'mysql_connect');
// pointer(mysql_create_db) := GetProcedureAddress(MysqlLibraryHandle,'mysql_create_db');
pointer(mysql_data_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_data_seek');
// pointer(mysql_drop_db) := GetProcedureAddress(MysqlLibraryHandle,'mysql_drop_db');
pointer(mysql_debug) := GetProcedureAddress(MysqlLibraryHandle,'mysql_debug');
pointer(mysql_dump_debug_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_dump_debug_info');
pointer(mysql_eof) := GetProcedureAddress(MysqlLibraryHandle,'mysql_eof');
@ -1870,7 +1916,6 @@ begin
pointer(mysql_real_escape_string) := GetProcedureAddress(MysqlLibraryHandle,'mysql_real_escape_string');
pointer(mysql_real_query) := GetProcedureAddress(MysqlLibraryHandle,'mysql_real_query');
pointer(mysql_refresh) := GetProcedureAddress(MysqlLibraryHandle,'mysql_refresh');
// pointer(mysql_reload) := GetProcedureAddress(MysqlLibraryHandle,'mysql_reload');
pointer(mysql_rollback) := GetProcedureAddress(MysqlLibraryHandle,'mysql_rollback');
pointer(mysql_row_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_row_seek');
pointer(mysql_row_tell) := GetProcedureAddress(MysqlLibraryHandle,'mysql_row_tell');
@ -1884,7 +1929,6 @@ begin
pointer(mysql_stat) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stat');
pointer(mysql_store_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_store_result');
pointer(mysql_thread_id) := GetProcedureAddress(MysqlLibraryHandle,'mysql_thread_id');
// pointer(mysql_thread_save) := GetProcedureAddress(MysqlLibraryHandle,'mysql_thread_save');
pointer(mysql_use_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_use_result');
pointer(mysql_warning_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_warning_count');
pointer(mysql_stmt_init) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_init');
@ -1915,6 +1959,10 @@ begin
pointer(mysql_stmt_insert_id) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_insert_id');
pointer(mysql_stmt_field_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_field_count');
pointer(mysql_stmt_next_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_next_result');
{$IFDEF mysql57}
pointer(mysql_real_escape_string_quote) := GetProcedureAddress(MysqlLibraryHandle,'mysql_real_escape_string_quote');
pointer(mysql_reset_connection) := GetProcedureAddress(MysqlLibraryHandle,'mysql_reset_connection');
{$ENDIF}
if mysql_library_init(argc, argv, groups) <> 0 then
Exit;

View File

@ -0,0 +1,12 @@
{
Contains the MySQL calls for MySQL 5.7
}
unit mysql57dyn;
{$DEFINE LinkDynamically}
{$DEFINE MYSQL57}
{$i mysql.inc}
end.