Delete functions, modules, hooks.

This commit is contained in:
Nuno Cruces
2024-09-30 13:11:04 +01:00
parent 8b6c2b28fb
commit 25fc5a606a
12 changed files with 93 additions and 13 deletions

View File

@@ -22,6 +22,7 @@ int sqlite3_columns_go(sqlite3_stmt *stmt, int nCol, char *aType,
switch (aType[i] = sqlite3_column_type(stmt, i)) {
default: // SQLITE_NULL
aData[i] = (union sqlite3_data){};
continue;
case SQLITE_INTEGER:
aData[i].i = sqlite3_column_int64(stmt, i);
continue;

View File

@@ -53,6 +53,9 @@ int sqlite3_collation_needed_go(sqlite3 *db, bool enable) {
}
int sqlite3_create_collation_go(sqlite3 *db, const char *name, go_handle app) {
if (app == NULL) {
return sqlite3_create_collation_v2(db, name, SQLITE_UTF8, NULL, NULL, NULL);
}
int rc = sqlite3_create_collation_v2(db, name, SQLITE_UTF8, app, go_compare,
go_destroy);
if (rc) go_destroy(app);
@@ -61,6 +64,10 @@ int sqlite3_create_collation_go(sqlite3 *db, const char *name, go_handle app) {
int sqlite3_create_function_go(sqlite3 *db, const char *name, int argc,
int flags, go_handle app) {
if (app == NULL) {
return sqlite3_create_function_v2(db, name, argc, SQLITE_UTF8 | flags, NULL,
NULL, NULL, NULL, NULL);
}
return sqlite3_create_function_v2(db, name, argc, SQLITE_UTF8 | flags, app,
go_func_wrapper, /*step=*/NULL,
/*final=*/NULL, go_destroy);
@@ -68,6 +75,10 @@ int sqlite3_create_function_go(sqlite3 *db, const char *name, int argc,
int sqlite3_create_aggregate_function_go(sqlite3 *db, const char *name,
int argc, int flags, go_handle app) {
if (app == NULL) {
return sqlite3_create_function_v2(db, name, argc, SQLITE_UTF8 | flags, NULL,
NULL, NULL, NULL, NULL);
}
return sqlite3_create_function_v2(db, name, argc, SQLITE_UTF8 | flags, app,
/*func=*/NULL, go_step_wrapper,
go_final_wrapper, go_destroy);
@@ -75,6 +86,10 @@ int sqlite3_create_aggregate_function_go(sqlite3 *db, const char *name,
int sqlite3_create_window_function_go(sqlite3 *db, const char *name, int argc,
int flags, go_handle app) {
if (app == NULL) {
return sqlite3_create_window_function(db, name, argc, SQLITE_UTF8 | flags,
NULL, NULL, NULL, NULL, NULL, NULL);
}
return sqlite3_create_window_function(
db, name, argc, SQLITE_UTF8 | flags, app, go_step_wrapper,
go_final_wrapper, go_value_wrapper, go_inverse_wrapper, go_destroy);

View File

@@ -57,9 +57,10 @@ int sqlite3_config_log_go(bool enable) {
}
int sqlite3_autovacuum_pages_go(sqlite3 *db, go_handle app) {
int rc = sqlite3_autovacuum_pages(db, go_autovacuum_pages, app, go_destroy);
if (rc) go_destroy(app);
return rc;
if (app == NULL) {
return sqlite3_autovacuum_pages(db, NULL, NULL, NULL);
}
return sqlite3_autovacuum_pages(db, go_autovacuum_pages, app, go_destroy);
}
#ifndef sqliteBusyCallback

View File

@@ -163,6 +163,10 @@ static int go_vtab_shadown_name_wrapper(const char *zName) { return true; }
int sqlite3_create_module_go(sqlite3 *db, const char *zName, int flags,
go_handle handle) {
if (handle == NULL) {
return sqlite3_create_module_v2(db, zName, NULL, NULL, NULL);
}
struct go_module *mod = malloc(sizeof(struct go_module));
if (mod == NULL) {
go_destroy(handle);