summaryrefslogtreecommitdiff
path: root/libmysql
diff options
context:
space:
mode:
authorunknown <sasha@mysql.sashanet.com>2001-01-19 22:40:16 -0700
committerunknown <sasha@mysql.sashanet.com>2001-01-19 22:40:16 -0700
commitd2d369314239d34615f6a14963a5b11ab6100eac (patch)
tree1a867ce93f7bc873347f776d08ae6607a8ba554a /libmysql
parent5097c3f1ca7723930a92fcbb59158b7057afcb1d (diff)
downloadmariadb-git-d2d369314239d34615f6a14963a5b11ab6100eac.tar.gz
client/mysqltest.c
added send/reap/dirty_close include/mysql.h mysql_send_query()/mysql_reap_query() libmysql/libmysql.c mysql_send_query()/mysql_reap_query() mysys/my_vsnprintf.c fixed critical bug that codedumped when connection aborted sql/sql_parse.cc 0 mysql-test/r/dirty-close.result New BitKeeper file ``mysql-test/r/dirty-close.result'' mysql-test/t/dirty-close.test New BitKeeper file ``mysql-test/t/dirty-close.test'' client/mysqltest.c: added send/reap/dirty_close include/mysql.h: mysql_send_query()/mysql_reap_query() libmysql/libmysql.c: mysql_send_query()/mysql_reap_query() mysys/my_vsnprintf.c: fixed critical bug that codedumped when connection aborted sql/sql_parse.cc: 0
Diffstat (limited to 'libmysql')
-rw-r--r--libmysql/libmysql.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 5f4604701ae..52c76c4043a 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -1708,6 +1708,71 @@ mysql_query(MYSQL *mysql, const char *query)
return mysql_real_query(mysql,query, (uint) strlen(query));
}
+int STDCALL
+mysql_send_query(MYSQL* mysql, const char* query)
+{
+ return mysql_real_send_query(mysql, query, strlen(query));
+}
+
+/* send the query and return so we can do something else */
+/* needs to be followed by mysql_reap_query() when we want to
+ finish processing it
+*/
+int STDCALL
+mysql_real_send_query(MYSQL* mysql, const char* query, uint len)
+{
+ return simple_command(mysql, COM_QUERY, query, len, 1);
+}
+
+int STDCALL
+mysql_reap_query(MYSQL* mysql)
+{
+ uchar *pos;
+ ulong field_count;
+ MYSQL_DATA *fields;
+ uint len;
+ DBUG_ENTER("mysql_reap_query");
+ DBUG_PRINT("enter",("handle: %lx",mysql));
+ if((len = net_safe_read(mysql)) == packet_error)
+ DBUG_RETURN(-1);
+ free_old_query(mysql); /* Free old result */
+ get_info:
+ pos=(uchar*) mysql->net.read_pos;
+ if ((field_count= net_field_length(&pos)) == 0)
+ {
+ mysql->affected_rows= net_field_length_ll(&pos);
+ mysql->insert_id= net_field_length_ll(&pos);
+ if (mysql->server_capabilities & CLIENT_TRANSACTIONS)
+ {
+ mysql->server_status=uint2korr(pos); pos+=2;
+ }
+ if (pos < mysql->net.read_pos+len && net_field_length(&pos))
+ mysql->info=(char*) pos;
+ DBUG_RETURN(0);
+ }
+ if (field_count == NULL_LENGTH) /* LOAD DATA LOCAL INFILE */
+ {
+ int error=send_file_to_server(mysql,(char*) pos);
+ if ((len=net_safe_read(mysql)) == packet_error || error)
+ DBUG_RETURN(-1);
+ goto get_info; /* Get info packet */
+ }
+ if (!(mysql->server_status & SERVER_STATUS_AUTOCOMMIT))
+ mysql->server_status|= SERVER_STATUS_IN_TRANS;
+
+ mysql->extra_info= net_field_length_ll(&pos); /* Maybe number of rec */
+ if (!(fields=read_rows(mysql,(MYSQL_FIELD*) 0,5)))
+ DBUG_RETURN(-1);
+ if (!(mysql->fields=unpack_fields(fields,&mysql->field_alloc,
+ (uint) field_count,0,
+ (my_bool) test(mysql->server_capabilities &
+ CLIENT_LONG_FLAG))))
+ DBUG_RETURN(-1);
+ mysql->status=MYSQL_STATUS_GET_RESULT;
+ mysql->field_count=field_count;
+ DBUG_RETURN(0);
+
+}
int STDCALL
mysql_real_query(MYSQL *mysql, const char *query, uint length)