Ppeixianzhong054.3
d6312e48创建于 2024年7月16日历史提交
/*
 * @Copyright (c) Huawei Technologies Co., Ltd. 2023-2024. All rights reserved.
 */
 
package mysqlclient_ffi

/*--------------------- MySQL的列类型,C中枚举 enum enum_field_types ---------------------*/
public let MYSQL_TYPE_DECIMAL: Int32 = 0

public let MYSQL_TYPE_TINY: Int32 = 1

public let MYSQL_TYPE_SHORT: Int32 = 2

public let MYSQL_TYPE_LONG: Int32 = 3

public let MYSQL_TYPE_FLOAT: Int32 = 4

public let MYSQL_TYPE_DOUBLE: Int32 = 5

public let MYSQL_TYPE_NULL: Int32 = 6

public let MYSQL_TYPE_TIMESTAMP: Int32 = 7

public let MYSQL_TYPE_LONGLONG: Int32 = 8

public let MYSQL_TYPE_INT24: Int32 = 9

public let MYSQL_TYPE_DATE: Int32 = 10

public let MYSQL_TYPE_TIME: Int32 = 11

public let MYSQL_TYPE_DATETIME: Int32 = 12

public let MYSQL_TYPE_YEAR: Int32 = 13

/*
 * Internal to MySQL. Not used in protocol
 */
public let MYSQL_TYPE_NEWDATE: Int32 = 14

public let MYSQL_TYPE_VARCHAR: Int32 = 15

public let MYSQL_TYPE_BIT: Int32 = 16

public let MYSQL_TYPE_TIMESTAMP2: Int32 = 17

/*
 * Internal to MySQL. Not used in protocol
 */
public let MYSQL_TYPE_DATETIME2: Int32 = 18

/*
 * Internal to MySQL. Not used in protocol
 */
public let MYSQL_TYPE_TIME2: Int32 = 19

/*
 * Used for replication only
 */
public let MYSQL_TYPE_TYPED_ARRAY: Int32 = 20

public let MYSQL_TYPE_INVALID: Int32 = 243

/*
 * Currently just a placeholder
 */
public let MYSQL_TYPE_BOOL: Int32 = 244

public let MYSQL_TYPE_JSON: Int32 = 245

public let MYSQL_TYPE_NEWDECIMAL: Int32 = 246

public let MYSQL_TYPE_ENUM: Int32 = 247

public let MYSQL_TYPE_SET: Int32 = 248

public let MYSQL_TYPE_TINY_BLOB: Int32 = 249

public let MYSQL_TYPE_MEDIUM_BLOB: Int32 = 250

public let MYSQL_TYPE_LONG_BLOB: Int32 = 251

public let MYSQL_TYPE_BLOB: Int32 = 252

public let MYSQL_TYPE_VAR_STRING: Int32 = 253

public let MYSQL_TYPE_STRING: Int32 = 254

public let MYSQL_TYPE_GEOMETRY: Int32 = 255

/*--------------------- 服务器和客户端API之间共享的时间声明,C中枚举 enum enum_mysql_timestamp_type ---------------------*/
public let MYSQL_TIMESTAMP_NONE: Int32 = -2

public let MYSQL_TIMESTAMP_ERROR: Int32 = -1

/*
 * Stores year, month and day components.
 */
public let MYSQL_TIMESTAMP_DATE: Int32 = 0

/**
 * Stores all date and time components.
 * Value is in UTC for `TIMESTAMP` type.
 * Value is in local time zone for `DATETIME` type.
 */
public let MYSQL_TIMESTAMP_DATETIME: Int32 = 1

/*
 * Stores hour, minute, second and microsecond.
 */
public let MYSQL_TIMESTAMP_TIME: Int32 = 2

/**
 * A temporary type for `DATETIME` or `TIMESTAMP` types equipped with time
 * zone information. After the time zone information is reconciled, the type is
 * converted to MYSQL_TIMESTAMP_DATETIME.
 */
public let MYSQL_TIMESTAMP_DATETIME_TZ: Int32 = 3

/*--------------------- C中枚举 enum enum_stmt_attr_type ---------------------*/
/*
 * When doing mysql_stmt_store_result calculate max_length attribute
 * of statement metadata. This is to be consistent with the old API,
 * where this was done automatically.
 * In the new API we do that only by request because it slows down
 * mysql_stmt_store_result sufficiently.
 */
public let STMT_ATTR_UPDATE_MAX_LENGTH_INT: Int32 = 0

/*
 * unsigned long with combination of cursor flags (read only, for update,etc)
 */
public let STMT_ATTR_CURSOR_TYPE_INT: Int32 = 1

/*
 * Amount of rows to retrieve from server per one fetch if using cursors.
 * Accepts unsigned long attribute in the range 1 - ulong_max
 */
public let STMT_ATTR_PREFETCH_ROWS_INT: Int32 = 2

/*--------------------- C中枚举 enum enum_mysql_set_option ---------------------*/
public let MYSQL_OPTION_MULTI_STATEMENTS_ON_INT: Int32 = 0

public let MYSQL_OPTION_MULTI_STATEMENTS_OFF_INT: Int32 = 1

/*--------------------- C中枚举 enum mysql_option ---------------------*/
public let MYSQL_OPT_CONNECT_TIMEOUT_INT: Int32 = 0

public let MYSQL_OPT_COMPRESS_INT: Int32 = 1

public let MYSQL_OPT_NAMED_PIPE_INT: Int32 = 2

public let MYSQL_INIT_COMMAND_INT: Int32 = 3

public let MYSQL_READ_DEFAULT_FILE_INT: Int32 = 4

public let MYSQL_READ_DEFAULT_GROUP_INT: Int32 = 5

public let MYSQL_SET_CHARSET_DIR_INT: Int32 = 6

public let MYSQL_SET_CHARSET_NAME_INT: Int32 = 7

public let MYSQL_OPT_LOCAL_INFILE_INT: Int32 = 8

public let MYSQL_OPT_PROTOCOL_INT: Int32 = 9

public let MYSQL_SHARED_MEMORY_BASE_NAME_INT: Int32 = 10

public let MYSQL_OPT_READ_TIMEOUT_INT: Int32 = 11

public let MYSQL_OPT_WRITE_TIMEOUT_INT: Int32 = 12

public let MYSQL_OPT_USE_RESULT_INT: Int32 = 13

public let MYSQL_REPORT_DATA_TRUNCATION_INT: Int32 = 14

public let MYSQL_OPT_RECONNECT_INT: Int32 = 15

public let MYSQL_PLUGIN_DIR_INT: Int32 = 16

public let MYSQL_DEFAULT_AUTH_INT: Int32 = 17

public let MYSQL_OPT_BIND_INT: Int32 = 18

public let MYSQL_OPT_SSL_KEY_INT: Int32 = 19

public let MYSQL_OPT_SSL_CERT_INT: Int32 = 20

public let MYSQL_OPT_SSL_CA_INT: Int32 = 21

public let MYSQL_OPT_SSL_CAPATH_INT: Int32 = 22

public let MYSQL_OPT_SSL_CIPHER_INT: Int32 = 23

public let MYSQL_OPT_SSL_CRL_INT: Int32 = 24

public let MYSQL_OPT_SSL_CRLPATH_INT: Int32 = 25

public let MYSQL_OPT_CONNECT_ATTR_RESET_INT: Int32 = 26

public let MYSQL_OPT_CONNECT_ATTR_ADD_INT: Int32 = 27

public let MYSQL_OPT_CONNECT_ATTR_DELETE_INT: Int32 = 28

public let MYSQL_SERVER_PUBLIC_KEY_INT: Int32 = 29

public let MYSQL_ENABLE_CLEARTEXT_PLUGIN_INT: Int32 = 30

public let MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS_INT: Int32 = 31

public let MYSQL_OPT_MAX_ALLOWED_PACKET_INT: Int32 = 32

public let MYSQL_OPT_NET_BUFFER_LENGTH_INT: Int32 = 33

public let MYSQL_OPT_TLS_VERSION_INT: Int32 = 34

public let MYSQL_OPT_SSL_MODE_INT: Int32 = 35

public let MYSQL_OPT_GET_SERVER_PUBLIC_KEY_INT: Int32 = 36

public let MYSQL_OPT_RETRY_COUNT_INT: Int32 = 37

public let MYSQL_OPT_OPTIONAL_RESULTSET_METADATA_INT: Int32 = 38

public let MYSQL_OPT_SSL_FIPS_MODE_INT: Int32 = 39

public let MYSQL_OPT_TLS_CIPHERSUITES_INT: Int32 = 40

public let MYSQL_OPT_COMPRESSION_ALGORITHMS_INT: Int32 = 41

public let MYSQL_OPT_ZSTD_COMPRESSION_LEVEL_INT: Int32 = 42

public let MYSQL_OPT_LOAD_DATA_LOCAL_DIR_INT: Int32 = 43

public let MYSQL_OPT_USER_PASSWORD_INT: Int32 = 44

public let MYSQL_OPT_SSL_SESSION_DATA_INT: Int32 = 45

/*--------------------- MYSQL_FIELD参数中的flags ---------------------*/
/*
 * Field can't be NULL
 */
public let NOT_NULL_FLAG: Int32 = 1

/*
 * Field is part of a primary key
 */
public let PRI_KEY_FLAG: Int32 = 2

/*
 * Field is part of a unique key
 */
public let UNIQUE_KEY_FLAG: Int32 = 4

/*
 * Field is part of a key
 */
public let MULTIPLE_KEY_FLAG: Int32 = 8

/*
 * Field is a blob
 */
public let BLOB_FLAG: Int32 = 16

/*
 * Field is unsigned
 */
public let UNSIGNED_FLAG: Int32 = 32

/*
 * Field is zerofill
 */
public let ZEROFILL_FLAG: Int32 = 64

/*
 * Field is binary
 */
public let BINARY_FLAG: Int32 = 128

/*--------------------- int mysql_stmt_fetch(MYSQL_STMT *stmt)的返回值 ---------------------*/
/*
 * 	成功,数据已提取到应用程序数据缓冲区。
 */
public let MYSQL_STMT_FETCH_SUCCESS = 0

/*
 * 发生错误。错误代码和消息可以通过调用 mysql_stmt_errno() 和 mysql_stmt_error() 来获取。
 */
public let MYSQL_STMT_FETCH_ERROR = 1

/*
 * 成功,不再存在数据
 */
public let MYSQL_STMT_FETCH_NO_DATA = 100

/*
 * 发生数据截断
 */
public let MYSQL_STMT_FETCH_DATA_TRUNCATED = 101

@C
struct MYSQL_COLUMN_INFO {
    var name_string: CString = CString(CPointer<UInt8>())

    var field_type: Int32 = 0

    var flags: UInt32 = 0

    var display_size_int64: Int64 = 0

    var length_int64: Int64 = 0

    var scale_int64: Int64 = 0
}