diff --git a/include/sqlite3db.h b/include/sqlite3db.h index d6d569913..0750289e5 100644 --- a/include/sqlite3db.h +++ b/include/sqlite3db.h @@ -1,7 +1,10 @@ #ifndef __CLASS_SQLITE3DB_H #define __CLASS_SQLITE3DB_H -#include "proxysql.h" -#include "cpp.h" +#include "sqlite3.h" +#undef swap +#undef min +#undef max +#include #define PROXYSQL_SQLITE3DB_PTHREAD_MUTEX class SQLite3_row { @@ -70,6 +73,7 @@ class SQLite3DB { bool execute(const char *); bool execute_statement(const char *, char **, int *, int *, SQLite3_result **); + SQLite3_result* execute_statement(const char *, char **_error=NULL, int *_cols=NULL, int *_affected_rows=NULL); bool execute_statement_raw(const char *, char **, int *, int *, sqlite3_stmt **); int return_one_int(const char *); int check_table_structure(char *table_name, char *table_def); diff --git a/lib/sqlite3db.cpp b/lib/sqlite3db.cpp index 0534aacc6..8c6458f09 100644 --- a/lib/sqlite3db.cpp +++ b/lib/sqlite3db.cpp @@ -189,6 +189,24 @@ int SQLite3DB::prepare_v2(const char *str, sqlite3_stmt **statement) { return rc; } +SQLite3_result* SQLite3DB::execute_statement(const char *str, char **_error, int *_cols, int *_affected_rows) { + SQLite3_result* resultset; + + char *myerror; + char **error = (_error == NULL ? &myerror : _error); + + int mycols; + int *cols = (_cols == NULL ? &mycols : _cols); + + int my_affected_rows; + int *affected_rows = (_affected_rows == NULL ? &my_affected_rows : _affected_rows); + + if (execute_statement(str, error, cols, affected_rows, &resultset)) + return resultset; + + return NULL; +} + bool SQLite3DB::execute_statement(const char *str, char **error, int *cols, int *affected_rows, SQLite3_result **resultset) { int rc; sqlite3_stmt *statement=NULL; diff --git a/test/tap/tests/Makefile b/test/tap/tests/Makefile index f1017c027..f6ba80ac6 100644 --- a/test/tap/tests/Makefile +++ b/test/tap/tests/Makefile @@ -7,6 +7,11 @@ MARIADB_LDIR=$(MARIADB_PATH)/libmariadb INCLUDEDIR=../tap LIBDIR=../tap +PROXYSQL_PATH=../../.. +PROXYSQL_IDIR=$(PROXYSQL_PATH)/include + +SQLITE3_DIR=$(DEPS_PATH)/sqlite3/sqlite3 + STATIC_LIBS=$(MARIADB_LDIR)/libmariadbclient.a .PHONY: all @@ -14,13 +19,16 @@ all: tests .PHONY: clean clean: - rm -f basic-t set_character_set-t charset_unsigned_int-t select_config_file-t || true + rm -f basic-t set_character_set-t charset_unsigned_int-t select_config_file-t sqlite3-t || true OPT=-O2 -SRC=basic-t.cpp set_character_set-t.cpp charset_unsigned_int-t.cpp select_config_file-t.cpp +SRC=basic-t.cpp set_character_set-t.cpp charset_unsigned_int-t.cpp select_config_file-t.cpp sqlite3-t.cpp + +tests: basic-t set_character_set-t charset_unsigned_int-t select_config_file-t sqlite3-t -tests: basic-t set_character_set-t charset_unsigned_int-t select_config_file-t +sqlite3-t: $(LIBDIR)/libtap.a sqlite3-t.cpp + g++ sqlite3-t.cpp -I$(INCLUDEDIR) -I$(PROXYSQL_IDIR) -I$(MARIADB_IDIR) -I$(SQLITE3_DIR) -L$(LIBDIR) $(OPT) ../../../lib/libproxysql.a -lpthread -ldl -std=c++11 -ltap -o sqlite3-t basic-t: $(LIBDIR)/libtap.a g++ basic-t.cpp -I$(INCLUDEDIR) -L$(LIBDIR) $(OPT) -std=c++11 -ltap -o basic-t