fixes sqlite3_column_count() return check

sqlite3_column_count() may return 0 for SQL statements that do not return rows
from the database.  This should not be treated as an error.

See:  https://sqlite.org/c3ref/column_count.html
This commit is contained in:
jazzyb
2015-04-16 22:29:50 -04:00
parent 58e5e6ed55
commit 0a073b18e9
2 changed files with 16 additions and 4 deletions

View File

@@ -546,8 +546,10 @@ do_column_names(ErlNifEnv *env, sqlite3_stmt *stmt)
ERL_NIF_TERM column_names;
size = sqlite3_column_count(stmt);
if(size <= 0)
return make_error_tuple(env, "no_columns");
if(size == 0)
return enif_make_tuple(env, 0);
else if(size < 0)
return make_error_tuple(env, "invalid_column_count");
array = (ERL_NIF_TERM *) malloc(sizeof(ERL_NIF_TERM) * size);
if(!array)
@@ -577,8 +579,10 @@ do_column_types(ErlNifEnv *env, sqlite3_stmt *stmt)
ERL_NIF_TERM column_types;
size = sqlite3_column_count(stmt);
if(size <= 0)
return make_error_tuple(env, "no_columns");
if(size == 0)
return enif_make_tuple(env, 0);
else if(size < 0)
return make_error_tuple(env, "invalid_column_count");
array = (ERL_NIF_TERM *) malloc(sizeof(ERL_NIF_TERM) * size);
if(!array)