@@ -246,12 +246,16 @@ static inline int output_ok(sqlite3_drv_t *drv) {
|
|||||||
return driver_output_term(drv->port, spec, sizeof(spec) / sizeof(spec[0]));
|
return driver_output_term(drv->port, spec, sizeof(spec) / sizeof(spec[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int enable_load_extension(sqlite3_drv_t* drv, char *buf,
|
static int enable_load_extension(sqlite3_drv_t* drv, char *buf, int len) {
|
||||||
int len) {
|
#ifdef ERLANG_SQLITE3_LOAD_EXTENSION
|
||||||
char enable = buf[0];
|
char enable = buf[0];
|
||||||
sqlite3_enable_load_extension(drv->db, (int) enable);
|
sqlite3_enable_load_extension(drv->db, (int) enable);
|
||||||
output_ok(drv);
|
output_ok(drv);
|
||||||
return 0;
|
return 0;
|
||||||
|
#else
|
||||||
|
output_error(drv, SQLITE_MISUSE, "extension loading not enabled");
|
||||||
|
return -1;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline async_sqlite3_command *make_async_command_statement(
|
static inline async_sqlite3_command *make_async_command_statement(
|
||||||
@@ -1415,7 +1419,7 @@ static void fprint_dataset(FILE* log, ErlDrvTermData *dataset, int term_count) {
|
|||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
fprintf(log, "%d-%d: int %I64d", i, i+1, (ErlDrvSInt64) dataset[i+1]);
|
fprintf(log, "%d-%d: int %I64d", i, i+1, (ErlDrvSInt64) dataset[i+1]);
|
||||||
#else
|
#else
|
||||||
fprintf(log, "%d-%d: int %ld", i, i+1, (ErlDrvSInt64) dataset[i+1]);
|
fprintf(log, "%d-%d: int %lld", i, i+1, (ErlDrvSInt64) dataset[i+1]);
|
||||||
#endif
|
#endif
|
||||||
i += 2;
|
i += 2;
|
||||||
stack_size++;
|
stack_size++;
|
||||||
@@ -1424,7 +1428,7 @@ static void fprint_dataset(FILE* log, ErlDrvTermData *dataset, int term_count) {
|
|||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
fprintf(log, "%d-%d: int %I64lu", i, i+1, (ErlDrvUInt64) dataset[i+1]);
|
fprintf(log, "%d-%d: int %I64lu", i, i+1, (ErlDrvUInt64) dataset[i+1]);
|
||||||
#else
|
#else
|
||||||
fprintf(log, "%d-%d: int %lu", i, i+1, (ErlDrvUInt64) dataset[i+1]);
|
fprintf(log, "%d-%d: int %llu", i, i+1, (ErlDrvUInt64) dataset[i+1]);
|
||||||
#endif
|
#endif
|
||||||
i += 2;
|
i += 2;
|
||||||
stack_size++;
|
stack_size++;
|
||||||
|
|||||||
@@ -304,11 +304,11 @@ sql_number(NumberStr) ->
|
|||||||
case string:to_integer(NumberStr) of
|
case string:to_integer(NumberStr) of
|
||||||
{Int, []} ->
|
{Int, []} ->
|
||||||
Int;
|
Int;
|
||||||
Other ->
|
_ ->
|
||||||
case string:to_float(NumberStr) of
|
case string:to_float(NumberStr) of
|
||||||
{Float, []} ->
|
{Float, []} ->
|
||||||
Float;
|
Float;
|
||||||
Other ->
|
_ ->
|
||||||
{error, not_a_number}
|
{error, not_a_number}
|
||||||
end
|
end
|
||||||
end.
|
end.
|
||||||
@@ -408,6 +408,17 @@ quote_test() ->
|
|||||||
?assertFlat("'abc'", value_to_sql("abc")),
|
?assertFlat("'abc'", value_to_sql("abc")),
|
||||||
?assertFlat("'a''b''''c'", value_to_sql("a'b''c")).
|
?assertFlat("'a''b''''c'", value_to_sql("a'b''c")).
|
||||||
|
|
||||||
|
number_test() ->
|
||||||
|
?assertEqual(sql_number(""), {error, not_a_number}),
|
||||||
|
?assertEqual(sql_number("a"), {error, not_a_number}),
|
||||||
|
?assertEqual(sql_number(" 1"), {error, not_a_number}),
|
||||||
|
?assertEqual(sql_number("1 "), {error, not_a_number}),
|
||||||
|
?assertEqual(sql_number(" 1 "), {error, not_a_number}),
|
||||||
|
?assertEqual(sql_number("0"), 0),
|
||||||
|
?assertEqual(sql_number("0.0"), 0.0),
|
||||||
|
?assertEqual(sql_number("-0.0"), 0.0),
|
||||||
|
?assertEqual(sql_number("+0.0"), 0.0).
|
||||||
|
|
||||||
create_table_sql_test() ->
|
create_table_sql_test() ->
|
||||||
?assertFlat(
|
?assertFlat(
|
||||||
"CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT, CHECK ('am'='am'));",
|
"CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT, CHECK ('am'='am'));",
|
||||||
|
|||||||
Reference in New Issue
Block a user