Overload execute_statement method in sqlite3db

pull/2468/head
Valentin Rakush 6 years ago
parent 5a346864de
commit d5a7836011

@ -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 <vector>
#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);

@ -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;

@ -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

Loading…
Cancel
Save