summaryrefslogtreecommitdiff
path: root/libmysql
diff options
context:
space:
mode:
authorkonstantin@mysql.com <>2004-04-30 01:02:29 +0400
committerkonstantin@mysql.com <>2004-04-30 01:02:29 +0400
commit392481dae51c5a075757d9fdcceb4bf6aee95b77 (patch)
treef7bebcd7a35a5e9629f8b55f24abc75c628205c6 /libmysql
parent40ac433e4bc2ad363fa0910f1e6ed225e1119390 (diff)
downloadmariadb-git-392481dae51c5a075757d9fdcceb4bf6aee95b77.tar.gz
Implementation of mysql_stmt_attr_get and mysql_stmt_attr_set
requested by Monty for Bug#1647 (No way to determine what size blob/clob is being returned into bound buffer)
Diffstat (limited to 'libmysql')
-rw-r--r--libmysql/libmysql.c50
-rw-r--r--libmysql/libmysql.def2
2 files changed, 52 insertions, 0 deletions
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 4447ece308e..eb5048bbb61 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -2514,6 +2514,56 @@ stmt_read_row_no_data(MYSQL_STMT *stmt __attribute__((unused)),
return MYSQL_NO_DATA;
}
+
+/*
+ Get/set statement attributes
+
+ SYNOPSIS
+ mysql_stmt_attr_get()
+ mysql_stmt_attr_set()
+
+ attr_type statemenet attribute
+ value casted to const void * pointer to value.
+
+ RETURN VALUE
+ 0 success
+ !0 wrong attribute type
+*/
+
+my_bool STDCALL mysql_stmt_attr_set(MYSQL_STMT *stmt,
+ enum enum_stmt_attr_type attr_type,
+ const void *value)
+{
+ switch (attr_type) {
+ case STMT_ATTR_UPDATE_MAX_LENGTH:
+ /*
+ Do we need a flags variable for all attributes or a bool for each
+ attribute?
+ */
+ stmt->update_max_length= value ? *(const my_bool*) value : 0;
+ break;
+ default:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+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_UPDATE_MAX_LENGTH:
+ *(unsigned long *) value= stmt->update_max_length;
+ break;
+ default:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
/*
Execute the prepared query
*/
diff --git a/libmysql/libmysql.def b/libmysql/libmysql.def
index 4f6347776e0..1790b0fa888 100644
--- a/libmysql/libmysql.def
+++ b/libmysql/libmysql.def
@@ -127,3 +127,5 @@ EXPORTS
mysql_stmt_prepare
mysql_stmt_init
mysql_stmt_insert_id
+ mysql_stmt_attr_get
+ mysql_stmt_attr_set