From 6c984799a3936300bbde62e24cce21de19fa3b3f 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 | 8 ++++++++ src/sqlite.c | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 90e2c6ce882..f1f8f813981 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -5404,6 +5404,14 @@ Database @end defun +@defun sqlite-execute-batch db statements +Execute the @acronym{SQL} @var{statements}. @var{statements} is a +string containing 0 or more @acronym{SQL} statements. This command +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..c606fa5f831 100644 --- a/src/sqlite.c +++ b/src/sqlite.c @@ -646,6 +646,17 @@ 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 in DB. +Query is a string containing 0 or more SQL statements. */) + (Lisp_Object db, Lisp_Object query) +{ + check_sqlite (db, false); + CHECK_STRING (query); + Lisp_Object encoded = encode_string(query); + return sqlite_exec (XSQLITE (db)->db, SSDATA (encoded)); +} + DEFUN ("sqlite-transaction", Fsqlite_transaction, Ssqlite_transaction, 1, 1, 0, doc: /* Start a transaction in DB. */) (Lisp_Object db) @@ -866,6 +877,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