You've already forked mariadb-connector-c
mirror of
https://github.com/mariadb-corporation/mariadb-connector-c.git
synced 2025-08-08 14:02:17 +03:00
CONC-691: Obtain sql statement from statement handle
Added an option STMT_ATTR_SQL_STATEMENT in API function mariadb_stmt_attr_get which returns a MARIADB_CONST_STRING structure which contains SQL statement from last mysql_stmt_prepare() call.
This commit is contained in:
@@ -80,6 +80,9 @@ typedef struct
|
||||
} MADB_STMT_EXTENSION;
|
||||
|
||||
static my_bool net_stmt_close(MYSQL_STMT *stmt, my_bool remove);
|
||||
extern MARIADB_CONST_STRING ma_const_string_copy_root(MA_MEM_ROOT *memroot,
|
||||
const char *str,
|
||||
size_t length);
|
||||
|
||||
static my_bool is_not_null= 0;
|
||||
static my_bool is_null= 1;
|
||||
@@ -1186,6 +1189,9 @@ unsigned long long STDCALL mysql_stmt_affected_rows(MYSQL_STMT *stmt)
|
||||
my_bool STDCALL mysql_stmt_attr_get(MYSQL_STMT *stmt, enum enum_stmt_attr_type attr_type, void *value)
|
||||
{
|
||||
switch (attr_type) {
|
||||
case STMT_ATTR_SQL_STATEMENT:
|
||||
*(MARIADB_CONST_STRING *)value= stmt->sql;
|
||||
break;
|
||||
case STMT_ATTR_STATE:
|
||||
*(enum mysql_stmt_state *)value= stmt->state;
|
||||
break;
|
||||
@@ -1841,6 +1847,8 @@ int STDCALL mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, unsigned lon
|
||||
sizeof(stmt_id), 1, stmt))
|
||||
goto fail;
|
||||
}
|
||||
stmt->sql= ma_const_string_copy_root(&stmt->mem_root, query, length);
|
||||
|
||||
if (mysql->methods->db_command(mysql, COM_STMT_PREPARE, query, length, 1, stmt))
|
||||
goto fail;
|
||||
|
||||
@@ -2398,10 +2406,16 @@ MYSQL_RES * STDCALL mysql_stmt_result_metadata(MYSQL_STMT *stmt)
|
||||
|
||||
my_bool STDCALL mysql_stmt_reset(MYSQL_STMT *stmt)
|
||||
{
|
||||
my_bool rc= 0;
|
||||
if (stmt->stmt_id > 0 &&
|
||||
stmt->stmt_id != (unsigned long) -1)
|
||||
return mysql_stmt_internal_reset(stmt, 0);
|
||||
return 0;
|
||||
rc= mysql_stmt_internal_reset(stmt, 0);
|
||||
|
||||
/* clear last sql statement */
|
||||
stmt->sql.str= 0;
|
||||
stmt->sql.length= 0;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
const char * STDCALL mysql_stmt_sqlstate(MYSQL_STMT *stmt)
|
||||
|
Reference in New Issue
Block a user