From 454b23cb31332fbd5b5d2c5117394c578581b72b Mon Sep 17 00:00:00 2001 From: Javier Olaechea Date: Sun, 31 Mar 2024 23:07:10 -0500 Subject: [PATCH] Add sqlite-execute-batch command This command is similar to sqlite-execute except that it executes multiple statements in exchange for not accepting any arguments. * doc/lispref/text.texi (Database): Document it. * src/sqlite.c (Fsqlite_execute_batch): Add sqlite_execute_batch command. It is similar to sqlite-execute but it executes all the statements in the query. Unlike sqlite-execute the command doesn't take any arguments to pass down to the statements. --- doc/lispref/text.texi | 6 ++++++ src/sqlite.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 90e2c6ce882..cad6df52e55 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -5404,6 +5404,12 @@ Database @end defun +@defun sqlite-execute-batch db statements +Execute the @acronym{SQL} @var{statements}. This might be useful when we +want to execute multiple @acronym{DDL} statements. + +@end defun + @defun sqlite-select db query &optional values return-type Select some data from @var{db} and return them. For instance: diff --git a/src/sqlite.c b/src/sqlite.c index 261080da673..043801459d2 100644 --- a/src/sqlite.c +++ b/src/sqlite.c @@ -646,6 +646,15 @@ sqlite_exec (sqlite3 *sdb, const char *query) return Qt; } +DEFUN ("sqlite-execute-batch", Fsqlite_execute_batch, Ssqlite_execute_batch, 2, 2, 0, + doc: /* Execute multiple SQL statements. */) + (Lisp_Object db, Lisp_Object query) +{ + check_sqlite (db, false); + CHECK_STRING (query); + return sqlite_exec (XSQLITE (db)->db, SSDATA (query)); +} + DEFUN ("sqlite-transaction", Fsqlite_transaction, Ssqlite_transaction, 1, 1, 0, doc: /* Start a transaction in DB. */) (Lisp_Object db) @@ -866,6 +875,7 @@ syms_of_sqlite (void) defsubr (&Ssqlite_close); defsubr (&Ssqlite_execute); defsubr (&Ssqlite_select); + defsubr (&Ssqlite_execute_batch); defsubr (&Ssqlite_transaction); defsubr (&Ssqlite_commit); defsubr (&Ssqlite_rollback); -- 2.29.2.154.g7f7ebe054a