unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Qiantan Hong <qhong@mit.edu>
To: Alexandre Garreau <galex-713@galex-713.eu>
Cc: Philip Kaludercic <philipk@posteo.net>,
	"larsi@gnus.org" <larsi@gnus.org>, "rms@gnu.org" <rms@gnu.org>,
	"emacs-devel@gnu.org" <emacs-devel@gnu.org>
Subject: Re: sqlite3
Date: Mon, 13 Dec 2021 12:23:04 +0000	[thread overview]
Message-ID: <1FAB70D6-1E6A-4B08-A9FD-BD0F0F4550FB@mit.edu> (raw)
In-Reply-To: <3128233.LASfulB0cI@galex-713.eu>

[-- Attachment #1: Type: text/plain, Size: 1164 bytes --]

>>> I’m thinking of rather not exposing multisession.el directly,
>>> but instead use it as a backend for store.el.
>> 
>> What is store.el?  Could you show us its interface specs?
>> Is it written, or is it a proposal?
> 
> still a proposal, of a common abstraction over persistent key-value 
> stores, that would have sqlite among backends, but also lisp-implemented 
> stores such as the “one-file-per-value in a directory” persist.el currently 
> use (most efficient on btree fs like btrfs or zfs), and a logging delta 
> store qiantan hong implemented initially on a scratch by reaction to 
> sqlite suggestion.
It is now written BTW. I’ve finished the work of extracting
key value store part from resist!.el. I haven’t start extracting
persistent variable part as I haven’t hear back about persist.el
namespace availability yet.

I’ve already included the above mentioned two backends.
Lars’ sqlite3 implementation could be included as the third
with slight modification.

Code is hosted at https://code.librehq.com/qhong/store.el/
For people that don’t want to follow link, I also attach the
current revision below

[-- Attachment #2: store.el --]
[-- Type: application/octet-stream, Size: 15645 bytes --]

;;; store.el --- Persistant Key-Value Store  -*- lexical-binding: t; -*-

;; Copyright (C) 2021 Free Software Foundation, Inc.

;; Author: Qiantan Hong <qhong@alum.mit.edu>
;; Maintainer: Qiantan Hong <qhong@alum.mit.edu>
;; Keywords: persistence database
;; Version: 0.0.1

;; This file is part of GNU Emacs.

;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.

;;; Commentary:
;; This package implements a persistent key-value store facility.

;; The interface provides the following functions:

;; - Creating and compacting store: `store-create', `store-compact'
;; - Get the path of a store: `store-path'
;; - Put, remove and look up key value pairs: `store-put',
;;   `store-rem', `store-get',
;; - List operations: `store-push', `store-delete'
;; See their docstrings for details.

;; The package supports multiple backends.  All backends should
;; persist all changes immediately into external storage.  It comes
;; with the following built-in backends:

;; - `log': Log-structured incremental S-expr store.  Only increments
;;   are stored, therefore the cost for each persistent operation
;;   should be independent of the total size of the store, and the
;;   cost for each persistent list operation should be independent of
;;   the total size of the list.

;; - `fs': File-system based S-expr store.  Use a file per key-value
;;   pair, with key S-expr as file name and value S-expr as content.

;;; Code:

(require 'cl-lib)
(require 'cl-generic)

;;; Customs
(defgroup persistence nil "Persistence facility."
          :group 'emacs)

(defcustom store-compact-idle-time 30
  "Idle time in seconds to wait before compacting key value stores."
  :type 'number :group 'persistence)

;;; Generic Interface
(cl-defgeneric store-create (path backend &key &allow-other-keys)
  "Create and return a key value store backed by PATH and BACKEND.
If the backing storage doesn't exist, create it.  Otherwise,
content of the returned store is synchronized to the backing
storage.")
(cl-defgeneric store-compact (store &optional nonblock)
  "Compress/vacuum/garbage collect STORE, if applicable.
If the backing storage is already locked, signal `file-locked'
immediately if NONBLOCK is non nil or wait if NONBLOCK is nil."
  ;; We provide a mock implementation for backends that do not support
  ;; compacting.
  nil)
(cl-defgeneric store-path (store)
  "Return the path of STORE's backing storage.
The returned path should create a store backed by the same
storage when passed to `store-create'.")

(cl-defgeneric store-call-with-transaction (store function &key (nonblock nil) (lock t))
  "Call FUNCTION while holding a transaction for STORE.
If LOCK is non nil, grab a lock of the backing storage when
applicable.  If the backing storage is already locked, wait if
NONBLOCK is nil or signal `file-locked' immediately if NONBLOCK
is non nil."
  ;; We provide a mock implementation for backends that do not support
  ;; transaction.
  (funcall function))
(cl-defmacro store-with-transaction
    ((store &key (nonblock nil) (lock t)) &rest body)
  "Run BODY while holding a transaction for STORE.
If LOCK is non nil, grab a lock of the backing storage when
applicable.  If the backing storage is already locked, wait if
NONBLOCK is nil or signal `file-locked' immediately if NONBLOCK
is non nil."
  (declare (indent 1) (debug ([&rest form] body)))
  `(store-call-with-transaction ,store (lambda () ,@body)
                             :lock ,lock :nonblock ,nonblock))

(cl-defgeneric store-put (key value store)
  "Associate KEY with VALUE in STORE.
The operation is immediately persisted.
Return VALUE.")
(cl-defgeneric store-get (key store &optional dflt)
  "Look up KEY in STORE and return its associated value.
If KEY is not found, return DFLT which defaults to nil.")
(cl-defgeneric store-rem (key store)
  "Remove KEY from STORE.
The operation is immediately persisted.
Return nil.")
(gv-define-setter store-get (val key store &optional _dflt)
  ;; TODO: can we detect if the place is used in `push', `cl-pushnew',
  ;; etc and use the potentially more efficient `store-push' instead?
  `(store-put ,key ,val ,store))

(cl-defgeneric store-push (key value store)
  "Add VALUE to the list associated with KEY in STORE.
The operation is immediately persisted.
Return the new list with VALUE added."
  ;; We provide a default implementation for backends not natively
  ;; supporting list operations.  Backends are encouraged to override
  ;; this with more efficient implementation.
  (store-put key (cons value (store-get key store)) store))
(cl-defgeneric store-delete (key value store)
  "Remove VALUE from the list associated with KEY in STORE.
The operation is immediately persisted.
Return the new list with VALUE removed."
  ;; We provide a default implementation for backends not natively
  ;; supporting list operations.  Backends are encouraged to override
  ;; this with more efficient implementation.
  (store-put key (delete value (store-get key store)) store))

;;; Automatic Compacting
(defvar store-need-compacting-list nil
  "List of stores that shall be compacted by `store-compact-demon'.")
(defvar store-compact-idle-timer nil "Idle timer that runs `store-compact-demon'.")
(defun store-compact-demon ()
  (while store-need-compacting-list
    (let ((store (pop store-need-compacting-list)))
      (condition-case nil
          (store-compact store 'nonblock)
        (file-locked
         (message "Giving up compacting %s this time, because it is locked."
                  (store-path store))
         nil)))))
(defun store-compact-demon-summon ()
  (unless store-compact-idle-timer
    (setq store-compact-idle-timer (timer-create))
    (timer-set-function store-compact-idle-timer 'store-compact-demon)
    (timer-set-idle-time store-compact-idle-timer store-compact-idle-time))
  (unless (memq store-compact-idle-timer timer-list)
    (timer-activate-when-idle store-compact-idle-timer t)))

;;; Serialization utility
(defsubst store--print (form)
  (let ((print-length nil) (print-level nil))
    (prin1 form (current-buffer)))
  (insert "\n"))

;;; `log' backend
(defvar store-inhibit-ask-user-about-lock nil)
(defun store-inhibit-ask-user-about-lock-advice (orig-func file opponent)
  (if store-inhibit-ask-user-about-lock
      (signal 'file-locked (list file opponent))
    (funcall orig-func file opponent)))
(advice-add 'ask-user-about-lock :around #'store-inhibit-ask-user-about-lock-advice)
(defvar store-inhibit-ask-user-about-supersession-threat nil)
(defun store-inhibit-ask-user-about-supersession-threat-advice (orig-func file)
  (unless store-inhibit-ask-user-about-supersession-threat
    (funcall orig-func file)))
(advice-add 'ask-user-about-supersession-threat :around #'store-inhibit-ask-user-about-supersession-threat-advice)

(cl-defstruct (store-log (:constructor store-log--make))
  path (table (make-hash-table :test 'equal)) (log-count 0) compact-ratio
  ;; I used to use a `gensym' redirection to exploit thread-safe
  ;; dynamic binding for `store-log-transaction-buffer', but currently
  ;; I dropped the support for recursive and concurrent transaction
  ;; (due to limitation of `lock-file').  When we add it back in the
  ;; future, remember the `gensym' trick.
  transaction-buffer)

(defun store-log--lock (store)
  (setf (buffer-modified-p (store-log-transaction-buffer store)) t) ; otherwise `lock-buffer' would do nothing
  (with-current-buffer (store-log-transaction-buffer store)
    (let ((create-lockfiles t)
          (store-inhibit-ask-user-about-lock t)
          (store-inhibit-ask-user-about-supersession-threat t))
      (lock-buffer))))
(cl-defmethod store-call-with-transaction ((store store-log) function &key (nonblock nil) (lock t))
  (when (store-log-transaction-buffer store)
    (error "Recursive or concurrent transaction is currently not supported"))
  (let ((buffer (generate-new-buffer " *temp log transaction*")))
    (setf (buffer-local-value 'buffer-file-truename buffer) (store-log-path store))
    (unwind-protect
         (progn
           (setf (store-log-transaction-buffer store) buffer)
           (when lock
             (if nonblock
                 (store-log--lock store)
               (while (not (ignore-errors (store-log--lock store) t))
                 (sit-for 0.0 t))))
           (prog1 (funcall function)
             (with-current-buffer buffer
               (write-region nil nil (store-log-path store) t 'silent))))
      (setf (store-log-transaction-buffer store) nil)
      (kill-buffer buffer))))
(cl-defmacro store-log--ensure-transaction-buffer ((store &rest args) &rest body)
  "Make sure BODY is executed inside a transaction buffer for STORE.
If no transaction buffer for STORE is in effect, create a temporary buffer
for appending logs.
ARGS are passed to `store-call-with-transaction'."
  (declare (indent 1) (debug ([&rest form] body)))
  (let ((store-var (gensym "store"))
        (body-sym (gensym "body")))
    `(let ((,store-var ,store))
       (cl-flet ((,body-sym ()
                   (with-current-buffer (store-log-transaction-buffer ,store-var)
                     ,@body)))
         (if (store-log-transaction-buffer ,store-var)
             (,body-sym)
           (store-call-with-transaction ,store-var #',body-sym ,@args))))))

(defun store-log-load (store &optional incremental)
  "Load the content STORE from its backing file.
If INCREMENTAL is nil, load the entire backing file and replace
STORE's content.  Otherwise, INCREMENTAL should be a number
specifying a start offset of the backing file, and the portion
after this offset will be loaded and added to STORE's
content."
  (store-with-transaction (store)
    (unless incremental (clrhash (store-log-table store)))
    (condition-case nil
        (with-temp-buffer
          (insert-file-contents (store-log-path store) nil (or incremental 0))
          (while (< (point) (1- (point-max))) ; exclude trailing newline
            (let ((entry (read (current-buffer))))
              (pcase (car entry)
                ('++ (puthash (cadr entry) (caddr entry) (store-log-table store)))
                ('-- (remhash (cadr entry) (store-log-table store)))
                ('l+ (push (caddr entry) (gethash (cadr entry) (store-log-table store))))
                ('l- (puthash (cadr entry)
                              (delete (caddr entry) (gethash (cadr entry) (store-log-table store)))
                              (store-log-table store))))
              (cl-incf (store-log-log-count store)))))
      (end-of-file
       ;; We might encounter trailing unbalanced form if Emacs
       ;; crashed in the middle of `log-put'.  We compact the file
       ;; and fix unbalanced form as a side effect
       (store-compact store)))))
(cl-defmethod store-create (path (_backend (eql log)) &key (compact-ratio 4.0) &allow-other-keys)
  "Create a key value store backed by file PATH.
If file PATH does not exist, create it and return an empty key value store.
If file PATH exists, load its content into a key value store and return it.

COMPACT-RATIO controls automatic compacting.  Arrange for
compacting if log count exceeds (COMPACT-RATIO * size-of-table)."
  (let* ((store-log (store-log--make :path path :compact-ratio compact-ratio)))
    (when (file-exists-p path)
      (store-log-load store-log))
    store-log))
(cl-defmethod store-path ((store store-log))
  (store-log-path store))

(cl-defmethod store-compact ((store store-log) &optional nonblock)
  (store-log--ensure-transaction-buffer (store :nonblock nonblock)
    (setf (store-log-log-count store) (hash-table-count (store-log-table store)))
    (with-temp-buffer
      (maphash (lambda (key value) (store--print (list '++ key value)))
               (store-log-table store))
      (let ((file-precious-flag t))
        (write-region nil nil (store-log-path store) nil 'silent)))))

(defsubst store-log--inc-log-count (store)
  "Increase log count for STORE, possibly arrange for compacting.
Arrange for compacting if log count exceeds (compact-ratio * size-of-table)."
  (cl-incf (store-log-log-count store))
  (when (and (store-log-compact-ratio store)
             (> (store-log-log-count store)
                (* (store-log-compact-ratio store) (hash-table-count (store-log-table store)))))
    (cl-pushnew store store-need-compacting-list)
    (store-compact-demon-summon)))
(cl-defmethod store-put (key value (store store-log))
  (store-log--ensure-transaction-buffer (store)
    (store--print (list '++ key value))
    (store-log--inc-log-count store)
    (puthash key value (store-log-table store))))
(cl-defmethod store-rem (key (store store-log))
  (store-log--ensure-transaction-buffer (store)
    (store--print (list '-- key))
    (store-log--inc-log-count store)
    (remhash key (store-log-table store))))
(cl-defmethod store-push (key value (store store-log))
  (store-log--ensure-transaction-buffer (store)
    (store--print (list 'l+ key value))
    (store-log--inc-log-count store)
    (push value (gethash key (store-log-table store)))))
(cl-defmethod store-delete (key value (store store-log))
  (store-log--ensure-transaction-buffer (store)
    (store--print (list 'l- key value))
    (store-log--inc-log-count store)
    (puthash key (delete value (gethash key (store-log-table store)))
             (store-log-table store))))
(cl-defmethod store-get (key (store store-log) &optional dflt)
  (gethash key (store-log-table store) dflt))

;; `fs' backend
(cl-defstruct (store-fs (:constructor store-fs--make))
  path)
(cl-defmethod store-create (path (_backend (eql fs)) &key &allow-other-keys)
  (if (file-exists-p path)
      (unless (file-directory-p path)
        (error "`fs' backend requires PATH to be a directory, but %s is not" path))
    (mkdir path))
  ;; We normalize PATH right away, saving future hassles.
  (store-fs--make :path (file-name-as-directory path)))
(cl-defmethod store-path ((store store-fs))
  (store-fs-path store))

(defsubst store-fs--key-to-path (key store)
  ;; TODO: escape illegal characters
  (concat (store-fs-path store) (prin1-to-string key)))
(cl-defmethod store-put (key value (store store-fs))
  (with-temp-buffer
    (store--print value)
    (let ((file-precious-flag t))
      (write-region nil nil
                    (store-fs--key-to-path key store)
                    nil 'quiet)))
  value)
(cl-defmethod store-get (key (store store-fs) &optional dflt)
  (let ((path (store-fs--key-to-path key store)))
    (if (file-exists-p path)
        (with-temp-buffer
          (insert-file-contents path)
          (read (current-buffer)))
      dflt)))
(cl-defmethod store-rem (key (store store-fs))
  (delete-file (store-fs--key-to-path key store))
  nil)
(provide 'store)
;;; store.el ends here

[-- Attachment #3: ATT00001.c --]
[-- Type: text/plain, Size: 22 bytes --]



Best,
Qiantan


  reply	other threads:[~2021-12-13 12:23 UTC|newest]

Thread overview: 544+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-06  1:51 sqlite3 Lars Ingebrigtsen
2021-12-06  5:06 ` sqlite3 Yuan Fu
2021-12-06  5:09   ` sqlite3 Lars Ingebrigtsen
2021-12-06 14:32     ` sqlite3 T.V Raman
2021-12-06 15:12       ` sqlite3 Qiantan Hong
2021-12-06  5:16 ` sqlite3 Stefan Monnier
2021-12-06  5:28   ` sqlite3 Lars Ingebrigtsen
2021-12-06  6:05     ` sqlite3 Stefan Monnier
2021-12-06  6:09       ` sqlite3 Lars Ingebrigtsen
2021-12-06  6:18         ` sqlite3 Lars Ingebrigtsen
2021-12-06  5:26 ` sqlite3 Po Lu
2021-12-06  5:30   ` sqlite3 Lars Ingebrigtsen
2021-12-06  5:39     ` sqlite3 Po Lu
2021-12-06  5:43       ` sqlite3 Lars Ingebrigtsen
2021-12-06  5:52         ` sqlite3 Po Lu
2021-12-06  5:57           ` sqlite3 Lars Ingebrigtsen
2021-12-06  6:07             ` sqlite3 Po Lu
2021-12-06  6:10               ` sqlite3 Lars Ingebrigtsen
2021-12-06  6:18                 ` sqlite3 Po Lu
2021-12-06  6:23                   ` sqlite3 Lars Ingebrigtsen
2021-12-06  6:56                     ` sqlite3 Tim Cross
2021-12-06  7:57                       ` sqlite3 Po Lu
2021-12-06  8:02                     ` sqlite3 Colin Baxter 😺
2021-12-06  8:04                       ` sqlite3 Po Lu
2022-02-14 12:09                   ` sqlite3 Jean Louis
2022-02-14 12:08         ` sqlite3 Jean Louis
2021-12-06  5:29 ` sqlite3 Eric Abrahamsen
2021-12-06 19:47   ` sqlite3 cesar mena
2021-12-06 20:21     ` sqlite3 Eric Abrahamsen
2021-12-06 20:36       ` sqlite3 Qiantan Hong
2022-02-14 12:16         ` sqlite3 Jean Louis
2021-12-06 20:40       ` sqlite3 Lars Ingebrigtsen
2021-12-06 20:56         ` sqlite3 Eric Abrahamsen
2021-12-06 21:16           ` sqlite3 cesar mena
2021-12-06 21:37             ` sqlite3 Eric Abrahamsen
2021-12-06 21:54               ` sqlite3 cesar mena
2021-12-07  4:15             ` sqlite3 Richard Stallman
2021-12-07  4:33               ` sqlite3 Po Lu
2021-12-08  4:35                 ` sqlite3 Richard Stallman
2021-12-08  4:41                   ` sqlite3 Po Lu
2021-12-09  4:11                     ` How to save data Richard Stallman
2021-12-08  5:41                   ` sqlite3 Qiantan Hong
2021-12-08  5:43                     ` sqlite3 Qiantan Hong
2021-12-08 13:14                     ` sqlite3 Eli Zaretskii
2021-12-10 21:25                       ` sqlite3 Alan Mackenzie
2021-12-11  4:08                         ` sqlite3 Richard Stallman
2021-12-11  7:33                         ` sqlite3 Eli Zaretskii
2021-12-14 20:09                         ` sqlite3 Karl Fogel
2021-12-14 22:01                           ` sqlite3 Alan Mackenzie
2021-12-14 22:17                             ` sqlite3 Karl Fogel
2021-12-15  0:13                             ` sqlite3 Óscar Fuentes
2021-12-15  1:36                             ` sqlite3 Alexandre Garreau
2021-12-15  2:04                               ` sqlite3 Po Lu
2021-12-15  2:04                               ` sqlite3 Po Lu
2021-12-15 17:25                               ` sqlite3 Georges Ko
2021-12-16 11:49                               ` sqlite3 Alexandre Garreau
2021-12-15 13:06                             ` sqlite3 Eli Zaretskii
2021-12-15 13:12                               ` sqlite3 Po Lu
2021-12-17 10:37                               ` sqlite3 Alan Mackenzie
2021-12-17 12:48                                 ` sqlite3 Eli Zaretskii
2021-12-17 13:05                                   ` sqlite3 dick
2021-12-17 14:02                                     ` sqlite3 Eli Zaretskii
2021-12-17 15:01                                       ` sqlite3 dick
2021-12-18  4:42                                 ` sqlite3 Richard Stallman
2021-12-18  7:26                                   ` sqlite3 Eli Zaretskii
2022-02-14 12:33                         ` sqlite3 Jean Louis
2021-12-09  7:05                     ` sqlite3 Alexandre Garreau
2021-12-09 15:52                       ` sqlite3 Georges Ko
2022-02-14 12:45                       ` sqlite3 Jean Louis
2022-02-14 15:41                         ` sqlite3 Alexandre Garreau
2022-02-14 12:21                   ` sqlite3 Jean Louis
2022-02-15 18:19                     ` sqlite3 Jonas Bernoulli
2022-02-15 19:05                       ` sqlite3 Stefan Monnier
2022-02-15 21:45                       ` sqlite3 Jean Louis
2021-12-07  5:10               ` sqlite3 Lars Ingebrigtsen
2021-12-08 18:36                 ` sqlite3 Pip Cet
2021-12-08 18:57                   ` sqlite3 Eli Zaretskii
2021-12-09  5:52                     ` sqlite3 Alexandre Garreau
2021-12-09 19:46                     ` sqlite3 Pip Cet
2021-12-09 20:14                       ` sqlite3 Eli Zaretskii
2021-12-09 20:30                         ` sqlite3 Qiantan Hong
2021-12-10  4:45                           ` sqlite3 Michael Heerdegen
2021-12-10 11:15                             ` sqlite3 Qiantan Hong
2021-12-10 11:42                               ` sqlite3 Eli Zaretskii
2021-12-10 12:00                                 ` sqlite3 Qiantan Hong
2021-12-10 12:22                                   ` sqlite3 Eli Zaretskii
2021-12-11  5:32                               ` sqlite3 Michael Heerdegen
2021-12-11 11:41                                 ` sqlite3 Michael Heerdegen
2022-02-14 13:05                           ` sqlite3 Jean Louis
2021-12-09 22:50                         ` sqlite3 Joost Kremers
2021-12-10  8:12                           ` sqlite3 Eli Zaretskii
2021-12-10  8:26                           ` sqlite3 tomas
2021-12-11  4:07                         ` sqlite3 Richard Stallman
2021-12-11  4:11                           ` sqlite3 Lars Ingebrigtsen
2021-12-12  3:59                             ` sqlite3 Richard Stallman
2021-12-12  4:54                               ` sqlite3 Lars Ingebrigtsen
2021-12-13  3:44                                 ` sqlite3 Richard Stallman
2021-12-13  4:12                                   ` sqlite3 Lars Ingebrigtsen
2021-12-14  4:12                                     ` sqlite3 Richard Stallman
2021-12-14  7:25                                       ` sqlite3 Lars Ingebrigtsen
2021-12-15  5:15                                         ` sqlite3 Richard Stallman
2021-12-15  7:08                                           ` sqlite3 Lars Ingebrigtsen
2021-12-16  4:41                                             ` sqlite3 Richard Stallman
2021-12-16  5:55                                               ` sqlite3 Lars Ingebrigtsen
2021-12-16  8:10                                                 ` sqlite3 Eli Zaretskii
2021-12-17  7:34                                                   ` sqlite3 Lars Ingebrigtsen
2022-02-14 13:45                                           ` sqlite3 Jean Louis
2022-02-14 13:33                                       ` sqlite3 Jean Louis
2021-12-13  4:25                                   ` sqlite3 Georges Ko
2021-12-13  8:49                                   ` sqlite3 Alexandre Garreau
2021-12-14  4:12                                     ` sqlite3 Richard Stallman
2021-12-11  8:29                           ` sqlite3 Eli Zaretskii
2021-12-11  9:59                             ` sqlite3 Lars Ingebrigtsen
2021-12-11 11:33                               ` sqlite3 Eli Zaretskii
2021-12-12  4:23                                 ` sqlite3 Lars Ingebrigtsen
2021-12-11 13:57                               ` sqlite3 Pip Cet
2021-12-12  4:26                                 ` sqlite3 Lars Ingebrigtsen
2021-12-12  5:13                                   ` sqlite3 Alexandre Garreau
2021-12-12  5:43                                     ` sqlite3 Lars Ingebrigtsen
2021-12-11 13:59                               ` sqlite3 Stefan Monnier
2021-12-11 18:47                                 ` sqlite3 Juri Linkov
2021-12-12  4:38                                   ` sqlite3 Lars Ingebrigtsen
2021-12-12  4:37                                 ` sqlite3 Lars Ingebrigtsen
2021-12-12  8:34                                   ` sqlite3 Juri Linkov
2021-12-12  9:10                                     ` sqlite3 Lars Ingebrigtsen
2021-12-12 16:02                                   ` sqlite3 Stefan Monnier
2021-12-13  4:07                                     ` sqlite3 Lars Ingebrigtsen
2021-12-11 18:50                               ` sqlite3 Juri Linkov
2021-12-12  4:41                                 ` sqlite3 Lars Ingebrigtsen
2021-12-12  3:59                             ` sqlite3 Richard Stallman
2022-02-14 13:31                           ` sqlite3 Jean Louis
2022-02-15  4:31                             ` sqlite3 Richard Stallman
2021-12-10  4:53                       ` persistent data feature Richard Stallman
2021-12-10  5:39                         ` Lars Ingebrigtsen
2021-12-10  5:50                           ` Po Lu
2021-12-10  6:23                             ` Lars Ingebrigtsen
2021-12-10  8:46                               ` Eli Zaretskii
2021-12-10 12:58                           ` Stefan Monnier
2021-12-10 13:05                             ` Lars Ingebrigtsen
2021-12-10 14:37                               ` Stefan Monnier
2021-12-10 19:32                                 ` Matt Armstrong
2021-12-10 20:02                                   ` Stefan Monnier
2021-12-11  1:43                                     ` Ihor Radchenko
2021-12-11  5:13                                       ` Matt Armstrong
2021-12-10 13:14                             ` Tassilo Horn
2021-12-10 13:38                               ` Qiantan Hong
2021-12-10 17:18                                 ` Stefan Monnier
2021-12-10 20:29                                 ` Tassilo Horn
2021-12-11  1:30                             ` Ihor Radchenko
2021-12-11 13:53                               ` Stefan Monnier
2021-12-11 14:13                                 ` Qiantan Hong
2021-12-12  3:48                                   ` Ihor Radchenko
2021-12-12  4:58                                     ` Alexandre Garreau
2021-12-12  5:18                                       ` Qiantan Hong
2021-12-12  5:43                                         ` Ihor Radchenko
2021-12-11 15:38                               ` Tomas Hlavaty
2021-12-11 18:38                                 ` Alexandre Garreau
2021-12-11 19:36                                   ` Tomas Hlavaty
2021-12-11 20:15                                     ` Eli Zaretskii
2021-12-11 20:41                                       ` Alexandre Garreau
2021-12-11 20:47                                       ` Alexandre Garreau
2021-12-13  3:42                                       ` Richard Stallman
2021-12-13 12:42                                         ` Eli Zaretskii
2021-12-13 13:04                                           ` Po Lu
2021-12-13 13:12                                             ` Eli Zaretskii
2021-12-14  4:13                                               ` Richard Stallman
2021-12-14  4:34                                                 ` Po Lu
2021-12-15  5:15                                                   ` Richard Stallman
2021-12-14 12:56                                                 ` Eli Zaretskii
2021-12-15  5:16                                                   ` Richard Stallman
2021-12-15 15:01                                                     ` Alexandre Garreau
2021-12-15 16:44                                                       ` Stefan Monnier
2021-12-16  4:40                                                         ` Richard Stallman
2021-12-16  4:47                                                           ` Stefan Monnier
2021-12-16  5:10                                                         ` Alexandre Garreau
2021-12-16  8:00                                                           ` Eli Zaretskii
2021-12-17  4:25                                                             ` Richard Stallman
2022-02-14 14:26                                                 ` Jean Louis
2022-02-14 14:23                                     ` Jean Louis
2021-12-13  3:42                                 ` Richard Stallman
2021-12-13  7:43                                   ` LdBeth
2021-12-13  9:32                                     ` Po Lu
2021-12-13  9:54                                       ` LdBeth
2021-12-17  0:20                                 ` Yuan Fu
2021-12-17  7:44                                   ` Lars Ingebrigtsen
2021-12-11 17:26                             ` Eric Abrahamsen
2021-12-11  4:08                           ` Richard Stallman
2021-12-10  4:53                       ` persistent data feature, or sqlite3 feature? Richard Stallman
2022-02-14 14:07                         ` Jean Louis
2022-02-14 12:52                     ` sqlite3 Jean Louis
2021-12-08 20:45                   ` sqlite3 Daniel Fleischer
2021-12-09  6:55                     ` sqlite3 Óscar Fuentes
2021-12-09  9:32                       ` sqlite3 Eli Zaretskii
2021-12-09  9:50                         ` sqlite3 Óscar Fuentes
2021-12-09 10:16                           ` sqlite3 Eli Zaretskii
2021-12-09 16:21                             ` sqlite3 Alexandre Garreau
2022-02-14 14:31                       ` sqlite3 Jean Louis
2021-12-09  0:09                   ` sqlite3 Lars Ingebrigtsen
2021-12-09  7:01                     ` sqlite3 Qiantan Hong
2021-12-09 19:39                     ` sqlite3 Pip Cet
2021-12-10  0:33                       ` sqlite3 Lars Ingebrigtsen
2021-12-10 11:19                         ` sqlite3 Pip Cet
2021-12-10 11:24                           ` sqlite3 Lars Ingebrigtsen
2021-12-06 21:15         ` sqlite3 Qiantan Hong
2021-12-15  0:17           ` sqlite3 Tomas Hlavaty
2021-12-15  1:22             ` sqlite3 Alexandre Garreau
2022-02-14 12:14   ` sqlite3 Jean Louis
2021-12-06  5:50 ` sqlite3 Bastien
2021-12-06  6:40 ` sqlite3 Clément Pit-Claudel
2021-12-06  6:45   ` sqlite3 Lars Ingebrigtsen
2021-12-08  0:17     ` sqlite3 Jonas Bernoulli
2021-12-06  8:03 ` sqlite3 Alfred M. Szmidt
2021-12-06  8:06   ` sqlite3 Po Lu
2021-12-06  8:16   ` sqlite3 Lars Ingebrigtsen
2021-12-06 12:11     ` sqlite3 Alfred M. Szmidt
2021-12-06 16:17       ` sqlite3 Lars Ingebrigtsen
2021-12-06 17:10   ` sqlite3 Jose E. Marchesi
2021-12-07  0:37     ` sqlite3 Po Lu
2021-12-07  3:44       ` sqlite3 Jose E. Marchesi
2021-12-06 10:25 ` sqlite3 Arthur Miller
2021-12-06 11:18   ` sqlite3 Stefan Kangas
2021-12-06 11:58     ` sqlite3 Qiantan Hong
2021-12-06 12:29       ` sqlite3 Po Lu
2021-12-06 12:42       ` sqlite3 Arthur Miller
2021-12-06 13:08       ` sqlite3 Stefan Kangas
2021-12-06 15:34         ` sqlite3 Alexandre Garreau
2021-12-06 12:57     ` sqlite3 Arthur Miller
2021-12-06 16:08     ` sqlite3 Lars Ingebrigtsen
2021-12-06 18:47       ` sqlite3 Stefan Monnier
2021-12-06 18:53         ` sqlite3 Lars Ingebrigtsen
2021-12-07 22:56     ` package-selected-packages in Customize [was: sqlite3] Joost Kremers
2021-12-08  0:50       ` Stefan Kangas
2021-12-06 11:46   ` sqlite3 Byung-Hee HWANG
2021-12-06 12:09   ` sqlite3 Po Lu
2021-12-06 12:36     ` sqlite3 Arthur Miller
2021-12-06 12:42       ` sqlite3 Po Lu
2021-12-06 12:57         ` sqlite3 Qiantan Hong
2021-12-06 13:01           ` sqlite3 Qiantan Hong
2021-12-06 13:48           ` sqlite3 John Yates
2021-12-06 13:58             ` sqlite3 Qiantan Hong
2021-12-06 14:09               ` Mutating existing persistent data (was: sqlite3) Stefan Monnier
2021-12-07  2:53                 ` Mutating existing persistent data Lars Ingebrigtsen
2021-12-07  3:20                   ` Po Lu
2021-12-07  5:08                     ` Lars Ingebrigtsen
2021-12-07  5:22                       ` Po Lu
2021-12-07  5:25                         ` Lars Ingebrigtsen
2021-12-07  5:36                           ` Po Lu
2021-12-07  5:41                             ` Lars Ingebrigtsen
2021-12-07  5:42                               ` Lars Ingebrigtsen
2021-12-07  5:55                               ` Po Lu
2021-12-07  6:14                                 ` Lars Ingebrigtsen
2021-12-07  6:24                                   ` Po Lu
2021-12-07  6:27                                     ` Qiantan Hong
2021-12-07  7:28                                       ` tomas
2021-12-07  7:42                                         ` Lars Ingebrigtsen
2021-12-07  7:49                                           ` Qiantan Hong
2021-12-07  7:56                                           ` tomas
2021-12-07  8:54                                           ` Andreas Schwab
2021-12-07  6:25                       ` Qiantan Hong
2021-12-07  6:56                         ` Lars Ingebrigtsen
2021-12-07  6:59                           ` Qiantan Hong
2021-12-07  7:00                             ` Lars Ingebrigtsen
2021-12-07  7:03                               ` Qiantan Hong
2021-12-07  3:33                   ` Ihor Radchenko
2021-12-07 13:44                   ` Eli Zaretskii
2021-12-07 20:04                     ` Lars Ingebrigtsen
2021-12-07 20:18                       ` Eli Zaretskii
2021-12-07 20:27                         ` Lars Ingebrigtsen
2021-12-07 21:26                           ` Stefan Kangas
2021-12-08  1:16                             ` Lars Ingebrigtsen
2021-12-08  2:47                               ` Bob Rogers
2021-12-07 21:42                           ` Joost Kremers
2021-12-07 22:13                             ` Joost Kremers
2021-12-09  4:11                               ` Richard Stallman
2021-12-07 22:34                           ` Bob Rogers
2022-02-14 14:47               ` sqlite3 Jean Louis
2021-12-06 13:12         ` sqlite3 Tim Cross
2021-12-06 14:00         ` sqlite3 Arthur Miller
2021-12-06 12:42       ` sqlite3 Qiantan Hong
2021-12-06 13:07         ` sqlite3 Arthur Miller
2021-12-06 13:04       ` sqlite3 Yuri Khan
2021-12-06 13:34       ` sqlite3 Stefan Monnier
2021-12-06 13:50         ` sqlite3 Qiantan Hong
2021-12-06 14:05           ` sqlite3 Stefan Monnier
2021-12-06 14:13         ` sqlite3 Arthur Miller
2021-12-06 14:35           ` sqlite3 Arthur Miller
2021-12-06 15:16             ` sqlite3 Qiantan Hong
2021-12-06 19:45               ` sqlite3 Arthur Miller
2021-12-06 19:51                 ` sqlite3 Qiantan Hong
2021-12-06 19:59                   ` sqlite3 Qiantan Hong
2021-12-06 22:16                     ` sqlite3 Karl Fogel
2021-12-06 13:25     ` sqlite3 Stefan Kangas
2021-12-06 13:48       ` sqlite3 Po Lu
2021-12-06 15:08         ` sqlite3 Stefan Kangas
2021-12-06 16:58         ` sqlite3 Jose A. Ortega Ruiz
2021-12-06 12:04 ` sqlite3 Stefan Kangas
2021-12-06 16:10   ` sqlite3 Lars Ingebrigtsen
2021-12-06 16:11   ` sqlite3 Lars Ingebrigtsen
2021-12-06 19:36     ` sqlite3 Arthur Miller
2021-12-06 19:38       ` sqlite3 Lars Ingebrigtsen
2021-12-06 19:52         ` sqlite3 Arthur Miller
2021-12-06 17:31 ` sqlite3 Lars Ingebrigtsen
2021-12-06 19:18   ` sqlite3 Lars Ingebrigtsen
2021-12-06 19:25     ` sqlite3 Eli Zaretskii
2021-12-07 20:41       ` sqlite3 Lars Ingebrigtsen
2021-12-07 21:25         ` sqlite3 Óscar Fuentes
2021-12-08  3:27           ` sqlite3 Eli Zaretskii
2021-12-08  3:25         ` sqlite3 Eli Zaretskii
2021-12-08  7:00           ` sqlite3 Lars Ingebrigtsen
2021-12-08 13:43             ` sqlite3 Eli Zaretskii
2021-12-10  1:19               ` sqlite3 Lars Ingebrigtsen
2021-12-10  8:38                 ` sqlite3 Eli Zaretskii
2021-12-11 10:06                   ` sqlite3 Eli Zaretskii
2021-12-12  4:21                     ` sqlite3 Lars Ingebrigtsen
2021-12-12  7:10                       ` sqlite3 Eli Zaretskii
2021-12-12  7:48                         ` sqlite3 Lars Ingebrigtsen
2021-12-12  9:07                           ` sqlite3 Eli Zaretskii
2021-12-12  9:12                             ` sqlite3 Lars Ingebrigtsen
2021-12-12  9:33                               ` sqlite3 Lars Ingebrigtsen
2021-12-12 10:06                                 ` sqlite3 Eli Zaretskii
2021-12-13  4:05                                   ` sqlite3 Lars Ingebrigtsen
2021-12-13 12:49                                     ` sqlite3 Eli Zaretskii
2021-12-13 13:36                                       ` sqlite3 Eli Zaretskii
2021-12-06 19:41     ` sqlite3 Eli Zaretskii
2021-12-06 19:51       ` sqlite3 Lars Ingebrigtsen
2021-12-06 19:59         ` sqlite3 Lars Ingebrigtsen
2021-12-06 20:07         ` sqlite3 Eli Zaretskii
2021-12-06 20:20           ` sqlite3 Lars Ingebrigtsen
2021-12-06 20:29             ` sqlite3 Eli Zaretskii
2021-12-06 20:35               ` sqlite3 Lars Ingebrigtsen
2021-12-07  3:23                 ` sqlite3 Eli Zaretskii
2021-12-07  5:46                   ` sqlite3 Lars Ingebrigtsen
2021-12-07 14:03                     ` sqlite3 Eli Zaretskii
2021-12-07 20:40                       ` sqlite3 Lars Ingebrigtsen
2021-12-06 20:02       ` sqlite3 dick
2021-12-06 20:10         ` sqlite3 Eli Zaretskii
2021-12-06 17:38 ` sqlite3 Alan Mackenzie
2021-12-06 18:16   ` sqlite3 Qiantan Hong
2021-12-06 18:23     ` sqlite3 Eric Abrahamsen
2021-12-06 18:19   ` sqlite3 Lars Ingebrigtsen
2021-12-07  6:40 ` sqlite3 Teemu Likonen
2021-12-07  6:54   ` sqlite3 Lars Ingebrigtsen
2021-12-09  7:12     ` sqlite3 Teemu Likonen
2021-12-07  8:33 ` sqlite3 Sergey Organov
2021-12-07  8:42   ` sqlite3 Qiantan Hong
2021-12-07  9:06     ` sqlite3 Sergey Organov
2021-12-07  9:17       ` sqlite3 Po Lu
2021-12-09 17:36 ` sqlite3 Philip Kaludercic
2021-12-10  0:25   ` sqlite3 Lars Ingebrigtsen
2021-12-10 14:46     ` sqlite3 Philip Kaludercic
2021-12-11  3:19       ` sqlite3 Lars Ingebrigtsen
2021-12-11  7:15         ` sqlite3 tomas
2021-12-12  4:00           ` sqlite3 Richard Stallman
2021-12-12  4:18             ` sqlite3 Qiantan Hong
2021-12-11 20:03         ` sqlite3 Philip Kaludercic
2021-12-12  4:43           ` sqlite3 Lars Ingebrigtsen
2021-12-12  5:09             ` sqlite3 Qiantan Hong
2021-12-12  5:44               ` sqlite3 Lars Ingebrigtsen
2021-12-12  6:41                 ` sqlite3 Qiantan Hong
2021-12-12  6:50                   ` sqlite3 Lars Ingebrigtsen
2021-12-12  6:58                     ` sqlite3 Qiantan Hong
2021-12-12  7:00                       ` sqlite3 Lars Ingebrigtsen
2021-12-12  7:12                         ` sqlite3 Qiantan Hong
2021-12-12  7:45                           ` sqlite3 Lars Ingebrigtsen
2021-12-12  8:33                         ` sqlite3 tomas
2021-12-13  3:44                       ` sqlite3 Richard Stallman
2021-12-13  8:52                         ` sqlite3 Alexandre Garreau
2021-12-13 12:23                           ` Qiantan Hong [this message]
2021-12-14  4:12                             ` sqlite3 Richard Stallman
2021-12-13  1:54                     ` sqlite3 Howard Melman
2021-12-13  4:04                       ` sqlite3 Lars Ingebrigtsen
2021-12-12 12:19             ` sqlite3 Philip Kaludercic
2021-12-12 12:22               ` sqlite3 Lars Ingebrigtsen
2021-12-12 14:10                 ` sqlite3 Qiantan Hong
2021-12-12 14:39                   ` sqlite3 Teemu Likonen
2021-12-12 14:43                     ` sqlite3 Qiantan Hong
2021-12-14  8:57 ` sqlite3 Lars Ingebrigtsen
2021-12-14  9:57   ` sqlite3 Óscar Fuentes
2021-12-14 10:05   ` sqlite3 Óscar Fuentes
2021-12-14 10:28     ` sqlite3 Lars Ingebrigtsen
2021-12-14 12:07       ` sqlite3 usage for multisession variable storage Robin Tarsiger
2021-12-14 13:27         ` Lars Ingebrigtsen
2021-12-14 23:41           ` Robin Tarsiger
2021-12-15  1:34             ` Lars Ingebrigtsen
2021-12-15 13:10               ` Eli Zaretskii
2021-12-15 13:18                 ` Lars Ingebrigtsen
2021-12-14 15:32   ` sqlite3 Qiantan Hong
2021-12-14 15:36     ` sqlite3 Lars Ingebrigtsen
2021-12-14 15:39       ` sqlite3 Qiantan Hong
2021-12-14 15:42         ` sqlite3 Lars Ingebrigtsen
2021-12-14 15:45           ` sqlite3 Qiantan Hong
2021-12-14 16:41           ` sqlite3 Eli Zaretskii
2021-12-14 16:44             ` sqlite3 Qiantan Hong
2021-12-14 17:29               ` sqlite3 Eli Zaretskii
2021-12-14 17:43                 ` sqlite3 Qiantan Hong
2021-12-14 17:54                   ` sqlite3 Eli Zaretskii
2021-12-14 18:04                     ` sqlite3 Qiantan Hong
2021-12-14 18:07                       ` sqlite3 Lars Ingebrigtsen
2021-12-14 18:33                       ` sqlite3 Eli Zaretskii
2021-12-14 15:41       ` sqlite3 Lars Ingebrigtsen
2021-12-14 15:48         ` sqlite3 Qiantan Hong
2021-12-14 16:01           ` sqlite3 Lars Ingebrigtsen
2021-12-17  4:23             ` sqlite3 Richard Stallman
2021-12-17  7:42               ` sqlite3 Lars Ingebrigtsen
2021-12-18  4:41                 ` sqlite3 Richard Stallman
2021-12-18  7:43                   ` sqlite3 Lars Ingebrigtsen
2021-12-18  7:53                     ` sqlite3 Qiantan Hong
2021-12-18  8:52                       ` sqlite3 LdBeth
2021-12-18  9:06                         ` sqlite3 Qiantan Hong
2021-12-18 23:31                           ` sqlite3 Tomas Hlavaty
2021-12-18  9:35                         ` Hash consing (was: Re: sqlite3) Po Lu
2021-12-18 10:39                           ` sqlite3 LdBeth
2021-12-18 13:46                           ` Hash consing (was: Re: sqlite3) Philipp
2021-12-18 16:15                             ` [External] : " Drew Adams
2021-12-18 23:51                               ` Tomas Hlavaty
2021-12-19  0:27                                 ` Drew Adams
2021-12-17  4:23             ` sqlite3 Richard Stallman
2021-12-14 16:32           ` sqlite3 Drew Adams
2021-12-14 16:42             ` sqlite3 Qiantan Hong
2021-12-14 16:53               ` sqlite3 Drew Adams
2021-12-17  4:23             ` EQ-ness Richard Stallman
2021-12-17  6:15               ` [External] : EQ-ness Drew Adams
2021-12-19  4:57                 ` Richard Stallman
2021-12-19 18:12                   ` Drew Adams
2021-12-21  4:15                     ` Richard Stallman
2021-12-14 23:55         ` sqlite3 Alexandre Garreau
2021-12-15 14:06         ` sqlite3 Stefan Monnier
2021-12-15 15:04           ` sqlite3 Alexandre Garreau
2021-12-15 16:36             ` sqlite3 Stefan Monnier
2021-12-15 16:46               ` sqlite3 Qiantan Hong
2021-12-14 16:31   ` sqlite3 Dmitry Gutov
2021-12-14 16:43     ` sqlite3 Lars Ingebrigtsen
2021-12-14 16:50       ` sqlite3 Qiantan Hong
2021-12-14 17:32       ` sqlite3 Dmitry Gutov
2021-12-14 17:46         ` sqlite3 Lars Ingebrigtsen
2021-12-16  4:39       ` sqlite3 Richard Stallman
2021-12-16  4:47         ` sqlite3 Po Lu
2021-12-16  5:03         ` sqlite3 LdBeth
2021-12-17  4:25           ` sqlite3 Richard Stallman
2021-12-17  4:45             ` sqlite3 Ihor Radchenko
2021-12-19  4:57               ` sqlite3 Richard Stallman
2021-12-14 16:52   ` sqlite3 Tomas Hlavaty
2021-12-14 16:59     ` sqlite3 Lars Ingebrigtsen
2021-12-14 17:58       ` sqlite3 Tomas Hlavaty
2021-12-14 18:03         ` sqlite3 Lars Ingebrigtsen
2021-12-14 21:55           ` sqlite3 Tomas Hlavaty
2021-12-15  7:46             ` sqlite3 Lele Gaifax
2021-12-15  9:17               ` sqlite3 tomas
2021-12-15 14:38               ` sqlite3 Alexandre Garreau
2021-12-15 12:46             ` sqlite3 Eli Zaretskii
2021-12-14 18:53         ` sqlite3 Eli Zaretskii
2021-12-14 20:21           ` sqlite3 Tomas Hlavaty
2021-12-14 20:27             ` sqlite3 Eli Zaretskii
2021-12-14 20:38               ` sqlite3 Qiantan Hong
2021-12-15 12:39                 ` sqlite3 Eli Zaretskii
2021-12-16  9:48                   ` sqlite3 Madhu
2021-12-16 10:18                     ` sqlite3 Eli Zaretskii
2021-12-16 11:09                     ` sqlite3 LdBeth
2021-12-18  4:40             ` sqlite3 Richard Stallman
2021-12-18  7:02               ` sqlite3 Eli Zaretskii
2021-12-19 20:38                 ` devil's advocate Richard Stallman
2021-12-20 15:15                   ` Eli Zaretskii
2021-12-22  4:15                     ` Richard Stallman
2021-12-22  4:15                     ` Richard Stallman
2021-12-19  0:17               ` sqlite3 Tomas Hlavaty
2021-12-14 21:49         ` sqlite3 dick
2021-12-14 17:49     ` sqlite3 Eli Zaretskii
2021-12-14 18:12     ` sqlite3 Teemu Likonen
2021-12-14 18:29       ` sqlite3 Qiantan Hong
2021-12-14 19:06         ` sqlite3 Teemu Likonen
2021-12-14 22:23           ` sqlite3 Tomas Hlavaty
2022-02-14 15:15     ` sqlite3 Jean Louis
2021-12-15  2:09   ` sqlite3 Alexandre Garreau
2021-12-15  2:18     ` sqlite3 Qiantan Hong
2021-12-15  2:34       ` sqlite3 Alexandre Garreau
2021-12-15  2:44         ` sqlite3 Qiantan Hong
2021-12-15 15:36         ` sqlite3 Qiantan Hong
2021-12-15 15:47           ` sqlite3 Lars Ingebrigtsen
2021-12-16  5:05           ` sqlite3 Alexandre Garreau
2021-12-16  5:09             ` sqlite3 Qiantan Hong
2021-12-16  5:18               ` sqlite3 Alexandre Garreau
2021-12-16  4:39     ` sqlite3 Richard Stallman
2021-12-16  4:48       ` sqlite3 Po Lu
2021-12-16  5:06         ` sqlite3 Qiantan Hong
2021-12-16  4:38   ` sqlite3 Richard Stallman
2021-12-16  6:27 ` sqlite3 Lars Ingebrigtsen
2021-12-16  7:10   ` sqlite3 Lars Ingebrigtsen
2021-12-16  8:20     ` sqlite3 Eli Zaretskii
2021-12-17  7:38       ` sqlite3 Lars Ingebrigtsen
2021-12-17  8:07         ` sqlite3 Eli Zaretskii
2021-12-17  8:25           ` sqlite3 Lars Ingebrigtsen
2021-12-17  8:28             ` sqlite3 Eli Zaretskii
2021-12-17  9:31               ` sqlite3 Lars Ingebrigtsen
2021-12-17 12:43                 ` sqlite3 Eli Zaretskii
2021-12-18  7:41                   ` sqlite3 Lars Ingebrigtsen
2021-12-18  8:28                     ` sqlite3 Lars Ingebrigtsen
2021-12-18  9:46                       ` sqlite3 Eli Zaretskii
2021-12-19 10:56                         ` sqlite3 Lars Ingebrigtsen
2021-12-19 11:20                           ` sqlite3 Eli Zaretskii
2021-12-19 11:47                             ` sqlite3 Lars Ingebrigtsen
2021-12-19 14:07                               ` sqlite3 Eli Zaretskii
2021-12-19 14:11                                 ` sqlite3 Lars Ingebrigtsen
2021-12-19 15:07                                   ` sqlite3 Eli Zaretskii
2021-12-19 15:08                                   ` sqlite3 Eli Zaretskii
2021-12-19 15:24                                     ` sqlite3 Eli Zaretskii
2021-12-19 15:54                                       ` sqlite3 Eli Zaretskii
2021-12-19 16:34                                         ` sqlite3 Eli Zaretskii
2021-12-20  9:30                                           ` sqlite3 Lars Ingebrigtsen
2021-12-21 17:32                                             ` sqlite3 Eli Zaretskii
2021-12-22 12:10                                               ` sqlite3 Lars Ingebrigtsen
2021-12-22 13:51                                                 ` sqlite3 Eli Zaretskii
2021-12-26  8:24                                                   ` sqlite3 Eli Zaretskii
2021-12-26 11:39                                                     ` sqlite3 Lars Ingebrigtsen
2021-12-26 11:48                                                       ` sqlite3 Eli Zaretskii
2021-12-26 12:22                                                         ` sqlite3 Lars Ingebrigtsen
2021-12-26 12:57                                                           ` sqlite3 Eli Zaretskii
2021-12-26 12:55                                                         ` sqlite3 Eli Zaretskii
2021-12-26 14:42                                                           ` sqlite3 Eli Zaretskii
2021-12-26 14:57                                                             ` sqlite3 Eli Zaretskii
2021-12-27 11:59                                                               ` sqlite3 Lars Ingebrigtsen
2021-12-27 14:58                                                                 ` sqlite3 Eli Zaretskii
2021-12-27 15:07                                                                   ` sqlite3 Lars Ingebrigtsen
2021-12-27 15:14                                                                     ` sqlite3 Eli Zaretskii
2021-12-27 16:52                                                                       ` sqlite3 Eli Zaretskii
2021-12-28  7:17                                                                         ` sqlite3 Lars Ingebrigtsen
2021-12-28 13:04                                                                           ` sqlite3 Eli Zaretskii
2021-12-28 13:13                                                                             ` sqlite3 Po Lu
2021-12-28 14:41                                                                             ` sqlite3 Lars Ingebrigtsen
2021-12-28 15:18                                                                               ` sqlite3 Eli Zaretskii
2021-12-29 15:11                                                                                 ` sqlite3 Lars Ingebrigtsen
2021-12-29 17:51                                                                                   ` sqlite3 Eli Zaretskii
2021-12-29 18:05                                                                                     ` sqlite3 Lars Ingebrigtsen
2021-12-29 18:30                                                                                       ` sqlite3 Eli Zaretskii
2021-12-30 14:41                                                                                         ` sqlite3 Lars Ingebrigtsen
2021-12-30 14:53                                                                                           ` sqlite3 Eli Zaretskii
2021-12-30 14:50                                                                                       ` sqlite3 Eli Zaretskii
2021-12-30 14:53                                                                                         ` sqlite3 Lars Ingebrigtsen
2021-12-18  9:30                     ` sqlite3 Eli Zaretskii
2021-12-19 10:55                       ` sqlite3 Lars Ingebrigtsen
2021-12-19 11:14                         ` sqlite3 Eli Zaretskii
2021-12-16 17:30     ` sqlite3 Juri Linkov
2021-12-17  7:40       ` sqlite3 Lars Ingebrigtsen
2022-02-14 12:04 ` sqlite3 Jean Louis
  -- strict thread matches above, loose matches on Subject: below --
2021-12-22 12:11 sqlite3 xenodasein--- via Emacs development discussions.

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=1FAB70D6-1E6A-4B08-A9FD-BD0F0F4550FB@mit.edu \
    --to=qhong@mit.edu \
    --cc=emacs-devel@gnu.org \
    --cc=galex-713@galex-713.eu \
    --cc=larsi@gnus.org \
    --cc=philipk@posteo.net \
    --cc=rms@gnu.org \
    /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).