unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Philip Kaludercic <philipk@posteo.net>
To: Lynn Winebarger <owinebar@gmail.com>
Cc: Jonas Bernoulli <jonas@bernoul.li>,  emacs-devel@gnu.org
Subject: Re: [NonGNU ELPA] New package: sqlite3
Date: Tue, 21 Mar 2023 11:08:44 +0000	[thread overview]
Message-ID: <87y1nq5pkz.fsf@posteo.net> (raw)
In-Reply-To: <CAM=F=bDkq0m+nd1UmNR+Tqiho23QzW-LR6YDj2OSyQkKjX9dfg@mail.gmail.com> (Lynn Winebarger's message of "Tue, 21 Mar 2023 06:55:19 -0400")

Lynn Winebarger <owinebar@gmail.com> writes:

> On Tue, Mar 21, 2023 at 3:22 AM Jean Louis <bugs@gnu.support> wrote:
>> * Philip Kaludercic <philipk@posteo.net> [2023-03-14 19:17]:
>> > Jonas Bernoulli <jonas@bernoul.li> writes:
>> >
>> > >> Do you have a link to the package you are talking about?
>> > >
>> > > Ups, here you go: https://github.com/pekingduck/emacs-sqlite3-api
>> >
>> > Would you happen to know if there is some rx-like, s-expression based
>> > language for constructing SQL queries.  I am not looking for anything
>> > generic, just a way to avoid writing long strings.
>>
>> While such packages exists, for me I do not find them usable as then I
>> have to forget about the SQL and learn about the new Emacs Lisp
>> structure that is to correspond to SQL. I see personally no benefit in
>> that.
>
> There are a couple of good reasons to use an sexpr-based query language:
> * Avoiding sql injection issues by putting all the boilerplate for
> interpolating data into queries into a macro expander

To be fair, this is not a concern because SQLite supports parameterised
queries:

  (sqlite-execute db "insert into foo values (?, ?)" '("bar" 2))

> * Treating code as data and vice-versa is a powerful programming technique

Not sure about this.... Strings are data too, but neither the SQL
statements or the regular expressions are (Elisp) code.  To me the
advantage of something like `rx' is that I can insert comments and make
use of regular indentation.  Then again, it would also be possible to
provide specialised SQLite wrappers (sqlite-insert, sqlite-update, ...)
instead of taking a `rx' like approach to generating strings.

> The real power of embedding sqlite in elisp will come when sqlite data
> structures can be used as efficient representations of sets and
> relations in lisp code.  Eventually, I would also expect to see
> mutually recursive code enabled, with "virtual table" modules for
> emacs data structures so they can be transparently used in sql code,
> along with sql functions written in lisp.  For example, you might
> create a table from lisp data using a select statement rather than
> executing a large number of insert statements.  In-memory databases
> would not be unusual, and should be dumpable objects.  

What is the point of using a in-memory database if you want to dump it?

>                                                        At that point,
> you could expect to see such objects frequently used, e.g. for tag
> tables, user configuration, abstract interpretation of lisp code, etc.



  reply	other threads:[~2023-03-21 11:08 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-04 10:17 [NonGNU ELPA] New package: sqlite3 Jonas Bernoulli
2023-03-04 11:39 ` Philip Kaludercic
2023-03-06 18:43   ` Jonas Bernoulli
2023-03-14 16:16     ` Philip Kaludercic
2023-03-14 22:46       ` Jonas Bernoulli
2023-03-15  8:05         ` Philip Kaludercic
2023-03-21  6:51       ` Jean Louis
2023-03-21 10:55         ` Lynn Winebarger
2023-03-21 11:08           ` Philip Kaludercic [this message]
2023-03-21 11:56             ` Lynn Winebarger
2023-03-21 12:18               ` Philip Kaludercic
2023-03-21 13:04                 ` Lynn Winebarger
2023-03-21 16:53                   ` Philip Kaludercic
2023-03-21 21:00                     ` Tomas Hlavaty
2023-04-07  4:53                       ` Jean Louis
2023-03-21 23:58                     ` Lynn Winebarger
2023-03-22  8:10                       ` Philip Kaludercic
2023-03-22 15:05                         ` Lynn Winebarger
2023-03-23  0:07                           ` Lynn Winebarger
2023-03-21 20:42             ` Tomas Hlavaty
     [not found]               ` <875yatn70c.fsf@posteo.net>
2023-03-21 22:46                 ` Tomas Hlavaty
2023-03-22  8:00                   ` Philip Kaludercic
2023-03-21 20:36         ` Tomas Hlavaty
2023-04-07  5:17           ` Jean Louis
2023-03-06  5:08 ` Richard Stallman
2023-03-14 14:36   ` Jonas Bernoulli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87y1nq5pkz.fsf@posteo.net \
    --to=philipk@posteo.net \
    --cc=emacs-devel@gnu.org \
    --cc=jonas@bernoul.li \
    --cc=owinebar@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).