summaryrefslogtreecommitdiff
path: root/.localrepo/emacsql-4.3.1.tar
blob: e3ba090290f5e2728a54145989124c2da1a83b6e (plain)
ofshex dumpascii
0000 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 emacsql-4.3.1/..................
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0060 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000755.0000000.0000000.0000
0080 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 31 36 30 33 00 20 35 00 00 00 0000000.00000000000.011603..5...
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
0120 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0200 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 65 6d 61 63 73 71 6c 2d 63 6f 6d 70 69 6c 65 72 2e 65 emacsql-4.3.1/emacsql-compiler.e
0220 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 l...............................
0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
0280 30 30 35 33 33 31 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 33 37 30 00 20 30 00 00 00 0053314.00000000000.015370..0...
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
0320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0400 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 63 6f 6d 70 69 6c 65 72 2e 65 6c 20 2d 2d 2d 20 53 2d 65 78 ;;;.emacsql-compiler.el.---.S-ex
0420 70 72 65 73 73 69 6f 6e 20 53 51 4c 20 63 6f 6d 70 69 6c 65 72 20 20 2d 2a 2d 20 6c 65 78 69 63 pression.SQL.compiler..-*-.lexic
0440 61 6c 2d 62 69 6e 64 69 6e 67 3a 74 20 2d 2a 2d 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 66 72 65 al-binding:t.-*-..;;.This.is.fre
0460 65 20 61 6e 64 20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f 66 74 77 61 72 65 20 72 65 6c 65 e.and.unencumbered.software.rele
0480 61 73 65 64 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 0a 0a 3b 3b ased.into.the.public.domain...;;
04a0 20 41 75 74 68 6f 72 3a 20 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 20 3c 77 65 .Author:.Christopher.Wellons.<we
04c0 6c 6c 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 3e 0a 3b 3b 20 4d 61 69 6e 74 61 llons@nullprogram.com>.;;.Mainta
04e0 69 6e 65 72 3a 20 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 20 3c 65 6d 61 63 73 2e 65 6d 61 iner:.Jonas.Bernoulli.<emacs.ema
0500 63 73 71 6c 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e 64 65 76 3e 0a 0a 3b 3b 20 53 50 csql@jonas.bernoulli.dev>..;;.SP
0520 44 58 2d 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 55 6e 6c 69 63 65 6e 73 65 DX-License-Identifier:.Unlicense
0540 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 6c 69 62 72 61 ..;;;.Commentary:..;;.This.libra
0560 72 79 20 70 72 6f 76 69 64 65 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 63 6f 6d 70 69 6c 69 6e ry.provides.support.for.compilin
0580 67 20 53 2d 65 78 70 72 65 73 73 69 6f 6e 73 20 74 6f 20 53 51 4c 2e 0a 0a 3b 3b 3b 20 43 6f 64 g.S-expressions.to.SQL...;;;.Cod
05a0 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 0a 28 65 76 61 6c 2d 77 68 65 e:..(require.'cl-lib)..(eval-whe
05c0 6e 2d 63 6f 6d 70 69 6c 65 20 28 72 65 71 75 69 72 65 20 27 73 75 62 72 2d 78 29 29 0a 0a 3b 3b n-compile.(require.'subr-x))..;;
05e0 3b 20 45 72 72 6f 72 20 73 79 6d 62 6f 6c 73 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 6d 61 63 73 ;.Error.symbols..(defmacro.emacs
0600 71 6c 2d 64 65 66 65 72 72 6f 72 20 28 73 79 6d 62 6f 6c 20 70 61 72 65 6e 74 73 20 6d 65 73 73 ql-deferror.(symbol.parents.mess
0620 61 67 65 29 0a 20 20 22 44 65 66 69 6e 65 73 20 61 20 6e 65 77 20 65 72 72 6f 72 20 73 79 6d 62 age)..."Defines.a.new.error.symb
0640 6f 6c 20 66 6f 72 20 45 6d 61 63 53 51 4c 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 ol.for.EmacSQL."...(declare.(ind
0660 65 6e 74 20 32 29 29 0a 20 20 28 6c 65 74 20 28 28 63 6f 6e 64 69 74 69 6f 6e 73 20 28 63 6c 2d ent.2))...(let.((conditions.(cl-
0680 72 65 6d 6f 76 65 2d 64 75 70 6c 69 63 61 74 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 remove-duplicates...............
06a0 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 20 70 61 72 65 6e 74 73 20 28 6c 69 73 74 20 73 79 6d .......(append.parents.(list.sym
06c0 62 6f 6c 20 27 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 27 65 72 72 6f 72 29 29 29 29 29 0a 20 bol.'emacsql-error.'error)))))..
06e0 20 20 20 60 28 70 72 6f 67 31 20 27 2c 73 79 6d 62 6f 6c 0a 20 20 20 20 20 20 20 28 70 75 74 20 ...`(prog1.',symbol........(put.
0700 27 2c 73 79 6d 62 6f 6c 20 27 65 72 72 6f 72 2d 63 6f 6e 64 69 74 69 6f 6e 73 20 27 2c 63 6f 6e ',symbol.'error-conditions.',con
0720 64 69 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 28 70 75 74 20 27 2c 73 79 6d 62 6f 6c 20 27 65 ditions)........(put.',symbol.'e
0740 72 72 6f 72 2d 6d 65 73 73 61 67 65 20 2c 6d 65 73 73 61 67 65 29 29 29 29 0a 0a 28 65 6d 61 63 rror-message.,message))))..(emac
0760 73 71 6c 2d 64 65 66 65 72 72 6f 72 20 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 28 29 20 3b 3b sql-deferror.emacsql-error.().;;
0780 20 70 61 72 65 6e 74 20 63 6f 6e 64 69 74 69 6f 6e 20 66 6f 72 20 61 6c 6c 20 6f 74 68 65 72 73 .parent.condition.for.all.others
07a0 0a 20 20 22 45 6d 61 63 53 51 4c 20 68 61 64 20 61 6e 20 75 6e 68 61 6e 64 6c 65 64 20 63 6f 6e ..."EmacSQL.had.an.unhandled.con
07c0 64 69 74 69 6f 6e 22 29 0a 0a 28 65 6d 61 63 73 71 6c 2d 64 65 66 65 72 72 6f 72 20 65 6d 61 63 dition")..(emacsql-deferror.emac
07e0 73 71 6c 2d 73 79 6e 74 61 78 20 28 29 20 22 49 6e 76 61 6c 69 64 20 53 51 4c 20 73 74 61 74 65 sql-syntax.()."Invalid.SQL.state
0800 6d 65 6e 74 22 29 0a 28 65 6d 61 63 73 71 6c 2d 64 65 66 65 72 72 6f 72 20 65 6d 61 63 73 71 6c ment").(emacsql-deferror.emacsql
0820 2d 69 6e 74 65 72 6e 61 6c 20 28 29 20 22 49 6e 74 65 72 6e 61 6c 20 65 72 72 6f 72 22 29 0a 28 -internal.()."Internal.error").(
0840 65 6d 61 63 73 71 6c 2d 64 65 66 65 72 72 6f 72 20 65 6d 61 63 73 71 6c 2d 6c 6f 63 6b 65 64 20 emacsql-deferror.emacsql-locked.
0860 28 29 20 22 44 61 74 61 62 61 73 65 20 6c 6f 63 6b 65 64 22 29 0a 28 65 6d 61 63 73 71 6c 2d 64 ()."Database.locked").(emacsql-d
0880 65 66 65 72 72 6f 72 20 65 6d 61 63 73 71 6c 2d 66 61 74 61 6c 20 28 29 20 22 46 61 74 61 6c 20 eferror.emacsql-fatal.()."Fatal.
08a0 65 72 72 6f 72 22 29 0a 28 65 6d 61 63 73 71 6c 2d 64 65 66 65 72 72 6f 72 20 65 6d 61 63 73 71 error").(emacsql-deferror.emacsq
08c0 6c 2d 6d 65 6d 6f 72 79 20 28 29 20 22 4f 75 74 20 6f 66 20 6d 65 6d 6f 72 79 22 29 0a 28 65 6d l-memory.()."Out.of.memory").(em
08e0 61 63 73 71 6c 2d 64 65 66 65 72 72 6f 72 20 65 6d 61 63 73 71 6c 2d 63 6f 72 72 75 70 74 69 6f acsql-deferror.emacsql-corruptio
0900 6e 20 28 29 20 22 44 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74 65 64 22 29 0a 28 65 6d 61 63 n.()."Database.corrupted").(emac
0920 73 71 6c 2d 64 65 66 65 72 72 6f 72 20 65 6d 61 63 73 71 6c 2d 61 63 63 65 73 73 20 28 29 20 22 sql-deferror.emacsql-access.()."
0940 44 61 74 61 62 61 73 65 20 61 63 63 65 73 73 20 65 72 72 6f 72 22 29 0a 28 65 6d 61 63 73 71 6c Database.access.error").(emacsql
0960 2d 64 65 66 65 72 72 6f 72 20 65 6d 61 63 73 71 6c 2d 74 69 6d 65 6f 75 74 20 28 29 20 22 51 75 -deferror.emacsql-timeout.()."Qu
0980 65 72 79 20 74 69 6d 65 6f 75 74 20 65 72 72 6f 72 22 29 0a 28 65 6d 61 63 73 71 6c 2d 64 65 66 ery.timeout.error").(emacsql-def
09a0 65 72 72 6f 72 20 65 6d 61 63 73 71 6c 2d 77 61 72 6e 69 6e 67 20 28 29 20 22 57 61 72 6e 69 6e error.emacsql-warning.()."Warnin
09c0 67 20 6d 65 73 73 61 67 65 22 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 65 72 72 6f g.message")..(defun.emacsql-erro
09e0 72 20 28 66 6f 72 6d 61 74 20 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 22 4c 69 6b 65 20 60 65 r.(format.&rest.args)..."Like.`e
0a00 72 72 6f 72 27 2c 20 62 75 74 20 73 69 67 6e 61 6c 20 61 6e 20 65 6d 61 63 73 71 6c 2d 73 79 6e rror',.but.signal.an.emacsql-syn
0a20 74 61 78 20 63 6f 6e 64 69 74 69 6f 6e 2e 22 0a 20 20 28 73 69 67 6e 61 6c 20 27 65 6d 61 63 73 tax.condition."...(signal.'emacs
0a40 71 6c 2d 73 79 6e 74 61 78 20 28 6c 69 73 74 20 28 61 70 70 6c 79 20 23 27 66 6f 72 6d 61 74 20 ql-syntax.(list.(apply.#'format.
0a60 66 6f 72 6d 61 74 20 61 72 67 73 29 29 29 29 0a 0a 3b 3b 3b 20 45 73 63 61 70 69 6e 67 20 66 75 format.args))))..;;;.Escaping.fu
0a80 6e 63 74 69 6f 6e 73 0a 0a 28 64 65 66 76 61 72 20 65 6d 61 63 73 71 6c 2d 72 65 73 65 72 76 65 nctions..(defvar.emacsql-reserve
0aa0 64 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 75 61 6c 29 d.(make-hash-table.:test.'equal)
0ac0 0a 20 20 22 43 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 20 61 6c 6c 20 6b 6e 6f 77 6e 20 72 65 73 65 ..."Collection.of.all.known.rese
0ae0 72 76 65 64 20 77 6f 72 64 73 2c 20 75 73 65 64 20 66 6f 72 20 65 73 63 61 70 69 6e 67 2e 22 29 rved.words,.used.for.escaping.")
0b00 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 2d 72 65 73 65 72 76 ..(defun.emacsql-register-reserv
0b20 65 64 20 28 73 65 71 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 73 65 71 75 65 6e 63 65 20 6f 66 ed.(seq)..."Register.sequence.of
0b40 20 6b 65 79 77 6f 72 64 73 20 61 73 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 73 2c 20 72 65 74 .keywords.as.reserved.words,.ret
0b60 75 72 6e 69 6e 67 20 53 45 51 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 77 6f 72 64 urning.SEQ."...(cl-loop.for.word
0b80 20 62 65 69 6e 67 20 74 68 65 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 73 65 71 0a 20 20 20 20 20 .being.the.elements.of.seq......
0ba0 20 20 20 20 20 20 64 6f 20 28 73 65 74 66 20 28 67 65 74 68 61 73 68 20 28 75 70 63 61 73 65 20 ......do.(setf.(gethash.(upcase.
0bc0 28 66 6f 72 6d 61 74 20 22 25 73 22 20 77 6f 72 64 29 29 20 65 6d 61 63 73 71 6c 2d 72 65 73 65 (format."%s".word)).emacsql-rese
0be0 72 76 65 64 29 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 28 63 6c 2d rved).t)............finally.(cl-
0c00 72 65 74 75 72 6e 20 73 65 71 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 72 65 return.seq)))..(defun.emacsql-re
0c20 73 65 72 76 65 64 2d 70 20 28 6e 61 6d 65 29 0a 20 20 22 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 6e served-p.(name)..."Returns.non-n
0c40 69 6c 20 69 66 20 73 74 72 69 6e 67 20 4e 41 4d 45 20 69 73 20 61 20 53 51 4c 20 6b 65 79 77 6f il.if.string.NAME.is.a.SQL.keywo
0c60 72 64 2e 22 0a 20 20 28 67 65 74 68 61 73 68 20 28 75 70 63 61 73 65 20 6e 61 6d 65 29 20 65 6d rd."...(gethash.(upcase.name).em
0c80 61 63 73 71 6c 2d 72 65 73 65 72 76 65 64 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c acsql-reserved))..(defun.emacsql
0ca0 2d 71 75 6f 74 65 2d 73 63 61 6c 61 72 20 28 73 74 72 69 6e 67 29 0a 20 20 22 53 69 6e 67 6c 65 -quote-scalar.(string)..."Single
0cc0 2d 71 75 6f 74 65 20 28 73 63 61 6c 61 72 29 20 53 54 52 49 4e 47 20 66 6f 72 20 75 73 65 20 69 -quote.(scalar).STRING.for.use.i
0ce0 6e 20 61 20 53 51 4c 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 0a 20 20 28 77 69 74 68 2d 74 65 6d n.a.SQL.expression."...(with-tem
0d00 70 2d 62 75 66 66 65 72 0a 20 20 20 20 28 69 6e 73 65 72 74 20 73 74 72 69 6e 67 29 0a 20 20 20 p-buffer.....(insert.string)....
0d20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 28 77 68 .(goto-char.(point-min)).....(wh
0d40 69 6c 65 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 27 22 20 6e 69 6c 20 74 ile.(re-search-forward."'".nil.t
0d60 29 0a 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 68 20 22 27 27 22 29 29 0a 20 20 ).......(replace-match."''"))...
0d80 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 28 69 ..(goto-char.(point-min)).....(i
0da0 6e 73 65 72 74 20 22 27 22 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 nsert."'").....(goto-char.(point
0dc0 2d 6d 61 78 29 29 0a 20 20 20 20 28 69 6e 73 65 72 74 20 22 27 22 29 0a 20 20 20 20 28 62 75 66 -max)).....(insert."'").....(buf
0de0 66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 71 75 fer-string)))..(defun.emacsql-qu
0e00 6f 74 65 2d 63 68 61 72 61 63 74 65 72 20 28 63 29 0a 20 20 22 53 69 6e 67 6c 65 2d 71 75 6f 74 ote-character.(c)..."Single-quot
0e20 65 20 63 68 61 72 61 63 74 65 72 20 43 20 66 6f 72 20 75 73 65 20 69 6e 20 61 20 53 51 4c 20 65 e.character.C.for.use.in.a.SQL.e
0e40 78 70 72 65 73 73 69 6f 6e 2e 22 0a 20 20 28 69 66 20 28 63 68 61 72 2d 65 71 75 61 6c 20 63 20 xpression."...(if.(char-equal.c.
0e60 3f 27 29 0a 20 20 20 20 20 20 22 27 27 27 27 22 0a 20 20 20 20 28 66 6f 72 6d 61 74 20 22 27 25 ?')......."''''".....(format."'%
0e80 63 27 22 20 63 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 71 75 6f 74 65 2d 69 c'".c)))..(defun.emacsql-quote-i
0ea0 64 65 6e 74 69 66 69 65 72 20 28 73 74 72 69 6e 67 29 0a 20 20 22 44 6f 75 62 6c 65 2d 71 75 6f dentifier.(string)..."Double-quo
0ec0 74 65 20 28 69 64 65 6e 74 69 66 69 65 72 29 20 53 54 52 49 4e 47 20 66 6f 72 20 75 73 65 20 69 te.(identifier).STRING.for.use.i
0ee0 6e 20 61 20 53 51 4c 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 0a 20 20 28 66 6f 72 6d 61 74 20 22 n.a.SQL.expression."...(format."
0f00 5c 22 25 73 5c 22 22 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e \"%s\"".(replace-regexp-in-strin
0f20 67 20 22 5c 22 22 20 22 5c 22 5c 22 22 20 73 74 72 69 6e 67 29 29 29 0a 0a 28 64 65 66 75 6e 20 g."\""."\"\"".string)))..(defun.
0f40 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 69 64 65 6e 74 69 66 69 65 72 20 28 69 64 65 6e 74 emacsql-escape-identifier.(ident
0f60 69 66 69 65 72 29 0a 20 20 22 45 73 63 61 70 65 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2c 20 ifier)..."Escape.an.identifier,.
0f80 69 66 20 6e 65 65 64 65 64 2c 20 66 6f 72 20 53 51 4c 2e 22 0a 20 20 28 77 68 65 6e 20 28 6f 72 if.needed,.for.SQL."...(when.(or
0fa0 20 28 6e 75 6c 6c 20 69 64 65 6e 74 69 66 69 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 .(null.identifier).............(
0fc0 6b 65 79 77 6f 72 64 70 20 69 64 65 6e 74 69 66 69 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 keywordp.identifier)............
0fe0 20 28 6e 6f 74 20 28 6f 72 20 28 73 79 6d 62 6f 6c 70 20 69 64 65 6e 74 69 66 69 65 72 29 0a 20 .(not.(or.(symbolp.identifier)..
1000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 70 20 69 64 65 ....................(vectorp.ide
1020 6e 74 69 66 69 65 72 29 29 29 29 0a 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 22 ntifier)))).....(emacsql-error."
1040 49 6e 76 61 6c 69 64 20 69 64 65 6e 74 69 66 69 65 72 3a 20 25 53 22 20 69 64 65 6e 74 69 66 69 Invalid.identifier:.%S".identifi
1060 65 72 29 29 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 28 76 65 63 74 6f 72 70 20 69 64 65 6e 74 69 er))...(cond....((vectorp.identi
1080 66 69 65 72 29 0a 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 65 6d 61 63 73 71 6c 2d 65 fier).....(mapconcat.#'emacsql-e
10a0 73 63 61 70 65 2d 69 64 65 6e 74 69 66 69 65 72 20 69 64 65 6e 74 69 66 69 65 72 20 22 2c 20 22 scape-identifier.identifier.",."
10c0 29 29 0a 20 20 20 28 28 65 71 20 69 64 65 6e 74 69 66 69 65 72 20 27 2a 29 20 22 2a 22 29 0a 20 ))....((eq.identifier.'*)."*")..
10e0 20 20 28 74 0a 20 20 20 20 28 6c 65 74 20 28 28 6e 61 6d 65 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d ..(t.....(let.((name.(symbol-nam
1100 65 20 69 64 65 6e 74 69 66 69 65 72 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e e.identifier))).......(if.(strin
1120 67 2d 6d 61 74 63 68 2d 70 20 22 3a 22 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d g-match-p.":".name)...........(m
1140 61 70 63 6f 6e 63 61 74 20 23 27 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 69 64 65 6e 74 69 apconcat.#'emacsql-escape-identi
1160 66 69 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 fier......................(mapca
1180 72 20 23 27 69 6e 74 65 72 6e 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 6e 61 6d 65 20 22 3a r.#'intern.(split-string.name.":
11a0 22 29 29 20 22 2e 22 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 72 69 6e 74 20 28 72 ")).".").........(let.((print.(r
11c0 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 20 22 2d 22 20 22 5f 22 20 eplace-regexp-in-string."-"."_".
11e0 28 66 6f 72 6d 61 74 20 22 25 53 22 20 69 64 65 6e 74 69 66 69 65 72 29 29 29 0a 20 20 20 20 20 (format."%S".identifier)))......
1200 20 20 20 20 20 20 20 20 20 28 73 70 65 63 69 61 6c 20 22 5b 5d 2d 5c 30 30 30 2d 5c 30 34 30 21 .........(special."[]-\000-\040!
1220 5c 22 23 25 26 27 28 29 2a 2b 2c 2e 2f 3a 3b 3c 3d 3e 3f 40 5b 5c 5c 5e 60 7b 7c 7d 7e 5c 31 37 \"#%&'()*+,./:;<=>?@[\\^`{|}~\17
1240 37 5d 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 28 73 74 72 69 6e 67 2d 7]"))...........(if.(or.(string-
1260 6d 61 74 63 68 2d 70 20 73 70 65 63 69 61 6c 20 70 72 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 match-p.special.print)..........
1280 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 5b 30 2d 39 24 .........(string-match-p."^[0-9$
12a0 5d 22 20 70 72 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 ]".print)...................(ema
12c0 63 73 71 6c 2d 72 65 73 65 72 76 65 64 2d 70 20 70 72 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 csql-reserved-p.print)).........
12e0 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 71 75 6f 74 65 2d 69 64 65 6e 74 69 66 69 65 72 20 ......(emacsql-quote-identifier.
1300 70 72 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 29 29 29 29 29 29 29 0a print).............print))))))).
1320 0a 28 64 65 66 76 61 72 20 70 72 69 6e 74 2d 65 73 63 61 70 65 2d 63 6f 6e 74 72 6f 6c 2d 63 68 .(defvar.print-escape-control-ch
1340 61 72 61 63 74 65 72 73 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 aracters)..(defun.emacsql-escape
1360 2d 73 63 61 6c 61 72 20 28 76 61 6c 75 65 29 0a 20 20 22 45 73 63 61 70 65 20 56 41 4c 55 45 20 -scalar.(value)..."Escape.VALUE.
1380 66 6f 72 20 73 65 6e 64 69 6e 67 20 74 6f 20 53 51 4c 69 74 65 2e 22 0a 20 20 28 6c 65 74 20 28 for.sending.to.SQLite."...(let.(
13a0 28 70 72 69 6e 74 2d 65 73 63 61 70 65 2d 6e 65 77 6c 69 6e 65 73 20 74 29 0a 20 20 20 20 20 20 (print-escape-newlines.t).......
13c0 20 20 28 70 72 69 6e 74 2d 65 73 63 61 70 65 2d 63 6f 6e 74 72 6f 6c 2d 63 68 61 72 61 63 74 65 ..(print-escape-control-characte
13e0 72 73 20 74 29 29 0a 20 20 20 20 28 63 6f 6e 64 20 28 28 6e 75 6c 6c 20 76 61 6c 75 65 29 20 22 rs.t)).....(cond.((null.value)."
1400 4e 55 4c 4c 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 6e 75 6d 62 65 72 70 20 76 61 6c 75 65 NULL")...........((numberp.value
1420 29 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 ).(prin1-to-string.value))......
1440 20 20 20 20 20 28 28 65 6d 61 63 73 71 6c 2d 71 75 6f 74 65 2d 73 63 61 6c 61 72 20 28 70 72 69 .....((emacsql-quote-scalar.(pri
1460 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 76 61 6c 75 65 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e n1-to-string.value))))))..(defun
1480 20 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 72 61 77 20 28 76 61 6c 75 65 29 0a 20 20 22 45 .emacsql-escape-raw.(value)..."E
14a0 73 63 61 70 65 20 56 41 4c 55 45 20 66 6f 72 20 73 65 6e 64 69 6e 67 20 74 6f 20 53 51 4c 69 74 scape.VALUE.for.sending.to.SQLit
14c0 65 2e 22 0a 20 20 28 63 6f 6e 64 20 28 28 6e 75 6c 6c 20 76 61 6c 75 65 29 20 22 4e 55 4c 4c 22 e."...(cond.((null.value)."NULL"
14e0 29 0a 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 70 20 76 61 6c 75 65 29 20 28 65 6d 61 63 ).........((stringp.value).(emac
1500 73 71 6c 2d 71 75 6f 74 65 2d 73 63 61 6c 61 72 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 sql-quote-scalar.value))........
1520 20 28 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 73 74 72 69 6e 67 20 6f 72 20 6e 69 6c .((error."Expected.string.or.nil
1540 22 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 76 65 63 "))))..(defun.emacsql-escape-vec
1560 74 6f 72 20 28 76 65 63 74 6f 72 29 0a 20 20 22 45 6e 63 6f 64 65 20 56 45 43 54 4f 52 20 69 6e tor.(vector)..."Encode.VECTOR.in
1580 74 6f 20 61 20 53 51 4c 20 76 65 63 74 6f 72 20 73 63 61 6c 61 72 2e 22 0a 20 20 28 63 6c 2d 74 to.a.SQL.vector.scalar."...(cl-t
15a0 79 70 65 63 61 73 65 20 76 65 63 74 6f 72 0a 20 20 20 20 28 6e 75 6c 6c 20 20 20 28 65 6d 61 63 ypecase.vector.....(null...(emac
15c0 73 71 6c 2d 65 72 72 6f 72 20 22 45 6d 70 74 79 20 53 51 4c 20 76 65 63 74 6f 72 20 65 78 70 72 sql-error."Empty.SQL.vector.expr
15e0 65 73 73 69 6f 6e 22 29 29 0a 20 20 20 20 28 6c 69 73 74 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 ession")).....(list...(mapconcat
1600 20 23 27 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 76 65 63 74 6f 72 20 76 65 63 74 6f 72 20 .#'emacsql-escape-vector.vector.
1620 22 2c 20 22 29 29 0a 20 20 20 20 28 76 65 63 74 6f 72 20 28 63 6f 6e 63 61 74 20 22 28 22 20 28 ",.")).....(vector.(concat."(".(
1640 6d 61 70 63 6f 6e 63 61 74 20 23 27 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 73 63 61 6c 61 mapconcat.#'emacsql-escape-scala
1660 72 20 76 65 63 74 6f 72 20 22 2c 20 22 29 20 22 29 22 29 29 0a 20 20 20 20 28 6f 74 68 65 72 77 r.vector.",.").")")).....(otherw
1680 69 73 65 20 28 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20 76 65 63 74 ise.(emacsql-error."Invalid.vect
16a0 6f 72 20 25 53 22 20 76 65 63 74 6f 72 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 or.%S".vector))))..(defun.emacsq
16c0 6c 2d 65 73 63 61 70 65 2d 66 6f 72 6d 61 74 20 28 74 68 69 6e 67 29 0a 20 20 22 45 73 63 61 70 l-escape-format.(thing)..."Escap
16e0 65 20 54 48 49 4e 47 20 66 6f 72 20 75 73 65 20 61 73 20 61 20 60 66 6f 72 6d 61 74 27 20 73 70 e.THING.for.use.as.a.`format'.sp
1700 65 63 2e 22 0a 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 ec."...(replace-regexp-in-string
1720 20 22 25 22 20 22 25 25 22 20 74 68 69 6e 67 29 29 0a 0a 3b 3b 3b 20 53 63 68 65 6d 61 20 63 6f ."%"."%%".thing))..;;;.Schema.co
1740 6d 70 69 6c 65 72 0a 0a 28 64 65 66 76 61 72 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 2d 6d 61 70 mpiler..(defvar.emacsql-type-map
1760 0a 20 20 27 28 28 69 6e 74 65 67 65 72 20 22 26 49 4e 54 45 47 45 52 22 29 0a 20 20 20 20 28 66 ...'((integer."&INTEGER").....(f
1780 6c 6f 61 74 20 22 26 52 45 41 4c 22 29 0a 20 20 20 20 28 6f 62 6a 65 63 74 20 22 26 54 45 58 54 loat."&REAL").....(object."&TEXT
17a0 22 29 0a 20 20 20 20 28 6e 69 6c 20 22 26 4e 4f 4e 45 22 29 29 0a 20 20 22 41 6e 20 61 6c 69 73 ").....(nil."&NONE"))..."An.alis
17c0 74 20 6d 61 70 70 69 6e 67 20 45 6d 61 63 53 51 4c 20 74 79 70 65 73 20 74 6f 20 53 51 4c 20 74 t.mapping.EmacSQL.types.to.SQL.t
17e0 79 70 65 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 66 72 6f 6d 2d 6b 65 ypes.")..(defun.emacsql--from-ke
1800 79 77 6f 72 64 20 28 6b 65 79 77 6f 72 64 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 4b 45 59 57 4f yword.(keyword)..."Convert.KEYWO
1820 52 44 20 69 6e 74 6f 20 53 51 4c 2e 22 0a 20 20 28 6c 65 74 20 28 28 6e 61 6d 65 20 28 73 75 62 RD.into.SQL."...(let.((name.(sub
1840 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 77 6f 72 64 29 20 31 29 29 string.(symbol-name.keyword).1))
1860 29 0a 20 20 20 20 28 75 70 63 61 73 65 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e ).....(upcase.(replace-regexp-in
1880 2d 73 74 72 69 6e 67 20 22 2d 22 20 22 20 22 20 6e 61 6d 65 29 29 29 29 0a 0a 28 64 65 66 75 6e -string."-".".".name))))..(defun
18a0 20 65 6d 61 63 73 71 6c 2d 2d 70 72 65 70 61 72 65 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 28 63 .emacsql--prepare-constraints.(c
18c0 6f 6e 73 74 72 61 69 6e 74 73 29 0a 20 20 22 43 6f 6d 70 69 6c 65 20 43 4f 4e 53 54 52 41 49 4e onstraints)..."Compile.CONSTRAIN
18e0 54 53 20 69 6e 74 6f 20 61 20 70 61 72 74 69 61 6c 20 53 51 4c 20 65 78 70 72 65 73 73 69 6f 6e TS.into.a.partial.SQL.expression
1900 2e 22 0a 20 20 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 23 27 69 64 65 6e 74 69 74 79 0a 20 20 ."...(mapconcat....#'identity...
1920 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 6e 20 63 6f 6e 73 .(cl-loop.for.constraint.in.cons
1940 74 72 61 69 6e 74 73 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d traints.collect.............(cl-
1960 74 79 70 65 63 61 73 65 20 63 6f 6e 73 74 72 61 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 typecase.constraint.............
1980 20 20 28 6e 75 6c 6c 20 22 4e 55 4c 4c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b ..(null."NULL")...............(k
19a0 65 79 77 6f 72 64 20 28 65 6d 61 63 73 71 6c 2d 2d 66 72 6f 6d 2d 6b 65 79 77 6f 72 64 20 63 6f eyword.(emacsql--from-keyword.co
19c0 6e 73 74 72 61 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c nstraint))...............(symbol
19e0 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 69 64 65 6e 74 69 66 69 65 72 20 63 6f 6e 73 .(emacsql-escape-identifier.cons
1a00 74 72 61 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 20 28 traint))...............(vector.(
1a20 66 6f 72 6d 61 74 20 22 28 25 73 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 format."(%s)"...................
1a40 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 ............(mapconcat..........
1a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 65 6d 61 63 73 71 6c 2d ......................#'emacsql-
1a80 65 73 63 61 70 65 2d 69 64 65 6e 74 69 66 69 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 escape-identifier...............
1aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 0a 20 20 20 20 .................constraint.....
1ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2c 20 22 29 ...........................",.")
1ae0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 ))...............(list.(format."
1b00 28 25 73 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (%s)"...........................
1b20 20 20 28 63 61 72 20 28 65 6d 61 63 73 71 6c 2d 2d 2a 65 78 70 72 20 63 6f 6e 73 74 72 61 69 6e ..(car.(emacsql--*expr.constrain
1b40 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 74 68 65 72 77 69 73 65 0a 20 t))))...............(otherwise..
1b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 73 63 ..............(emacsql-escape-sc
1b80 61 6c 61 72 20 63 6f 6e 73 74 72 61 69 6e 74 29 29 29 29 0a 20 20 20 22 20 22 29 29 0a 0a 28 64 alar.constraint))))...."."))..(d
1ba0 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 70 72 65 70 61 72 65 2d 63 6f 6c 75 6d 6e 20 28 63 6f efun.emacsql--prepare-column.(co
1bc0 6c 75 6d 6e 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 43 4f 4c 55 4d 4e 20 69 6e 74 6f 20 61 20 70 lumn)..."Convert.COLUMN.into.a.p
1be0 61 72 74 69 61 6c 20 53 51 4c 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 6d 61 70 63 6f 6e 63 61 74 artial.SQL.string."...(mapconcat
1c00 0a 20 20 20 23 27 69 64 65 6e 74 69 74 79 0a 20 20 20 28 63 6c 2d 65 74 79 70 65 63 61 73 65 20 ....#'identity....(cl-etypecase.
1c20 63 6f 6c 75 6d 6e 0a 20 20 20 20 20 28 73 79 6d 62 6f 6c 20 28 6c 69 73 74 20 28 65 6d 61 63 73 column......(symbol.(list.(emacs
1c40 71 6c 2d 65 73 63 61 70 65 2d 69 64 65 6e 74 69 66 69 65 72 20 63 6f 6c 75 6d 6e 29 0a 20 20 20 ql-escape-identifier.column)....
1c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 64 72 20 28 61 73 73 6f 63 20 6e 69 6c ................(cadr.(assoc.nil
1c80 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 2d 6d 61 70 29 29 29 29 0a 20 20 20 20 20 28 6c 69 73 74 .emacsql-type-map))))......(list
1ca0 20 28 63 6c 2d 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 6e 64 20 28 6e 61 6d 65 20 2e 20 .(cl-destructuring-bind.(name...
1cc0 63 6f 6e 73 74 72 61 69 6e 74 73 29 20 63 6f 6c 75 6d 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 constraints).column.............
1ce0 20 28 63 6c 2d 64 65 6c 65 74 65 2d 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 .(cl-delete-if...............(la
1d00 6d 62 64 61 20 28 73 29 20 28 7a 65 72 6f 70 20 28 6c 65 6e 67 74 68 20 73 29 29 29 0a 20 20 20 mbda.(s).(zerop.(length.s)))....
1d20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 ...........(list.(emacsql-escape
1d40 2d 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -identifier.name)...............
1d60 20 20 20 20 20 20 28 69 66 20 28 6d 65 6d 62 65 72 20 28 63 61 72 20 63 6f 6e 73 74 72 61 69 6e ......(if.(member.(car.constrain
1d80 74 73 29 20 27 28 69 6e 74 65 67 65 72 20 66 6c 6f 61 74 20 6f 62 6a 65 63 74 29 29 0a 20 20 20 ts).'(integer.float.object))....
1da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 64 72 20 28 61 73 73 6f .....................(cadr.(asso
1dc0 63 20 28 70 6f 70 20 63 6f 6e 73 74 72 61 69 6e 74 73 29 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 c.(pop.constraints).emacsql-type
1de0 2d 6d 61 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 -map)).......................(ca
1e00 64 72 20 28 61 73 73 6f 63 20 6e 69 6c 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 2d 6d 61 70 29 29 dr.(assoc.nil.emacsql-type-map))
1e20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 2d ).....................(emacsql--
1e40 70 72 65 70 61 72 65 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 63 6f 6e 73 74 72 61 69 6e 74 73 29 prepare-constraints.constraints)
1e60 29 29 29 29 29 0a 20 20 20 22 20 22 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 70 )))))...."."))..(defun.emacsql-p
1e80 72 65 70 61 72 65 2d 73 63 68 65 6d 61 20 28 73 63 68 65 6d 61 29 0a 20 20 22 43 6f 6d 70 69 6c repare-schema.(schema)..."Compil
1ea0 65 20 53 43 48 45 4d 41 20 69 6e 74 6f 20 61 20 53 51 4c 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 e.SCHEMA.into.a.SQL.string."...(
1ec0 69 66 20 28 76 65 63 74 6f 72 70 20 73 63 68 65 6d 61 29 0a 20 20 20 20 20 20 28 65 6d 61 63 73 if.(vectorp.schema).......(emacs
1ee0 71 6c 2d 70 72 65 70 61 72 65 2d 73 63 68 65 6d 61 20 28 6c 69 73 74 20 73 63 68 65 6d 61 29 29 ql-prepare-schema.(list.schema))
1f00 0a 20 20 20 20 28 63 6c 2d 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 6e 64 20 28 63 6f 6c .....(cl-destructuring-bind.(col
1f20 75 6d 6e 73 20 2e 20 63 6f 6e 73 74 72 61 69 6e 74 73 29 20 73 63 68 65 6d 61 0a 20 20 20 20 20 umns...constraints).schema......
1f40 20 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 23 27 69 64 65 6e 74 69 74 79 0a 20 20 .(mapconcat........#'identity...
1f60 20 20 20 20 20 28 6e 63 6f 6e 63 0a 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 23 27 65 6d .....(nconc.........(mapcar.#'em
1f80 61 63 73 71 6c 2d 2d 70 72 65 70 61 72 65 2d 63 6f 6c 75 6d 6e 20 63 6f 6c 75 6d 6e 73 29 0a 20 acsql--prepare-column.columns)..
1fa0 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 23 27 65 6d 61 63 73 71 6c 2d 2d 70 72 65 70 61 72 .......(mapcar.#'emacsql--prepar
1fc0 65 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 63 6f 6e 73 74 72 61 69 6e 74 73 29 29 0a 20 20 20 20 e-constraints.constraints)).....
1fe0 20 20 20 22 2c 20 22 29 29 29 29 0a 0a 3b 3b 3b 20 53 74 61 74 65 6d 65 6e 74 20 63 6f 6d 70 69 ...",."))))..;;;.Statement.compi
2000 6c 61 74 69 6f 6e 0a 0a 28 64 65 66 76 61 72 20 65 6d 61 63 73 71 6c 2d 70 72 65 70 61 72 65 2d lation..(defvar.emacsql-prepare-
2020 63 61 63 68 65 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 cache.(make-hash-table.:test.'eq
2040 75 61 6c 20 3a 77 65 61 6b 6e 65 73 73 20 27 6b 65 79 29 0a 20 20 22 43 61 63 68 65 20 75 73 65 ual.:weakness.'key)..."Cache.use
2060 64 20 74 6f 20 6d 65 6d 6f 69 7a 65 20 60 65 6d 61 63 73 71 6c 2d 70 72 65 70 61 72 65 27 2e 22 d.to.memoize.`emacsql-prepare'."
2080 29 0a 0a 28 64 65 66 76 61 72 20 65 6d 61 63 73 71 6c 2d 2d 76 61 72 73 20 28 29 0a 20 20 22 55 )..(defvar.emacsql--vars.()..."U
20a0 73 65 64 20 77 69 74 68 69 6e 20 60 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 70 61 72 61 6d 73 27 sed.within.`emacsql-with-params'
20c0 20 74 6f 20 63 6f 6c 6c 65 63 74 20 70 61 72 61 6d 65 74 65 72 73 2e 22 29 0a 0a 28 64 65 66 75 .to.collect.parameters.")..(defu
20e0 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 2d 70 20 28 74 68 69 6e 67 29 0a 20 20 22 52 65 74 75 72 n.emacsql-sql-p.(thing)..."Retur
2100 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 54 48 49 4e 47 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 n.non-nil.if.THING.looks.like.a.
2120 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2e 22 0a 20 20 28 61 6e 64 20 28 76 65 63 prepared.statement."...(and.(vec
2140 74 6f 72 70 20 74 68 69 6e 67 29 20 28 3e 20 28 6c 65 6e 67 74 68 20 74 68 69 6e 67 29 20 30 29 torp.thing).(>.(length.thing).0)
2160 20 28 6b 65 79 77 6f 72 64 70 20 28 61 72 65 66 20 74 68 69 6e 67 20 30 29 29 29 29 0a 0a 28 64 .(keywordp.(aref.thing.0))))..(d
2180 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 70 61 72 61 6d 20 28 74 68 69 6e 67 29 0a 20 20 22 52 65 efun.emacsql-param.(thing)..."Re
21a0 74 75 72 6e 20 74 68 65 20 69 6e 64 65 78 20 61 6e 64 20 74 79 70 65 20 6f 66 20 54 48 49 4e 47 turn.the.index.and.type.of.THING
21c0 2c 20 6f 72 20 6e 69 6c 20 69 66 20 54 48 49 4e 47 20 69 73 20 6e 6f 74 20 61 20 70 61 72 61 6d ,.or.nil.if.THING.is.not.a.param
21e0 65 74 65 72 2e 0a 41 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 73 79 6d 62 6f 6c 20 74 68 eter..A.parameter.is.a.symbol.th
2200 61 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 24 69 31 2c 20 24 73 32 2c 20 24 76 33 2c 20 65 74 63 at.looks.like.$i1,.$s2,.$v3,.etc
2220 2e 20 54 68 65 0a 6c 65 74 74 65 72 20 72 65 66 65 72 73 20 74 6f 20 74 68 65 20 74 79 70 65 3a ..The.letter.refers.to.the.type:
2240 20 69 64 65 6e 74 69 66 69 65 72 20 28 69 29 2c 20 73 63 61 6c 61 72 20 28 73 29 2c 0a 76 65 63 .identifier.(i),.scalar.(s),.vec
2260 74 6f 72 20 28 76 29 2c 20 72 61 77 20 73 74 72 69 6e 67 20 28 72 29 2c 20 73 63 68 65 6d 61 20 tor.(v),.raw.string.(r),.schema.
2280 28 53 29 2e 22 0a 20 20 28 61 6e 64 20 28 73 79 6d 62 6f 6c 70 20 74 68 69 6e 67 29 0a 20 20 20 (S)."...(and.(symbolp.thing)....
22a0 20 20 20 20 28 6c 65 74 20 28 28 6e 61 6d 65 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 68 69 ....(let.((name.(symbol-name.thi
22c0 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 ng)))..........(and.(string-matc
22e0 68 2d 70 20 22 5e 5c 5c 24 5b 69 73 76 72 53 5d 5b 30 2d 39 5d 2b 24 22 20 6e 61 6d 65 29 0a 20 h-p."^\\$[isvrS][0-9]+$".name)..
2300 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 31 2d 20 28 72 65 61 64 20 28 73 75 .............(cons.(1-.(read.(su
2320 62 73 74 72 69 6e 67 20 6e 61 6d 65 20 32 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 bstring.name.2)))...............
2340 20 20 20 20 20 20 28 63 6c 2d 65 63 61 73 65 20 28 61 72 65 66 20 6e 61 6d 65 20 31 29 0a 20 20 ......(cl-ecase.(aref.name.1)...
2360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3f 69 20 3a 69 64 65 6e 74 69 66 ....................(?i.:identif
2380 69 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3f 73 20 3a ier).......................(?s.:
23a0 73 63 61 6c 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3f scalar).......................(?
23c0 76 20 3a 76 65 63 74 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 v.:vector)......................
23e0 20 28 3f 72 20 3a 72 61 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(?r.:raw)......................
2400 20 28 3f 53 20 3a 73 63 68 65 6d 61 29 29 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 .(?S.:schema)))))))..(defmacro.e
2420 6d 61 63 73 71 6c 2d 77 69 74 68 2d 70 61 72 61 6d 73 20 28 70 72 65 66 69 78 20 26 72 65 73 74 macsql-with-params.(prefix.&rest
2440 20 62 6f 64 79 29 0a 20 20 22 45 76 61 6c 75 61 74 65 20 42 4f 44 59 2c 20 63 6f 6c 6c 65 63 74 .body)..."Evaluate.BODY,.collect
2460 69 6e 67 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 50 72 6f 76 69 64 65 64 20 6c 6f 63 61 6c 20 66 ing.parameters..Provided.local.f
2480 75 6e 63 74 69 6f 6e 73 3a 20 60 70 61 72 61 6d 27 2c 20 60 69 64 65 6e 74 69 66 69 65 72 27 2c unctions:.`param',.`identifier',
24a0 20 60 73 63 61 6c 61 72 27 2c 20 60 72 61 77 27 2c 0a 60 73 76 65 63 74 6f 72 27 2c 20 60 65 78 .`scalar',.`raw',.`svector',.`ex
24c0 70 72 27 2c 20 60 73 75 62 73 71 6c 27 2c 20 61 6e 64 20 60 63 6f 6d 62 69 6e 65 27 2e 20 20 42 pr',.`subsql',.and.`combine'...B
24e0 4f 44 59 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 61 0a 73 74 72 69 6e 67 2c 20 77 68 69 63 ODY.should.return.a.string,.whic
2500 68 20 77 69 6c 6c 20 62 65 20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 76 61 72 69 61 62 6c 65 h.will.be.combined.with.variable
2520 20 64 65 66 69 6e 69 74 69 6f 6e 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e .definitions."...(declare.(inden
2540 74 20 31 29 29 0a 20 20 60 28 6c 65 74 20 28 28 65 6d 61 63 73 71 6c 2d 2d 76 61 72 73 20 28 29 t.1))...`(let.((emacsql--vars.()
2560 29 29 0a 20 20 20 20 20 28 63 6c 2d 66 6c 65 74 2a 20 28 28 63 6f 6d 62 69 6e 65 20 28 70 72 65 ))......(cl-flet*.((combine.(pre
2580 70 61 72 65 64 29 20 28 65 6d 61 63 73 71 6c 2d 2d 2a 63 6f 6d 62 69 6e 65 20 70 72 65 70 61 72 pared).(emacsql--*combine.prepar
25a0 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 61 72 61 6d 20 28 74 68 69 ed)).................(param.(thi
25c0 6e 67 29 20 28 65 6d 61 63 73 71 6c 2d 2d 21 70 61 72 61 6d 20 74 68 69 6e 67 29 29 0a 20 20 20 ng).(emacsql--!param.thing))....
25e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 64 65 6e 74 69 66 69 65 72 20 28 74 68 69 6e 67 29 .............(identifier.(thing)
2600 20 28 65 6d 61 63 73 71 6c 2d 2d 21 70 61 72 61 6d 20 74 68 69 6e 67 20 3a 69 64 65 6e 74 69 66 .(emacsql--!param.thing.:identif
2620 69 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 63 61 6c 61 72 20 28 74 ier)).................(scalar.(t
2640 68 69 6e 67 29 20 28 65 6d 61 63 73 71 6c 2d 2d 21 70 61 72 61 6d 20 74 68 69 6e 67 20 3a 73 63 hing).(emacsql--!param.thing.:sc
2660 61 6c 61 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 61 77 20 28 74 68 69 alar)).................(raw.(thi
2680 6e 67 29 20 28 65 6d 61 63 73 71 6c 2d 2d 21 70 61 72 61 6d 20 74 68 69 6e 67 20 3a 72 61 77 29 ng).(emacsql--!param.thing.:raw)
26a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 76 65 63 74 6f 72 20 28 74 68 69 6e ).................(svector.(thin
26c0 67 29 20 28 63 6f 6d 62 69 6e 65 20 28 65 6d 61 63 73 71 6c 2d 2d 2a 76 65 63 74 6f 72 20 74 68 g).(combine.(emacsql--*vector.th
26e0 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 78 70 72 20 28 74 68 ing))).................(expr.(th
2700 69 6e 67 29 20 28 63 6f 6d 62 69 6e 65 20 28 65 6d 61 63 73 71 6c 2d 2d 2a 65 78 70 72 20 74 68 ing).(combine.(emacsql--*expr.th
2720 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 71 6c 20 28 ing))).................(subsql.(
2740 74 68 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 thing)...................(format
2760 20 22 28 25 73 29 22 20 28 63 6f 6d 62 69 6e 65 20 28 65 6d 61 63 73 71 6c 2d 70 72 65 70 61 72 ."(%s)".(combine.(emacsql-prepar
2780 65 20 74 68 69 6e 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 63 6f 6e 63 61 e.thing)))))........(cons.(conca
27a0 74 20 2c 70 72 65 66 69 78 20 28 70 72 6f 67 6e 20 2c 40 62 6f 64 79 29 29 20 65 6d 61 63 73 71 t.,prefix.(progn.,@body)).emacsq
27c0 6c 2d 2d 76 61 72 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 21 70 61 l--vars))))..(defun.emacsql--!pa
27e0 72 61 6d 20 28 74 68 69 6e 67 20 26 6f 70 74 69 6f 6e 61 6c 20 6b 69 6e 64 29 0a 20 20 22 50 61 ram.(thing.&optional.kind)..."Pa
2800 72 73 65 2c 20 65 73 63 61 70 65 2c 20 61 6e 64 20 73 74 6f 72 65 20 54 48 49 4e 47 2e 0a 49 66 rse,.escape,.and.store.THING..If
2820 20 6f 70 74 69 6f 6e 61 6c 20 4b 49 4e 44 20 69 73 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 2c .optional.KIND.is.not.specified,
2840 20 74 68 65 6e 20 74 72 79 20 74 6f 20 67 75 65 73 73 20 69 74 2e 0a 4f 6e 6c 79 20 75 73 65 20 .then.try.to.guess.it..Only.use.
2860 77 69 74 68 69 6e 20 60 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 70 61 72 61 6d 73 27 21 22 0a 20 within.`emacsql-with-params'!"..
2880 20 28 63 6c 2d 66 6c 65 74 20 28 28 63 68 65 63 6b 20 28 70 61 72 61 6d 29 0a 20 20 20 20 20 20 .(cl-flet.((check.(param).......
28a0 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 6b 69 6e 64 20 28 6e 6f 74 20 28 65 71 ........(when.(and.kind.(not.(eq
28c0 20 6b 69 6e 64 20 28 63 64 72 20 70 61 72 61 6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .kind.(cdr.param))))............
28e0 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....(emacsql-error.............
2900 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 70 61 72 61 6d 65 74 65 72 20 74 79 70 65 20 25 73 2c ....."Invalid.parameter.type.%s,
2920 20 65 78 70 65 63 74 69 6e 67 20 25 73 22 20 74 68 69 6e 67 20 6b 69 6e 64 29 29 29 29 0a 20 20 .expecting.%s".thing.kind))))...
2940 20 20 28 6c 65 74 20 28 28 70 61 72 61 6d 20 28 65 6d 61 63 73 71 6c 2d 70 61 72 61 6d 20 74 68 ..(let.((param.(emacsql-param.th
2960 69 6e 67 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 6e 75 6c 6c 20 70 61 72 61 6d 29 0a 20 20 ing))).......(if.(null.param)...
2980 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 66 6f 72 6d 61 74 0a 20 ........(emacsql-escape-format..
29a0 20 20 20 20 20 20 20 20 20 20 28 69 66 20 6b 69 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........(if.kind..............
29c0 20 20 28 63 6c 2d 63 61 73 65 20 6b 69 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(cl-case.kind.................
29e0 20 28 3a 69 64 65 6e 74 69 66 69 65 72 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 69 64 .(:identifier.(emacsql-escape-id
2a00 65 6e 74 69 66 69 65 72 20 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 entifier.thing))................
2a20 20 20 28 3a 73 63 61 6c 61 72 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 73 63 61 6c 61 ..(:scalar.(emacsql-escape-scala
2a40 72 20 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 76 65 63 r.thing))..................(:vec
2a60 74 6f 72 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 76 65 63 74 6f 72 20 74 68 69 6e 67 tor.(emacsql-escape-vector.thing
2a80 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 72 61 77 20 28 65 6d 61 63 73 ))..................(:raw.(emacs
2aa0 71 6c 2d 65 73 63 61 70 65 2d 72 61 77 20 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 ql-escape-raw.thing))...........
2ac0 20 20 20 20 20 20 20 28 3a 73 63 68 65 6d 61 20 28 65 6d 61 63 73 71 6c 2d 70 72 65 70 61 72 65 .......(:schema.(emacsql-prepare
2ae0 2d 73 63 68 65 6d 61 20 74 68 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 -schema.thing)))..............(i
2b00 66 20 28 61 6e 64 20 28 6e 6f 74 20 28 6e 75 6c 6c 20 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 f.(and.(not.(null.thing)).......
2b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 6b 65 79 77 6f 72 64 70 20 74 ................(not.(keywordp.t
2b40 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 hing)).......................(sy
2b60 6d 62 6f 6c 70 20 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 mbolp.thing))..................(
2b80 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 69 64 65 6e 74 69 66 69 65 72 20 74 68 69 6e 67 29 emacsql-escape-identifier.thing)
2ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d ................(emacsql-escape-
2bc0 73 63 61 6c 61 72 20 74 68 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 scalar.thing)))).........(prog1.
2be0 28 69 66 20 28 65 71 20 28 63 64 72 20 70 61 72 61 6d 29 20 3a 73 63 68 65 6d 61 29 20 22 28 25 (if.(eq.(cdr.param).:schema)."(%
2c00 73 29 22 20 22 25 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 68 65 63 6b 20 70 61 72 61 6d s)"."%s")...........(check.param
2c20 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 6d 61 63 73 71 6c 2d 2d 76 61 72 73 20 )...........(setq.emacsql--vars.
2c40 28 6e 63 6f 6e 63 20 65 6d 61 63 73 71 6c 2d 2d 76 61 72 73 20 28 6c 69 73 74 20 70 61 72 61 6d (nconc.emacsql--vars.(list.param
2c60 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 2a 76 65 63 74 6f ))))))))..(defun.emacsql--*vecto
2c80 72 20 28 76 65 63 74 6f 72 29 0a 20 20 22 50 72 65 70 61 72 65 20 56 45 43 54 4f 52 2e 22 0a 20 r.(vector)..."Prepare.VECTOR."..
2ca0 20 28 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 70 61 72 61 6d 73 20 22 22 0a 20 20 20 20 28 63 6c .(emacsql-with-params."".....(cl
2cc0 2d 74 79 70 65 63 61 73 65 20 76 65 63 74 6f 72 0a 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 20 28 -typecase.vector.......(symbol.(
2ce0 65 6d 61 63 73 71 6c 2d 2d 21 70 61 72 61 6d 20 76 65 63 74 6f 72 20 3a 76 65 63 74 6f 72 29 29 emacsql--!param.vector.:vector))
2d00 0a 20 20 20 20 20 20 28 6c 69 73 74 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 73 76 65 63 74 6f .......(list.(mapconcat.#'svecto
2d20 72 20 76 65 63 74 6f 72 20 22 2c 20 22 29 29 0a 20 20 20 20 20 20 28 76 65 63 74 6f 72 20 28 66 r.vector.",.")).......(vector.(f
2d40 6f 72 6d 61 74 20 22 28 25 73 29 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 73 63 61 6c 61 72 ormat."(%s)".(mapconcat.#'scalar
2d60 20 76 65 63 74 6f 72 20 22 2c 20 22 29 29 29 0a 20 20 20 20 20 20 28 6f 74 68 65 72 77 69 73 65 .vector.",."))).......(otherwise
2d80 20 28 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20 76 65 63 74 6f 72 3a .(emacsql-error."Invalid.vector:
2da0 20 25 53 22 20 76 65 63 74 6f 72 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 6d 61 63 .%S".vector)))))..(defmacro.emac
2dc0 73 71 6c 2d 2d 67 65 6e 65 72 61 74 65 2d 6f 70 2d 6c 6f 6f 6b 75 70 2d 64 65 66 75 6e 20 28 6e sql--generate-op-lookup-defun.(n
2de0 61 6d 65 20 6f 70 65 72 61 74 6f 72 2d 70 72 65 63 65 64 65 6e 63 65 2d 67 72 6f 75 70 73 29 0a ame.operator-precedence-groups).
2e00 20 20 22 47 65 6e 65 72 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 .."Generate.function.to.look.up.
2e20 70 72 65 64 65 66 69 6e 65 64 20 53 51 4c 20 6f 70 65 72 61 74 6f 72 20 6d 65 74 61 64 61 74 61 predefined.SQL.operator.metadata
2e40 2e 0a 0a 54 68 65 20 67 65 6e 65 72 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 62 6f 75 ...The.generated.function.is.bou
2e60 6e 64 20 74 6f 20 4e 41 4d 45 20 61 6e 64 20 61 63 63 65 70 74 73 20 74 77 6f 0a 61 72 67 75 6d nd.to.NAME.and.accepts.two.argum
2e80 65 6e 74 73 2c 20 4f 50 45 52 41 54 4f 52 2d 4e 41 4d 45 20 61 6e 64 20 4f 50 45 52 41 54 4f 52 ents,.OPERATOR-NAME.and.OPERATOR
2ea0 2d 41 52 47 55 4d 45 4e 54 2d 43 4f 55 4e 54 2e 0a 4f 50 45 52 41 54 4f 52 2d 50 52 45 43 45 44 -ARGUMENT-COUNT..OPERATOR-PRECED
2ec0 45 4e 43 45 2d 47 52 4f 55 50 53 20 73 68 6f 75 6c 64 20 62 65 20 61 20 6e 75 6d 62 65 72 20 6f ENCE-GROUPS.should.be.a.number.o
2ee0 66 20 6c 69 73 74 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 6f 70 65 72 61 74 6f 72 73 20 67 72 6f f.lists.containing.operators.gro
2f00 75 70 65 64 20 62 79 20 6f 70 65 72 61 74 6f 72 20 70 72 65 63 65 64 65 6e 63 65 20 28 69 6e 20 uped.by.operator.precedence.(in.
2f20 6f 72 64 65 72 20 6f 66 20 70 72 65 63 65 64 65 6e 63 65 0a 66 72 6f 6d 20 68 69 67 68 65 73 74 order.of.precedence.from.highest
2f40 20 74 6f 20 6c 6f 77 65 73 74 29 2e 20 20 41 20 73 69 6e 67 6c 65 20 6f 70 65 72 61 74 6f 72 20 .to.lowest)...A.single.operator.
2f60 69 73 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 61 0a 6c 69 73 74 20 6f 66 20 61 74 20 6c is.represented.by.a.list.of.at.l
2f80 65 61 73 74 20 74 77 6f 20 65 6c 65 6d 65 6e 74 73 3a 20 6f 70 65 72 61 74 6f 72 20 6e 61 6d 65 east.two.elements:.operator.name
2fa0 20 28 73 79 6d 62 6f 6c 29 20 61 6e 64 0a 6f 70 65 72 61 74 6f 72 20 61 72 69 74 79 20 28 3a 75 .(symbol).and.operator.arity.(:u
2fc0 6e 61 72 79 20 6f 72 20 3a 62 69 6e 61 72 79 29 2e 20 20 4f 70 74 69 6f 6e 61 6c 6c 79 20 61 20 nary.or.:binary)...Optionally.a.
2fe0 63 75 73 74 6f 6d 0a 65 78 70 72 65 73 73 69 6f 6e 20 63 61 6e 20 62 65 20 69 6e 63 6c 75 64 65 custom.expression.can.be.include
3000 64 2c 20 77 68 69 63 68 20 64 65 66 69 6e 65 73 20 68 6f 77 20 74 68 65 20 6f 70 65 72 61 74 6f d,.which.defines.how.the.operato
3020 72 20 69 73 0a 65 78 70 61 6e 64 65 64 20 69 6e 74 6f 20 61 6e 20 53 51 4c 20 65 78 70 72 65 73 r.is.expanded.into.an.SQL.expres
3040 73 69 6f 6e 20 28 74 68 65 72 65 20 61 72 65 20 74 77 6f 20 64 65 66 61 75 6c 74 73 2c 20 6f 6e sion.(there.are.two.defaults,.on
3060 65 20 66 6f 72 0a 3a 75 6e 61 72 79 20 61 6e 64 20 6f 6e 65 20 66 6f 72 20 3a 62 69 6e 61 72 79 e.for.:unary.and.one.for.:binary
3080 20 6f 70 65 72 61 74 6f 72 73 29 2e 0a 0a 41 6e 20 65 78 61 6d 70 6c 65 20 66 6f 72 20 4f 50 45 .operators)...An.example.for.OPE
30a0 52 41 54 4f 52 2d 50 52 45 43 45 44 45 4e 43 45 2d 47 52 4f 55 50 53 3a 0a 5c 28 28 28 2b 20 3a RATOR-PRECEDENCE-GROUPS:.\(((+.:
30c0 75 6e 61 72 79 20 28 5c 22 2b 5c 22 20 3a 6f 70 65 72 61 6e 64 29 29 20 28 2d 20 3a 75 6e 61 72 unary.(\"+\".:operand)).(-.:unar
30e0 79 20 28 5c 22 2d 5c 22 20 3a 6f 70 65 72 61 6e 64 29 29 29 0a 20 28 28 2b 20 3a 62 69 6e 61 72 y.(\"-\".:operand)))..((+.:binar
3100 79 29 20 28 2d 20 3a 62 69 6e 61 72 79 29 29 29 22 0a 20 20 60 28 64 65 66 75 6e 20 2c 6e 61 6d y).(-.:binary)))"...`(defun.,nam
3120 65 20 28 6f 70 65 72 61 74 6f 72 2d 6e 61 6d 65 20 6f 70 65 72 61 74 6f 72 2d 61 72 67 75 6d 65 e.(operator-name.operator-argume
3140 6e 74 2d 63 6f 75 6e 74 29 0a 20 20 20 20 20 22 4c 6f 6f 6b 20 75 70 20 70 72 65 64 65 66 69 6e nt-count)......"Look.up.predefin
3160 65 64 20 53 51 4c 20 6f 70 65 72 61 74 6f 72 20 6d 65 74 61 64 61 74 61 2e 0a 53 65 65 20 60 65 ed.SQL.operator.metadata..See.`e
3180 6d 61 63 73 71 6c 2d 2d 67 65 6e 65 72 61 74 65 2d 6f 70 2d 6c 6f 6f 6b 75 70 2d 64 65 66 75 6e macsql--generate-op-lookup-defun
31a0 27 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 22 0a 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 '.for.details."......(cond......
31c0 20 2c 40 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 66 6f 72 20 70 72 65 63 65 64 65 .,@(cl-loop..........for.precede
31e0 6e 63 65 2d 76 61 6c 75 65 20 66 72 6f 6d 20 31 0a 20 20 20 20 20 20 20 20 20 66 6f 72 20 70 72 nce-value.from.1..........for.pr
3200 65 63 65 64 65 6e 63 65 2d 67 72 6f 75 70 20 69 6e 20 28 72 65 76 65 72 73 65 20 6f 70 65 72 61 ecedence-group.in.(reverse.opera
3220 74 6f 72 2d 70 72 65 63 65 64 65 6e 63 65 2d 67 72 6f 75 70 73 29 0a 20 20 20 20 20 20 20 20 20 tor-precedence-groups)..........
3240 61 70 70 65 6e 64 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 append.(cl-loop.................
3260 20 66 6f 72 20 28 6f 70 2d 6e 61 6d 65 20 61 72 69 74 79 20 63 75 73 74 6f 6d 2d 65 78 70 72 29 .for.(op-name.arity.custom-expr)
3280 20 69 6e 20 70 72 65 63 65 64 65 6e 63 65 2d 67 72 6f 75 70 0a 20 20 20 20 20 20 20 20 20 20 20 .in.precedence-group............
32a0 20 20 20 20 20 20 66 6f 72 20 73 71 6c 2d 6e 61 6d 65 20 3d 20 28 75 70 63 61 73 65 20 28 73 79 ......for.sql-name.=.(upcase.(sy
32c0 6d 62 6f 6c 2d 6e 61 6d 65 20 6f 70 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 mbol-name.op-name)).............
32e0 20 20 20 20 20 66 6f 72 20 73 71 6c 2d 65 78 70 72 20 3d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....for.sql-expr.=.............
3300 20 20 20 20 20 28 6f 72 20 63 75 73 74 6f 6d 2d 65 78 70 72 0a 20 20 20 20 20 20 20 20 20 20 20 .....(or.custom-expr............
3320 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 61 72 69 74 79 0a 20 20 20 20 20 20 20 20 20 ..........(pcase.arity..........
3340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 75 6e 61 72 79 20 60 28 2c 73 71 6c 2d 6e 61 6d ..............(:unary.`(,sql-nam
3360 65 20 22 20 22 20 3a 6f 70 65 72 61 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.".".:operand))................
3380 20 20 20 20 20 20 20 20 28 3a 62 69 6e 61 72 79 20 60 28 3a 6f 70 65 72 61 6e 64 20 22 20 22 20 ........(:binary.`(:operand.".".
33a0 2c 73 71 6c 2d 6e 61 6d 65 20 22 20 22 20 3a 6f 70 65 72 61 6e 64 29 29 29 29 0a 0a 20 20 20 20 ,sql-name.".".:operand))))......
33c0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 60 28 61 6e 64 .............collect.(list.`(and
33e0 20 28 65 71 20 6f 70 65 72 61 74 6f 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .(eq.operator-name..............
3400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 71 75 6f ............................(quo
3420 74 65 20 2c 6f 70 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 te.,op-name))...................
3440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 28 69 66 20 28 65 71 20 61 72 69 74 ...................,(if.(eq.arit
3460 79 20 3a 75 6e 61 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y.:unary).......................
3480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 65 71 6c 20 6f 70 65 72 61 74 ....................`(eql.operat
34a0 6f 72 2d 61 72 67 75 6d 65 6e 74 2d 63 6f 75 6e 74 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 or-argument-count.1)............
34c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 3e .............................`(>
34e0 3d 20 6f 70 65 72 61 74 6f 72 2d 61 72 67 75 6d 65 6e 74 2d 63 6f 75 6e 74 20 32 29 29 29 0a 20 =.operator-argument-count.2)))..
3500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 ..............................`(
3520 6c 69 73 74 20 27 2c 73 71 6c 2d 65 78 70 72 20 2c 61 72 69 74 79 20 2c 70 72 65 63 65 64 65 6e list.',sql-expr.,arity.,preceden
3540 63 65 2d 76 61 6c 75 65 29 29 29 29 0a 20 20 20 20 20 20 28 74 20 28 6c 69 73 74 20 6e 69 6c 20 ce-value)))).......(t.(list.nil.
3560 6e 69 6c 20 6e 69 6c 29 29 29 29 29 0a 0a 28 65 6d 61 63 73 71 6c 2d 2d 67 65 6e 65 72 61 74 65 nil.nil)))))..(emacsql--generate
3580 2d 6f 70 2d 6c 6f 6f 6b 75 70 2d 64 65 66 75 6e 0a 20 65 6d 61 63 73 71 6c 2d 2d 67 65 74 2d 6f -op-lookup-defun..emacsql--get-o
35a0 70 0a 20 28 28 28 7e 20 3a 75 6e 61 72 79 20 28 22 7e 22 20 3a 6f 70 65 72 61 6e 64 29 29 29 0a p..(((~.:unary.("~".:operand))).
35c0 20 20 28 28 63 6f 6c 6c 61 74 65 20 3a 62 69 6e 61 72 79 29 29 0a 20 20 28 28 7c 7c 20 3a 62 69 ..((collate.:binary))...((||.:bi
35e0 6e 61 72 79 29 29 0a 20 20 28 28 2a 20 3a 62 69 6e 61 72 79 29 20 28 2f 20 3a 62 69 6e 61 72 79 nary))...((*.:binary).(/.:binary
3600 29 20 28 25 20 3a 62 69 6e 61 72 79 29 29 0a 20 20 28 28 2b 20 3a 75 6e 61 72 79 20 28 22 2b 22 ).(%.:binary))...((+.:unary.("+"
3620 20 3a 6f 70 65 72 61 6e 64 29 29 20 28 2d 20 3a 75 6e 61 72 79 20 28 22 2d 22 20 3a 6f 70 65 72 .:operand)).(-.:unary.("-".:oper
3640 61 6e 64 29 29 29 0a 20 20 28 28 2b 20 3a 62 69 6e 61 72 79 29 20 28 2d 20 3a 62 69 6e 61 72 79 and)))...((+.:binary).(-.:binary
3660 29 29 0a 20 20 28 28 26 20 3a 62 69 6e 61 72 79 29 20 28 7c 20 3a 62 69 6e 61 72 79 29 20 28 3c ))...((&.:binary).(|.:binary).(<
3680 3c 20 3a 62 69 6e 61 72 79 29 20 28 3e 3e 20 3a 62 69 6e 61 72 79 29 29 0a 20 20 28 28 65 73 63 <.:binary).(>>.:binary))...((esc
36a0 61 70 65 20 3a 62 69 6e 61 72 79 20 28 3a 6f 70 65 72 61 6e 64 20 22 20 45 53 43 41 50 45 20 22 ape.:binary.(:operand.".ESCAPE."
36c0 20 3a 6f 70 65 72 61 6e 64 29 29 29 0a 20 20 28 28 3c 20 3a 62 69 6e 61 72 79 29 20 28 3c 3d 20 .:operand)))...((<.:binary).(<=.
36e0 3a 62 69 6e 61 72 79 29 20 28 3e 20 3a 62 69 6e 61 72 79 29 20 28 3e 3d 20 3a 62 69 6e 61 72 79 :binary).(>.:binary).(>=.:binary
3700 29 29 0a 0a 20 20 28 3b 3b 54 4f 44 4f 3f 20 28 62 65 74 77 65 65 6e 20 3a 62 69 6e 61 72 79 29 ))....(;;TODO?.(between.:binary)
3720 20 28 6e 6f 74 2d 62 65 74 77 65 65 6e 20 3a 62 69 6e 61 72 79 29 0a 20 20 20 28 69 73 20 3a 62 .(not-between.:binary)....(is.:b
3740 69 6e 61 72 79 29 20 28 69 73 2d 6e 6f 74 20 3a 62 69 6e 61 72 79 20 28 3a 6f 70 65 72 61 6e 64 inary).(is-not.:binary.(:operand
3760 20 22 20 49 53 20 4e 4f 54 20 22 20 3a 6f 70 65 72 61 6e 64 29 29 0a 20 20 20 28 6d 61 74 63 68 .".IS.NOT.".:operand))....(match
3780 20 3a 62 69 6e 61 72 79 29 20 28 6e 6f 74 2d 6d 61 74 63 68 20 3a 62 69 6e 61 72 79 20 28 3a 6f .:binary).(not-match.:binary.(:o
37a0 70 65 72 61 6e 64 20 22 20 4e 4f 54 20 4d 41 54 43 48 20 22 20 3a 6f 70 65 72 61 6e 64 29 29 0a perand.".NOT.MATCH.".:operand)).
37c0 20 20 20 28 6c 69 6b 65 20 3a 62 69 6e 61 72 79 29 20 28 6e 6f 74 2d 6c 69 6b 65 20 3a 62 69 6e ...(like.:binary).(not-like.:bin
37e0 61 72 79 20 28 3a 6f 70 65 72 61 6e 64 20 20 22 20 4e 4f 54 20 4c 49 4b 45 20 22 20 3a 6f 70 65 ary.(:operand..".NOT.LIKE.".:ope
3800 72 61 6e 64 29 29 0a 20 20 20 28 69 6e 20 3a 62 69 6e 61 72 79 29 20 28 6e 6f 74 2d 69 6e 20 3a rand))....(in.:binary).(not-in.:
3820 62 69 6e 61 72 79 20 28 3a 6f 70 65 72 61 6e 64 20 22 20 4e 4f 54 20 49 4e 20 22 20 3a 6f 70 65 binary.(:operand.".NOT.IN.".:ope
3840 72 61 6e 64 29 29 0a 20 20 20 28 69 73 6e 75 6c 6c 20 3a 75 6e 61 72 79 20 28 3a 6f 70 65 72 61 rand))....(isnull.:unary.(:opera
3860 6e 64 20 22 20 49 53 4e 55 4c 4c 22 29 29 0a 20 20 20 28 6e 6f 74 6e 75 6c 6c 20 3a 75 6e 61 72 nd.".ISNULL"))....(notnull.:unar
3880 79 20 28 3a 6f 70 65 72 61 6e 64 20 22 20 4e 4f 54 4e 55 4c 4c 22 29 29 0a 20 20 20 28 3d 20 3a y.(:operand.".NOTNULL"))....(=.:
38a0 62 69 6e 61 72 79 29 20 28 3d 3d 20 3a 62 69 6e 61 72 79 29 0a 20 20 20 28 21 3d 20 3a 62 69 6e binary).(==.:binary)....(!=.:bin
38c0 61 72 79 29 20 28 3c 3e 20 3a 62 69 6e 61 72 79 29 0a 20 20 20 28 67 6c 6f 62 20 3a 62 69 6e 61 ary).(<>.:binary)....(glob.:bina
38e0 72 79 29 20 28 6e 6f 74 2d 67 6c 6f 62 20 3a 62 69 6e 61 72 79 20 28 3a 6f 70 65 72 61 6e 64 20 ry).(not-glob.:binary.(:operand.
3900 22 20 4e 4f 54 20 47 4c 4f 42 20 22 20 3a 6f 70 65 72 61 6e 64 29 29 0a 20 20 20 28 72 65 67 65 ".NOT.GLOB.".:operand))....(rege
3920 78 70 20 3a 62 69 6e 61 72 79 29 20 28 6e 6f 74 2d 72 65 67 65 78 70 20 3a 62 69 6e 61 72 79 20 xp.:binary).(not-regexp.:binary.
3940 28 3a 6f 70 65 72 61 6e 64 20 22 20 4e 4f 54 20 52 45 47 45 58 50 20 22 20 3a 6f 70 65 72 61 6e (:operand.".NOT.REGEXP.".:operan
3960 64 29 29 29 0a 0a 20 20 28 28 6e 6f 74 20 3a 75 6e 61 72 79 29 29 0a 20 20 28 28 61 6e 64 20 3a d)))....((not.:unary))...((and.:
3980 62 69 6e 61 72 79 29 29 0a 20 20 28 28 6f 72 20 3a 62 69 6e 61 72 79 29 29 29 29 0a 0a 28 64 65 binary))...((or.:binary))))..(de
39a0 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 65 78 70 61 6e 64 2d 66 6f 72 6d 61 74 2d 73 74 72 69 6e fun.emacsql--expand-format-strin
39c0 67 20 28 6f 70 20 65 78 70 72 20 61 72 69 74 79 20 61 72 67 75 6d 65 6e 74 2d 63 6f 75 6e 74 29 g.(op.expr.arity.argument-count)
39e0 0a 20 20 22 43 72 65 61 74 65 20 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 20 66 6f 72 20 61 6e 20 ..."Create.format-string.for.an.
3a00 53 51 4c 20 6f 70 65 72 61 74 6f 72 2e 0a 54 68 65 20 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 20 SQL.operator..The.format-string.
3a20 72 65 74 75 72 6e 65 64 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 75 73 65 64 20 returned.is.intended.to.be.used.
3a40 77 69 74 68 20 60 66 6f 72 6d 61 74 27 0a 74 6f 20 63 72 65 61 74 65 20 61 6e 20 53 51 4c 20 65 with.`format'.to.create.an.SQL.e
3a60 78 70 72 65 73 73 69 6f 6e 2e 22 0a 20 20 28 61 6e 64 20 65 78 70 72 0a 20 20 20 20 20 20 20 28 xpression."...(and.expr........(
3a80 63 6c 2d 6c 61 62 65 6c 73 20 28 28 72 65 70 6c 61 63 65 2d 6f 70 65 72 61 6e 64 20 28 78 29 20 cl-labels.((replace-operand.(x).
3aa0 28 69 66 20 28 65 71 20 78 20 3a 6f 70 65 72 61 6e 64 29 20 22 25 73 22 20 78 29 29 0a 20 20 20 (if.(eq.x.:operand)."%s".x))....
3ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 2d 66 6f 72 6d 61 74 2d 73 74 72 69 6e ................(to-format-strin
3ae0 67 20 28 65 29 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 72 65 70 6c 61 63 65 2d 6f 70 65 72 61 g.(e).(mapconcat.#'replace-opera
3b00 6e 64 20 65 20 22 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 nd.e."")))..........(cond.......
3b20 20 20 20 20 28 28 61 6e 64 20 28 65 71 20 61 72 69 74 79 20 3a 75 6e 61 72 79 29 20 28 65 71 6c ....((and.(eq.arity.:unary).(eql
3b40 20 61 72 67 75 6d 65 6e 74 2d 63 6f 75 6e 74 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 .argument-count.1))............(
3b60 74 6f 2d 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 20 65 78 70 72 29 29 0a 20 20 20 20 20 20 20 20 to-format-string.expr)).........
3b80 20 20 28 28 61 6e 64 20 28 65 71 20 61 72 69 74 79 20 3a 62 69 6e 61 72 79 29 20 28 3e 3d 20 61 ..((and.(eq.arity.:binary).(>=.a
3ba0 72 67 75 6d 65 6e 74 2d 63 6f 75 6e 74 20 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 rgument-count.2))............(le
3bc0 74 20 28 28 72 65 73 75 6c 74 20 28 72 65 76 65 72 73 65 20 65 78 70 72 29 29 29 0a 20 20 20 20 t.((result.(reverse.expr))).....
3be0 20 20 20 20 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 5f 20 28 2d 20 61 72 67 75 6d 65 6e 74 .........(dotimes.(_.(-.argument
3c00 2d 63 6f 75 6e 74 20 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 -count.2))................(setq.
3c20 72 65 73 75 6c 74 20 28 6e 63 6f 6e 63 20 28 72 65 76 65 72 73 65 20 65 78 70 72 29 20 28 63 64 result.(nconc.(reverse.expr).(cd
3c40 72 20 72 65 73 75 6c 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 2d 66 6f r.result))))..............(to-fo
3c60 72 6d 61 74 2d 73 74 72 69 6e 67 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 rmat-string.(nreverse.result))))
3c80 0a 20 20 20 20 20 20 20 20 20 20 28 74 20 28 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 22 57 72 ...........(t.(emacsql-error."Wr
3ca0 6f 6e 67 20 6e 75 6d 62 65 72 20 6f 66 20 6f 70 65 72 61 6e 64 73 20 66 6f 72 20 25 73 22 20 6f ong.number.of.operands.for.%s".o
3cc0 70 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 67 65 74 2d 6f 70 2d p))))))..(defun.emacsql--get-op-
3ce0 69 6e 66 6f 20 28 6f 70 20 61 72 67 75 6d 65 6e 74 2d 63 6f 75 6e 74 20 70 61 72 65 6e 74 2d 70 info.(op.argument-count.parent-p
3d00 72 65 63 65 64 65 6e 63 65 2d 76 61 6c 75 65 29 0a 20 20 22 4c 6f 6f 6b 75 70 20 53 51 4c 20 6f recedence-value)..."Lookup.SQL.o
3d20 70 65 72 61 74 6f 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20 67 65 6e 65 72 61 74 69 perator.information.for.generati
3d40 6e 67 20 61 6e 20 53 51 4c 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 52 65 74 75 72 6e 73 20 74 68 ng.an.SQL.expression..Returns.th
3d60 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 76 61 6c 75 65 73 20 77 68 65 6e e.following.multiple.values.when
3d80 20 61 6e 20 6f 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65 0a 69 64 65 6e 74 69 66 69 65 64 3a 20 .an.operator.can.be.identified:.
3da0 61 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 28 73 65 65 20 60 65 6d 61 63 73 71 6c 2d 2d 65 a.format.string.(see.`emacsql--e
3dc0 78 70 61 6e 64 2d 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 27 29 0a 61 6e 64 20 61 20 70 72 65 63 xpand-format-string').and.a.prec
3de0 65 64 65 6e 63 65 20 76 61 6c 75 65 2e 20 20 49 66 20 50 41 52 45 4e 54 2d 50 52 45 43 45 44 45 edence.value...If.PARENT-PRECEDE
3e00 4e 43 45 2d 56 41 4c 55 45 20 69 73 20 67 72 65 61 74 65 72 20 6f 72 0a 65 71 75 61 6c 20 74 6f NCE-VALUE.is.greater.or.equal.to
3e20 20 74 68 65 20 69 64 65 6e 74 69 66 69 65 64 20 6f 70 65 72 61 74 6f 72 27 73 20 70 72 65 63 65 .the.identified.operator's.prece
3e40 64 65 6e 63 65 2c 20 74 68 65 6e 20 74 68 65 20 66 6f 72 6d 61 74 0a 73 74 72 69 6e 67 20 72 65 dence,.then.the.format.string.re
3e60 74 75 72 6e 65 64 20 69 73 20 77 72 61 70 70 65 64 20 77 69 74 68 20 70 61 72 65 6e 74 68 65 73 turned.is.wrapped.with.parenthes
3e80 65 73 2e 22 0a 20 20 28 63 6c 2d 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 6e 64 20 28 66 es."...(cl-destructuring-bind.(f
3ea0 6f 72 6d 61 74 2d 73 74 72 69 6e 67 20 61 72 69 74 79 20 70 72 65 63 65 64 65 6e 63 65 2d 76 61 ormat-string.arity.precedence-va
3ec0 6c 75 65 29 0a 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 2d 67 65 74 2d 6f 70 20 6f 70 20 61 lue).......(emacsql--get-op.op.a
3ee0 72 67 75 6d 65 6e 74 2d 63 6f 75 6e 74 29 0a 20 20 20 20 28 6c 65 74 20 28 28 65 78 70 61 6e 64 rgument-count).....(let.((expand
3f00 65 64 2d 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 ed-format-string............(ema
3f20 63 73 71 6c 2d 2d 65 78 70 61 6e 64 2d 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 csql--expand-format-string......
3f40 20 20 20 20 20 20 20 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 2d 73 74 72 .......op.............format-str
3f60 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 72 69 74 79 0a 20 20 20 20 20 20 20 20 20 20 ing.............arity...........
3f80 20 20 61 72 67 75 6d 65 6e 74 2d 63 6f 75 6e 74 29 29 29 0a 20 20 20 20 20 20 28 63 6c 2d 76 61 ..argument-count))).......(cl-va
3fa0 6c 75 65 73 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e lues.(cond...................((n
3fc0 75 6c 6c 20 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 ull.format-string).nil).........
3fe0 20 20 20 20 20 20 20 20 20 20 28 28 3e 3d 20 70 61 72 65 6e 74 2d 70 72 65 63 65 64 65 6e 63 65 ..........((>=.parent-precedence
4000 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 -value........................pr
4020 65 63 65 64 65 6e 63 65 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ecedence-value).................
4040 20 20 20 28 66 6f 72 6d 61 74 20 22 28 25 73 29 22 20 65 78 70 61 6e 64 65 64 2d 66 6f 72 6d 61 ...(format."(%s)".expanded-forma
4060 74 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 t-string))...................(t.
4080 65 78 70 61 6e 64 65 64 2d 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 expanded-format-string))........
40a0 20 20 20 20 20 20 20 20 20 20 70 72 65 63 65 64 65 6e 63 65 2d 76 61 6c 75 65 29 29 29 29 0a 0a ..........precedence-value))))..
40c0 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 2a 65 78 70 72 20 28 65 78 70 72 20 26 6f 70 74 (defun.emacsql--*expr.(expr.&opt
40e0 69 6f 6e 61 6c 20 70 61 72 65 6e 74 2d 70 72 65 63 65 64 65 6e 63 65 2d 76 61 6c 75 65 29 0a 20 ional.parent-precedence-value)..
4100 20 22 45 78 70 61 6e 64 20 45 58 50 52 20 72 65 63 75 72 73 69 76 65 6c 79 2e 22 0a 20 20 28 65 ."Expand.EXPR.recursively."...(e
4120 6d 61 63 73 71 6c 2d 77 69 74 68 2d 70 61 72 61 6d 73 20 22 22 0a 20 20 20 20 28 63 6f 6e 64 0a macsql-with-params."".....(cond.
4140 20 20 20 20 20 28 28 65 6d 61 63 73 71 6c 2d 73 71 6c 2d 70 20 65 78 70 72 29 20 28 73 75 62 73 .....((emacsql-sql-p.expr).(subs
4160 71 6c 20 65 78 70 72 29 29 0a 20 20 20 20 20 28 28 76 65 63 74 6f 72 70 20 65 78 70 72 29 20 28 ql.expr))......((vectorp.expr).(
4180 73 76 65 63 74 6f 72 20 65 78 70 72 29 29 0a 20 20 20 20 20 28 28 61 74 6f 6d 20 65 78 70 72 29 svector.expr))......((atom.expr)
41a0 20 28 70 61 72 61 6d 20 65 78 70 72 29 29 0a 20 20 20 20 20 28 28 63 6c 2d 64 65 73 74 72 75 63 .(param.expr))......((cl-destruc
41c0 74 75 72 69 6e 67 2d 62 69 6e 64 20 28 6f 70 20 2e 20 61 72 67 73 29 20 65 78 70 72 0a 20 20 20 turing-bind.(op...args).expr....
41e0 20 20 20 20 20 28 63 6c 2d 6d 75 6c 74 69 70 6c 65 2d 76 61 6c 75 65 2d 62 69 6e 64 20 28 66 6f .....(cl-multiple-value-bind.(fo
4200 72 6d 61 74 2d 73 74 72 69 6e 67 20 70 72 65 63 65 64 65 6e 63 65 2d 76 61 6c 75 65 29 0a 20 20 rmat-string.precedence-value)...
4220 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 2d 67 65 74 2d 6f 70 2d 69 6e 66 6f 20 ..........(emacsql--get-op-info.
4240 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 op..............................
4260 20 20 20 20 20 28 6c 65 6e 67 74 68 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(length.args)..............
4280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 70 61 72 65 6e 74 2d .....................(or.parent-
42a0 70 72 65 63 65 64 65 6e 63 65 2d 76 61 6c 75 65 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 precedence-value.0))...........(
42c0 63 6c 2d 66 6c 65 74 20 28 28 72 65 63 75 72 20 28 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 cl-flet.((recur.(n).............
42e0 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 62 69 6e 65 20 28 65 6d 61 63 73 71 6c 2d 2d 2a 65 78 ..........(combine.(emacsql--*ex
4300 70 72 20 28 6e 74 68 20 6e 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pr.(nth.n.args).................
4320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
4340 6f 72 20 70 72 65 63 65 64 65 6e 63 65 2d 76 61 6c 75 65 20 30 29 29 29 29 0a 20 20 20 20 20 20 or.precedence-value.0)))).......
4360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 70 73 20 28 6f 70 29 0a 20 20 20 20 20 20 20 ..............(nops.(op)........
4380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 22 57 ...............(emacsql-error."W
43a0 72 6f 6e 67 20 6e 75 6d 62 65 72 20 6f 66 20 6f 70 65 72 61 6e 64 73 20 66 6f 72 20 25 73 22 20 rong.number.of.operands.for.%s".
43c0 6f 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 63 61 73 65 20 6f 70 0a 20 20 op))).............(cl-case.op...
43e0 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 70 65 63 69 61 6c 20 63 61 73 65 73 20 3c 3d 20 ............;;.Special.cases.<=.
4400 3e 3d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 3c 3d 20 3e 3d 29 0a 20 20 20 20 20 20 >=...............((<=.>=).......
4420 20 20 20 20 20 20 20 20 20 28 63 6c 2d 63 61 73 65 20 28 6c 65 6e 67 74 68 20 61 72 67 73 29 0a .........(cl-case.(length.args).
4440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 32 20 28 66 6f 72 6d 61 74 20 66 6f 72 6d .................(2.(format.form
4460 61 74 2d 73 74 72 69 6e 67 20 28 72 65 63 75 72 20 30 29 20 28 72 65 63 75 72 20 31 29 29 29 0a at-string.(recur.0).(recur.1))).
4480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 33 20 28 66 6f 72 6d 61 74 20 28 69 66 20 .................(3.(format.(if.
44a0 28 3e 3d 20 28 6f 72 20 70 61 72 65 6e 74 2d 70 72 65 63 65 64 65 6e 63 65 2d 76 61 6c 75 65 20 (>=.(or.parent-precedence-value.
44c0 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0)..............................
44e0 20 20 20 20 20 20 20 70 72 65 63 65 64 65 6e 63 65 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 .......precedence-value)........
4500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 28 25 73 20 42 45 ........................."(%s.BE
4520 54 57 45 45 4e 20 25 73 20 41 4e 44 20 25 73 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 TWEEN.%s.AND.%s)"...............
4540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 25 73 20 42 45 54 57 45 45 4e 20 25 73 20 41 ................"%s.BETWEEN.%s.A
4560 4e 44 20 25 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ND.%s").........................
4580 20 20 20 20 28 72 65 63 75 72 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(recur.1)...................
45a0 20 20 20 20 20 20 20 20 20 20 28 72 65 63 75 72 20 28 69 66 20 28 65 71 20 6f 70 20 27 3e 3d 29 ..........(recur.(if.(eq.op.'>=)
45c0 20 32 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .2.0))..........................
45e0 20 20 20 28 72 65 63 75 72 20 28 69 66 20 28 65 71 20 6f 70 20 27 3e 3d 29 20 30 20 32 29 29 29 ...(recur.(if.(eq.op.'>=).0.2)))
4600 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 74 68 65 72 77 69 73 65 20 28 6e )..................(otherwise.(n
4620 6f 70 73 20 6f 70 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 65 6e 66 6f ops.op))))...............;;.enfo
4640 72 63 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 62 65 20 61 20 63 68 61 72 rce.second.argument.to.be.a.char
4660 61 63 74 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 73 63 61 70 65 29 0a 20 20 acter...............((escape)...
4680 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 65 63 6f 6e 64 2d 61 72 67 20 28 .............(let.((second-arg.(
46a0 63 61 64 72 20 61 72 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 cadr.args)))..................(c
46c0 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 3d 20 32 ond...................((not.(=.2
46e0 20 28 6c 65 6e 67 74 68 20 61 72 67 73 29 29 29 20 28 6e 6f 70 73 20 6f 70 29 29 0a 20 20 20 20 .(length.args))).(nops.op)).....
4700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 63 68 61 72 61 63 74 65 72 70 20 ..............((not.(characterp.
4720 73 65 63 6f 6e 64 2d 61 72 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 second-arg))....................
4740 28 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (emacsql-error..................
4760 20 20 20 22 53 65 63 6f 6e 64 20 6f 70 65 72 61 6e 64 20 6f 66 20 65 73 63 61 70 65 20 68 61 73 ..."Second.operand.of.escape.has
4780 20 74 6f 20 62 65 20 61 20 63 68 61 72 61 63 74 65 72 2c 20 67 6f 74 20 25 73 22 0a 20 20 20 20 .to.be.a.character,.got.%s".....
47a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 63 6f 6e 64 2d 61 72 67 29 29 0a 20 20 20 ................second-arg))....
47c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 66 6f 72 6d 61 74 20 66 6f 72 6d 61 74 ...............(t.(format.format
47e0 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -string.........................
4800 20 20 20 20 20 28 72 65 63 75 72 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(recur.0)..................
4820 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 71 75 6f 74 65 2d 63 68 61 72 61 ............(emacsql-quote-chara
4840 63 74 65 72 20 73 65 63 6f 6e 64 2d 61 72 67 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 cter.second-arg))))))...........
4860 20 20 20 20 3b 3b 20 4f 72 64 65 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 ....;;.Ordering...............((
4880 61 73 63 20 64 65 73 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 asc.desc)................(format
48a0 20 22 25 73 20 25 73 22 20 28 72 65 63 75 72 20 30 29 20 28 75 70 63 61 73 65 20 28 73 79 6d 62 ."%s.%s".(recur.0).(upcase.(symb
48c0 6f 6c 2d 6e 61 6d 65 20 6f 70 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 ol-name.op))))...............;;.
48e0 53 70 65 63 69 61 6c 20 63 61 73 65 20 71 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 Special.case.quote..............
4900 20 28 28 71 75 6f 74 65 29 20 28 6c 65 74 20 28 28 61 72 67 20 28 6e 74 68 20 30 20 61 72 67 73 .((quote).(let.((arg.(nth.0.args
4920 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 )))..........................(if
4940 20 28 73 74 72 69 6e 67 70 20 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(stringp.arg)..................
4960 20 20 20 20 20 20 20 20 20 20 20 20 28 72 61 77 20 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 ............(raw.arg)...........
4980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 63 61 6c 61 72 20 61 72 67 29 29 29 29 .................(scalar.arg))))
49a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 70 65 63 69 61 6c 20 63 61 73 65 20 66 ...............;;.Special.case.f
49c0 75 6e 63 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 66 75 6e 63 61 6c 6c 29 0a uncall...............((funcall).
49e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 28 25 73 29 22 20 ...............(format."%s(%s)".
4a00 28 72 65 63 75 72 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (recur.0).......................
4a20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .(cond.........................(
4a40 28 61 6e 64 20 28 3d 20 32 20 28 6c 65 6e 67 74 68 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 (and.(=.2.(length.args))........
4a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 20 27 2a 20 28 6e .......................(eq.'*.(n
4a80 74 68 20 31 20 61 72 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 th.1.args)))....................
4aa0 20 20 20 20 20 20 22 2a 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......"*")......................
4ac0 20 20 20 28 28 61 6e 64 20 28 3d 20 33 20 28 6c 65 6e 67 74 68 20 61 72 67 73 29 29 0a 20 20 20 ...((and.(=.3.(length.args))....
4ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 20 3a ...........................(eq.:
4b00 64 69 73 74 69 6e 63 74 20 28 6e 74 68 20 31 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 distinct.(nth.1.args))..........
4b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 44 49 .....................(format."DI
4b40 53 54 49 4e 43 54 20 25 73 22 20 28 72 65 63 75 72 20 32 29 29 29 29 0a 20 20 20 20 20 20 20 20 STINCT.%s".(recur.2)))).........
4b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 20 ................((mapconcat.....
4b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 72 65 63 75 72 20 28 63 ......................#'recur.(c
4ba0 6c 2d 6c 6f 6f 70 20 66 6f 72 20 69 20 66 72 6f 6d 20 31 20 62 65 6c 6f 77 20 28 6c 65 6e 67 74 l-loop.for.i.from.1.below.(lengt
4bc0 68 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 h.args).........................
4be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 69 29 0a 20 20 ...................collect.i)...
4c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2c 20 22 29 29 29 29 ........................",."))))
4c20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 47 75 65 73 73 0a 20 20 20 20 20 20 20 )...............;;.Guess........
4c40 20 20 20 20 20 20 20 28 6f 74 68 65 72 77 69 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......(otherwise...............
4c60 20 28 6c 65 74 20 28 28 61 72 67 2d 69 6e 64 69 63 65 73 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 .(let.((arg-indices.(cl-loop.for
4c80 20 69 20 66 72 6f 6d 20 30 20 62 65 6c 6f 77 20 28 6c 65 6e 67 74 68 20 61 72 67 73 29 20 63 6f .i.from.0.below.(length.args).co
4ca0 6c 6c 65 63 74 20 69 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 llect.i)))..................(if.
4cc0 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 format-string...................
4ce0 20 20 20 28 61 70 70 6c 79 20 23 27 66 6f 72 6d 61 74 20 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 ...(apply.#'format.format-string
4d00 20 28 6d 61 70 63 61 72 20 23 27 72 65 63 75 72 20 61 72 67 2d 69 6e 64 69 63 65 73 29 29 0a 20 .(mapcar.#'recur.arg-indices))..
4d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 ..................(mapconcat....
4d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 72 65 63 75 72 20 28 63 6c 2d 6c 6f 6f .................#'recur.(cl-loo
4d60 70 20 66 6f 72 20 69 20 66 72 6f 6d 20 30 20 62 65 6c 6f 77 20 28 6c 65 6e 67 74 68 20 61 72 67 p.for.i.from.0.below.(length.arg
4d80 73 29 20 63 6f 6c 6c 65 63 74 20 69 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s).collect.i)...................
4da0 20 20 28 66 6f 72 6d 61 74 20 22 20 25 73 20 22 20 28 75 70 63 61 73 65 20 28 73 79 6d 62 6f 6c ..(format.".%s.".(upcase.(symbol
4dc0 2d 6e 61 6d 65 20 6f 70 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 -name.op)))))))))))))))..(defun.
4de0 65 6d 61 63 73 71 6c 2d 2d 2a 69 64 65 6e 74 73 20 28 69 64 65 6e 74 73 29 0a 20 20 22 52 65 61 emacsql--*idents.(idents)..."Rea
4e00 64 20 69 6e 20 61 20 76 65 63 74 6f 72 20 6f 66 20 49 44 45 4e 54 53 20 69 64 65 6e 74 69 66 69 d.in.a.vector.of.IDENTS.identifi
4e20 65 72 73 2c 20 6f 72 20 6a 75 73 74 20 61 6e 20 73 69 6e 67 6c 65 20 69 64 65 6e 74 69 66 69 65 ers,.or.just.an.single.identifie
4e40 72 2e 22 0a 20 20 28 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 70 61 72 61 6d 73 20 22 22 0a 20 20 r."...(emacsql-with-params.""...
4e60 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 65 78 70 72 20 69 64 65 6e 74 73 20 22 2c 20 22 29 ..(mapconcat.#'expr.idents.",.")
4e80 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 2a 63 6f 6d 62 69 6e 65 20 28 70 72 ))..(defun.emacsql--*combine.(pr
4ea0 65 70 61 72 65 64 29 0a 20 20 22 41 70 70 65 6e 64 20 70 61 72 61 6d 65 74 65 72 73 20 66 72 6f epared)..."Append.parameters.fro
4ec0 6d 20 50 52 45 50 41 52 45 44 20 74 6f 20 60 65 6d 61 63 73 71 6c 2d 2d 76 61 72 73 27 2c 20 72 m.PREPARED.to.`emacsql--vars',.r
4ee0 65 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e 67 2e 0a 4f 6e 6c 79 20 75 73 65 20 77 69 74 68 69 eturn.the.string..Only.use.withi
4f00 6e 20 60 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 70 61 72 61 6d 73 27 21 22 0a 20 20 28 63 6c 2d n.`emacsql-with-params'!"...(cl-
4f20 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 6e 64 20 28 73 74 72 69 6e 67 20 2e 20 76 61 72 destructuring-bind.(string...var
4f40 73 29 20 70 72 65 70 61 72 65 64 0a 20 20 20 20 28 73 65 74 71 20 65 6d 61 63 73 71 6c 2d 2d 76 s).prepared.....(setq.emacsql--v
4f60 61 72 73 20 28 6e 63 6f 6e 63 20 65 6d 61 63 73 71 6c 2d 2d 76 61 72 73 20 76 61 72 73 29 29 0a ars.(nconc.emacsql--vars.vars)).
4f80 20 20 20 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 70 72 65 ....string))..(defun.emacsql-pre
4fa0 70 61 72 65 2d 2d 73 74 72 69 6e 67 20 28 73 74 72 69 6e 67 29 0a 20 20 22 43 72 65 61 74 65 20 pare--string.(string)..."Create.
4fc0 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 66 72 6f 6d 20 53 54 52 49 4e 47 a.prepared.statement.from.STRING
4fe0 2e 22 0a 20 20 28 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 70 61 72 61 6d 73 20 22 22 0a 20 20 20 ."...(emacsql-with-params.""....
5000 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 .(replace-regexp-in-string......
5020 22 5c 5c 24 5b 69 73 76 5d 5b 30 2d 39 5d 2b 22 20 28 6c 61 6d 62 64 61 20 28 76 29 20 28 70 61 "\\$[isv][0-9]+".(lambda.(v).(pa
5040 72 61 6d 20 28 69 6e 74 65 72 6e 20 76 29 29 29 20 73 74 72 69 6e 67 29 29 29 0a 0a 28 64 65 66 ram.(intern.v))).string)))..(def
5060 75 6e 20 65 6d 61 63 73 71 6c 2d 70 72 65 70 61 72 65 2d 2d 73 65 78 70 20 28 73 65 78 70 29 0a un.emacsql-prepare--sexp.(sexp).
5080 20 20 22 43 72 65 61 74 65 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 66 .."Create.a.prepared.statement.f
50a0 72 6f 6d 20 53 45 58 50 2e 22 0a 20 20 28 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 70 61 72 61 6d rom.SEXP."...(emacsql-with-param
50c0 73 20 22 22 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 77 69 74 68 20 69 74 65 6d 73 20 3d 20 28 s."".....(cl-loop.with.items.=.(
50e0 63 6c 2d 63 6f 65 72 63 65 20 73 65 78 70 20 27 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 cl-coerce.sexp.'list)...........
5100 20 20 20 61 6e 64 20 6c 61 73 74 20 3d 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 77 ...and.last.=.nil..............w
5120 68 69 6c 65 20 28 6e 6f 74 20 28 6e 75 6c 6c 20 69 74 65 6d 73 29 29 0a 20 20 20 20 20 20 20 20 hile.(not.(null.items)).........
5140 20 20 20 20 20 66 6f 72 20 69 74 65 6d 20 3d 20 28 70 6f 70 20 69 74 65 6d 73 29 0a 20 20 20 20 .....for.item.=.(pop.items).....
5160 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 .........collect..............(c
5180 6c 2d 74 79 70 65 63 61 73 65 20 69 74 65 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 l-typecase.item................(
51a0 6b 65 79 77 6f 72 64 20 28 69 66 20 28 65 71 20 3a 76 61 6c 75 65 73 20 69 74 65 6d 29 0a 20 20 keyword.(if.(eq.:values.item)...
51c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 ..........................(conca
51e0 74 20 22 56 41 4c 55 45 53 20 22 20 28 73 76 65 63 74 6f 72 20 28 70 6f 70 20 69 74 65 6d 73 29 t."VALUES.".(svector.(pop.items)
5200 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d ))...........................(em
5220 61 63 73 71 6c 2d 2d 66 72 6f 6d 2d 6b 65 79 77 6f 72 64 20 69 74 65 6d 29 29 29 0a 20 20 20 20 acsql--from-keyword.item))).....
5240 20 20 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 20 28 69 66 20 28 65 71 20 69 74 65 6d 20 ...........(symbol.(if.(eq.item.
5260 27 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 '*)............................"
5280 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 61 72 *"..........................(par
52a0 61 6d 20 69 74 65 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f am.item)))................(vecto
52c0 72 20 28 69 66 20 28 65 6d 61 63 73 71 6c 2d 73 71 6c 2d 70 20 69 74 65 6d 29 0a 20 20 20 20 20 r.(if.(emacsql-sql-p.item)......
52e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 71 6c 20 69 74 ......................(subsql.it
5300 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 em)..........................(le
5320 74 20 28 28 69 64 65 6e 74 73 20 28 63 6f 6d 62 69 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 t.((idents.(combine.............
5340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 ............................(ema
5360 63 73 71 6c 2d 2d 2a 69 64 65 6e 74 73 20 69 74 65 6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 csql--*idents.item))))..........
5380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6b 65 79 77 6f 72 64 70 20 ..................(if.(keywordp.
53a0 6c 61 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 last)...........................
53c0 20 20 20 20 20 69 64 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....idents.....................
53e0 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 28 25 73 29 22 20 69 64 65 6e 74 73 29 29 .........(format."(%s)".idents))
5400 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 69 66 20 28 76 65 )))................(list.(if.(ve
5420 63 74 6f 72 70 20 28 63 61 72 20 69 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ctorp.(car.item))...............
5440 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d 66 6f 72 6d 61 ...........(emacsql-escape-forma
5460 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 t...........................(for
5480 6d 61 74 20 22 28 25 73 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mat."(%s)"......................
54a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 70 72 65 70 61 72 65 2d 73 63 .............(emacsql-prepare-sc
54c0 68 65 6d 61 20 69 74 65 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 hema.item)))....................
54e0 20 20 20 20 28 63 6f 6d 62 69 6e 65 20 28 65 6d 61 63 73 71 6c 2d 2d 2a 65 78 70 72 20 69 74 65 ....(combine.(emacsql--*expr.ite
5500 6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 74 68 65 72 77 69 73 65 0a m))))................(otherwise.
5520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 70 65 2d ................(emacsql-escape-
5540 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c format..................(emacsql
5560 2d 65 73 63 61 70 65 2d 73 63 61 6c 61 72 20 69 74 65 6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 -escape-scalar.item)))).........
5580 20 20 20 20 20 69 6e 74 6f 20 70 61 72 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 .....into.parts..............do.
55a0 28 73 65 74 71 20 6c 61 73 74 20 69 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 (setq.last.item)..............fi
55c0 6e 61 6c 6c 79 20 28 63 6c 2d 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67 2d 6a 6f 69 6e 20 70 61 nally.(cl-return.(string-join.pa
55e0 72 74 73 20 22 20 22 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 70 72 65 rts.".")))))..(defun.emacsql-pre
5600 70 61 72 65 20 28 73 71 6c 29 0a 20 20 22 45 78 70 61 6e 64 20 53 51 4c 20 28 73 74 72 69 6e 67 pare.(sql)..."Expand.SQL.(string
5620 20 6f 72 20 73 65 78 70 29 20 69 6e 74 6f 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d .or.sexp).into.a.prepared.statem
5640 65 6e 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 61 63 68 65 20 65 6d 61 63 73 71 6c 2d 70 72 ent."...(let*.((cache.emacsql-pr
5660 65 70 61 72 65 2d 63 61 63 68 65 29 0a 20 20 20 20 20 20 20 20 20 28 6b 65 79 20 28 63 6f 6e 73 epare-cache)..........(key.(cons
5680 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 2d 6d 61 70 20 73 71 6c 29 29 29 0a 20 20 20 20 28 6f 72 .emacsql-type-map.sql))).....(or
56a0 20 28 67 65 74 68 61 73 68 20 6b 65 79 20 63 61 63 68 65 29 0a 20 20 20 20 20 20 20 20 28 73 65 .(gethash.key.cache).........(se
56c0 74 66 20 28 67 65 74 68 61 73 68 20 6b 65 79 20 63 61 63 68 65 29 0a 20 20 20 20 20 20 20 20 20 tf.(gethash.key.cache)..........
56e0 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 73 71 6c 29 0a 20 20 20 20 20 20 20 20 20 .....(if.(stringp.sql)..........
5700 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 70 72 65 70 61 72 65 2d 2d 73 74 72 69 6e .........(emacsql-prepare--strin
5720 67 20 73 71 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d g.sql).................(emacsql-
5740 70 72 65 70 61 72 65 2d 2d 73 65 78 70 20 73 71 6c 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 prepare--sexp.sql))))))..(defun.
5760 65 6d 61 63 73 71 6c 2d 66 6f 72 6d 61 74 20 28 65 78 70 61 6e 73 69 6f 6e 20 26 72 65 73 74 20 emacsql-format.(expansion.&rest.
5780 61 72 67 73 29 0a 20 20 22 46 69 6c 6c 20 69 6e 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 20 45 args)..."Fill.in.the.variables.E
57a0 58 50 41 4e 53 49 4f 4e 20 77 69 74 68 20 41 52 47 53 2e 22 0a 20 20 28 63 6c 2d 64 65 73 74 72 XPANSION.with.ARGS."...(cl-destr
57c0 75 63 74 75 72 69 6e 67 2d 62 69 6e 64 20 28 66 6f 72 6d 61 74 20 2e 20 76 61 72 73 29 20 65 78 ucturing-bind.(format...vars).ex
57e0 70 61 6e 73 69 6f 6e 0a 20 20 20 20 28 6c 65 74 20 28 28 70 72 69 6e 74 2d 6c 65 76 65 6c 20 6e pansion.....(let.((print-level.n
5800 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 69 6e 74 2d 6c 65 6e 67 74 68 20 6e 69 6c 29 il)...........(print-length.nil)
5820 29 0a 20 20 20 20 20 20 28 61 70 70 6c 79 20 23 27 66 6f 72 6d 61 74 20 66 6f 72 6d 61 74 0a 20 ).......(apply.#'format.format..
5840 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 69 20 2e 20 6b 69 ............(cl-loop.for.(i...ki
5860 6e 64 29 20 69 6e 20 76 61 72 73 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 nd).in.vars.collect.............
5880 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 68 69 6e 67 20 28 6e 74 68 20 69 20 61 72 ..........(let.((thing.(nth.i.ar
58a0 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 gs))).........................(c
58c0 6c 2d 63 61 73 65 20 6b 69 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l-case.kind.....................
58e0 20 20 20 20 20 20 28 3a 69 64 65 6e 74 69 66 69 65 72 20 28 65 6d 61 63 73 71 6c 2d 65 73 63 61 ......(:identifier.(emacsql-esca
5900 70 65 2d 69 64 65 6e 74 69 66 69 65 72 20 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 pe-identifier.thing))...........
5920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 73 63 61 6c 61 72 20 28 65 6d 61 63 73 71 ................(:scalar.(emacsq
5940 6c 2d 65 73 63 61 70 65 2d 73 63 61 6c 61 72 20 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 l-escape-scalar.thing)).........
5960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 76 65 63 74 6f 72 20 28 65 6d 61 63 ..................(:vector.(emac
5980 73 71 6c 2d 65 73 63 61 70 65 2d 76 65 63 74 6f 72 20 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 sql-escape-vector.thing)).......
59a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 72 61 77 20 28 65 6d 61 63 73 ....................(:raw.(emacs
59c0 71 6c 2d 65 73 63 61 70 65 2d 72 61 77 20 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 ql-escape-raw.thing))...........
59e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 73 63 68 65 6d 61 20 28 65 6d 61 63 73 71 ................(:schema.(emacsq
5a00 6c 2d 70 72 65 70 61 72 65 2d 73 63 68 65 6d 61 20 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 l-prepare-schema.thing))........
5a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 74 68 65 72 77 69 73 65 0a 20 20 ...................(otherwise...
5a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 .........................(emacsq
5a60 6c 2d 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20 76 61 72 20 74 79 70 65 20 25 53 22 20 6b 69 l-error."Invalid.var.type.%S".ki
5a80 6e 64 29 29 29 29 29 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 6d 61 63 73 71 6c 2d 63 nd)))))))))..(provide.'emacsql-c
5aa0 6f 6d 70 69 6c 65 72 29 0a 0a 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 63 6f 6d 70 69 6c 65 72 2e 65 ompiler)..;;;.emacsql-compiler.e
5ac0 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 l.ends.here.....................
5ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c00 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 emacsql-4.3.1/emacsql-sqlite-mod
5c20 75 6c 65 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ule.el..........................
5c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
5c80 30 30 30 36 37 31 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 36 33 34 31 00 20 30 00 00 00 0006711.00000000000.016341..0...
5ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
5d20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
5d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5e00 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 2e 65 6c 20 2d 2d 2d ;;;.emacsql-sqlite-module.el.---
5e20 20 45 6d 61 63 53 51 4c 20 62 61 63 6b 2d 65 6e 64 20 66 6f 72 20 53 51 4c 69 74 65 20 75 73 69 .EmacSQL.back-end.for.SQLite.usi
5e40 6e 67 20 61 20 6d 6f 64 75 6c 65 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 ng.a.module..-*-.lexical-binding
5e60 3a 74 20 2d 2a 2d 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 66 72 65 65 20 61 6e 64 20 75 6e 65 6e :t.-*-..;;.This.is.free.and.unen
5e80 63 75 6d 62 65 72 65 64 20 73 6f 66 74 77 61 72 65 20 72 65 6c 65 61 73 65 64 20 69 6e 74 6f 20 cumbered.software.released.into.
5ea0 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4a the.public.domain...;;.Author:.J
5ec0 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 20 3c 65 6d 61 63 73 2e 65 6d 61 63 73 71 6c 40 6a 6f onas.Bernoulli.<emacs.emacsql@jo
5ee0 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e 64 65 76 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 nas.bernoulli.dev>.;;.Maintainer
5f00 3a 20 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 20 3c 65 6d 61 63 73 2e 65 6d 61 63 73 71 6c :.Jonas.Bernoulli.<emacs.emacsql
5f20 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e 64 65 76 3e 0a 0a 3b 3b 20 53 50 44 58 2d 4c @jonas.bernoulli.dev>..;;.SPDX-L
5f40 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 55 6e 6c 69 63 65 6e 73 65 0a 0a 3b 3b icense-Identifier:.Unlicense..;;
5f60 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 6c 69 62 72 61 72 79 20 70 ;.Commentary:..;;.This.library.p
5f80 72 6f 76 69 64 65 73 20 61 6e 20 45 6d 61 63 53 51 4c 20 62 61 63 6b 2d 65 6e 64 20 66 6f 72 20 rovides.an.EmacSQL.back-end.for.
5fa0 53 51 4c 69 74 65 2c 20 77 68 69 63 68 20 75 73 65 73 0a 3b 3b 20 74 68 65 20 45 6d 61 63 73 20 SQLite,.which.uses.;;.the.Emacs.
5fc0 6d 6f 64 75 6c 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 60 73 71 6c 69 74 65 33 27 module.provided.by.the.`sqlite3'
5fe0 20 70 61 63 6b 61 67 65 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 .package...;;;.Code:..(require.'
6000 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 29 0a 0a 28 72 65 71 75 69 72 65 20 27 73 71 6c 69 74 emacsql-sqlite)..(require.'sqlit
6020 65 33 20 6e 69 6c 20 74 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 73 71 6c 69 e3.nil.t).(declare-function.sqli
6040 74 65 33 2d 6f 70 65 6e 20 22 65 78 74 3a 73 71 6c 69 74 65 33 2d 61 70 69 22 29 0a 28 64 65 63 te3-open."ext:sqlite3-api").(dec
6060 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 73 71 6c 69 74 65 33 2d 65 78 65 63 20 22 65 78 74 3a lare-function.sqlite3-exec."ext:
6080 73 71 6c 69 74 65 33 2d 61 70 69 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 sqlite3-api").(declare-function.
60a0 73 71 6c 69 74 65 33 2d 63 6c 6f 73 65 20 22 65 78 74 3a 73 71 6c 69 74 65 33 2d 61 70 69 22 29 sqlite3-close."ext:sqlite3-api")
60c0 0a 28 64 65 66 76 61 72 20 73 71 6c 69 74 65 2d 6f 70 65 6e 2d 72 65 61 64 77 72 69 74 65 29 0a .(defvar.sqlite-open-readwrite).
60e0 28 64 65 66 76 61 72 20 73 71 6c 69 74 65 2d 6f 70 65 6e 2d 63 72 65 61 74 65 29 0a 0a 28 65 6d (defvar.sqlite-open-create)..(em
6100 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 2d 72 65 73 65 72 76 65 64 20 65 6d 61 63 73 71 6c 2d acsql-register-reserved.emacsql-
6120 73 71 6c 69 74 65 2d 72 65 73 65 72 76 65 64 29 0a 0a 28 64 65 66 63 6c 61 73 73 20 65 6d 61 63 sqlite-reserved)..(defclass.emac
6140 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 65 6d sql-sqlite-module-connection.(em
6160 61 63 73 71 6c 2d 2d 73 71 6c 69 74 65 2d 62 61 73 65 29 20 28 29 0a 20 20 22 41 20 63 6f 6e 6e acsql--sqlite-base).()..."A.conn
6180 65 63 74 69 6f 6e 20 74 6f 20 61 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 75 73 69 6e ection.to.a.SQLite.database.usin
61a0 67 20 61 20 6d 6f 64 75 6c 65 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 69 6e 69 g.a.module.")..(cl-defmethod.ini
61c0 74 69 61 6c 69 7a 65 2d 69 6e 73 74 61 6e 63 65 20 3a 61 66 74 65 72 0a 20 20 28 28 63 6f 6e 6e tialize-instance.:after...((conn
61e0 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 2d 63 6f 6e ection.emacsql-sqlite-module-con
6200 6e 65 63 74 69 6f 6e 29 20 26 72 65 73 74 20 5f 29 0a 20 20 28 72 65 71 75 69 72 65 20 28 71 75 nection).&rest._)...(require.(qu
6220 6f 74 65 20 73 71 6c 69 74 65 33 29 29 0a 20 20 28 6f 73 65 74 20 63 6f 6e 6e 65 63 74 69 6f 6e ote.sqlite3))...(oset.connection
6240 20 68 61 6e 64 6c 65 0a 20 20 20 20 20 20 20 20 28 73 71 6c 69 74 65 33 2d 6f 70 65 6e 20 28 6f .handle.........(sqlite3-open.(o
6260 72 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 69 6c 65 29 20 22 3a 6d 65 6d 6f 72 r.(oref.connection.file).":memor
6280 79 3a 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 71 6c 69 74 y:").......................sqlit
62a0 65 2d 6f 70 65 6e 2d 72 65 61 64 77 72 69 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e-open-readwrite................
62c0 20 20 20 20 20 20 20 73 71 6c 69 74 65 2d 6f 70 65 6e 2d 63 72 65 61 74 65 29 29 0a 20 20 28 65 .......sqlite-open-create))...(e
62e0 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 73 65 74 2d 62 75 73 79 2d 74 69 6d 65 6f 75 74 20 63 macsql-sqlite-set-busy-timeout.c
6300 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 28 65 6d 61 63 73 71 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e onnection)...(emacsql.connection
6320 20 5b 3a 70 72 61 67 6d 61 20 28 3d 20 66 6f 72 65 69 67 6e 2d 6b 65 79 73 20 6f 6e 29 5d 29 0a .[:pragma.(=.foreign-keys.on)]).
6340 20 20 28 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 ..(emacsql-register.connection))
6360 0a 0a 28 63 6c 2d 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c ..(cl-defun.emacsql-sqlite-modul
6380 65 20 28 66 69 6c 65 20 26 6b 65 79 20 64 65 62 75 67 29 0a 20 20 22 4f 70 65 6e 20 61 20 63 6f e.(file.&key.debug)..."Open.a.co
63a0 6e 6e 65 63 74 65 64 20 74 6f 20 64 61 74 61 62 61 73 65 20 73 74 6f 72 65 64 20 69 6e 20 46 49 nnected.to.database.stored.in.FI
63c0 4c 45 2e 0a 49 66 20 46 49 4c 45 20 69 73 20 6e 69 6c 20 75 73 65 20 61 6e 20 69 6e 2d 6d 65 6d LE..If.FILE.is.nil.use.an.in-mem
63e0 6f 72 79 20 64 61 74 61 62 61 73 65 2e 0a 0a 3a 64 65 62 75 67 20 4c 4f 47 20 2d 2d 20 57 68 65 ory.database...:debug.LOG.--.Whe
6400 6e 20 6e 6f 6e 2d 6e 69 6c 2c 20 6c 6f 67 20 61 6c 6c 20 53 51 4c 69 74 65 20 63 6f 6d 6d 61 6e n.non-nil,.log.all.SQLite.comman
6420 64 73 20 74 6f 20 61 20 6c 6f 67 0a 62 75 66 66 65 72 2e 20 20 54 68 69 73 20 69 73 20 66 6f 72 ds.to.a.log.buffer...This.is.for
6440 20 64 65 62 75 67 67 69 6e 67 20 70 75 72 70 6f 73 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 63 .debugging.purposes."...(let.((c
6460 6f 6e 6e 65 63 74 69 6f 6e 20 28 6d 61 6b 65 2d 69 6e 73 74 61 6e 63 65 20 23 27 65 6d 61 63 73 onnection.(make-instance.#'emacs
6480 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 2d 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 ql-sqlite-module-connection.....
64a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a ...............................:
64c0 66 69 6c 65 20 66 69 6c 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 64 65 62 75 67 0a 20 20 20 file.file))).....(when.debug....
64e0 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 6e 61 62 6c 65 2d 64 65 62 75 67 67 69 6e 67 20 63 6f 6e ...(emacsql-enable-debugging.con
6500 6e 65 63 74 69 6f 6e 29 29 0a 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 0a 28 63 6c 2d nection)).....connection))..(cl-
6520 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 6c 69 76 65 2d 70 20 28 28 63 6f 6e 6e 65 defmethod.emacsql-live-p.((conne
6540 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 2d 63 6f 6e 6e ction.emacsql-sqlite-module-conn
6560 65 63 74 69 6f 6e 29 29 0a 20 20 28 61 6e 64 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e ection))...(and.(oref.connection
6580 20 68 61 6e 64 6c 65 29 20 74 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 .handle).t))..(cl-defmethod.emac
65a0 73 71 6c 2d 63 6c 6f 73 65 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 73 sql-close.((connection.emacsql-s
65c0 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 28 73 71 6c qlite-module-connection))...(sql
65e0 69 74 65 33 2d 63 6c 6f 73 65 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 ite3-close.(oref.connection.hand
6600 6c 65 29 29 0a 20 20 28 6f 73 65 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20 6e le))...(oset.connection.handle.n
6620 69 6c 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 73 65 6e 64 il))..(cl-defmethod.emacsql-send
6640 2d 6d 65 73 73 61 67 65 0a 20 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d -message...((connection.emacsql-
6660 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 6d 65 73 73 61 67 sqlite-module-connection).messag
6680 65 29 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 0a 20 20 20 20 20 20 28 e)...(condition-case.err.......(
66a0 6c 65 74 20 28 28 69 6e 63 6c 75 64 65 2d 68 65 61 64 65 72 20 65 6d 61 63 73 71 6c 2d 69 6e 63 let.((include-header.emacsql-inc
66c0 6c 75 64 65 2d 68 65 61 64 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 6f 77 73 20 28 lude-header).............(rows.(
66e0 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 71 6c 69 74 65 33 2d 65 78 65 63 20 28 6f 72 65 66 20 ))).........(sqlite3-exec.(oref.
6700 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 connection.handle)..............
6720 20 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........message................
6740 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 20 72 6f 77 20 68 65 61 64 65 72 29 0a 20 20 .......(lambda.(_.row.header)...
6760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 69 6e 63 6c ......................(when.incl
6780 75 64 65 2d 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ude-header......................
67a0 20 20 20 20 20 28 70 75 73 68 20 68 65 61 64 65 72 20 72 6f 77 73 29 0a 20 20 20 20 20 20 20 20 .....(push.header.rows).........
67c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 6e 63 6c 75 64 65 2d ..................(setq.include-
67e0 68 65 61 64 65 72 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 header.nil))....................
6800 20 20 20 20 20 28 70 75 73 68 20 28 6d 61 70 63 61 6e 20 28 6c 61 6d 62 64 61 20 28 63 6f 6c 29 .....(push.(mapcan.(lambda.(col)
6820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6840 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........(cond..................
6860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 75 6c 6c 20 63 ........................((null.c
6880 6f 6c 29 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ol).....(list.nil)).............
68a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 .............................((e
68c0 71 75 61 6c 20 63 6f 6c 20 22 22 29 20 28 6c 69 73 74 20 22 22 29 29 0a 20 20 20 20 20 20 20 20 qual.col."").(list."")).........
68e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6900 20 28 28 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 72 65 61 64 2d 63 6f 6c 75 6d 6e 20 63 6f .((emacsql-sqlite-read-column.co
6920 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l))))...........................
6940 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............row)................
6960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 ...............rows))).........(
6980 6e 72 65 76 65 72 73 65 20 72 6f 77 73 29 29 0a 20 20 20 20 28 28 64 62 2d 65 72 72 6f 72 20 73 nreverse.rows)).....((db-error.s
69a0 71 6c 2d 65 72 72 6f 72 29 0a 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c ql-error)......(pcase-let*.((`(,
69c0 5f 20 2c 65 72 72 6d 73 67 20 2c 65 72 72 63 6f 64 65 29 20 65 72 72 29 0a 20 20 20 20 20 20 20 _.,errmsg.,errcode).err)........
69e0 20 20 20 20 20 20 20 20 20 20 20 28 60 28 2c 5f 20 2c 5f 20 2c 73 69 67 6e 61 6c 20 2c 65 72 72 ...........(`(,_.,_.,signal.,err
6a00 73 74 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73 73 71 20 65 72 str)....................(assq.er
6a20 72 63 6f 64 65 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 65 72 72 6f 72 2d 63 6f 64 65 73 rcode.emacsql-sqlite-error-codes
6a40 29 29 29 0a 20 20 20 20 20 20 20 28 73 69 67 6e 61 6c 20 28 6f 72 20 73 69 67 6e 61 6c 20 27 65 )))........(signal.(or.signal.'e
6a60 6d 61 63 73 71 6c 2d 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 macsql-error)................(li
6a80 73 74 20 65 72 72 6d 73 67 20 65 72 72 63 6f 64 65 20 6e 69 6c 20 65 72 72 73 74 72 29 29 29 29 st.errmsg.errcode.nil.errstr))))
6aa0 0a 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 28 73 69 67 6e 61 6c 20 27 65 6d 61 63 73 71 .....(error......(signal.'emacsq
6ac0 6c 2d 65 72 72 6f 72 20 28 63 64 72 20 65 72 72 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 l-error.(cdr.err)))))..(cl-defme
6ae0 74 68 6f 64 20 65 6d 61 63 73 71 6c 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 thod.emacsql.((connection.emacsq
6b00 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 73 71 6c 20 l-sqlite-module-connection).sql.
6b20 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 28 65 6d 61 63 73 71 6c 2d 73 65 6e 64 2d 6d 65 73 73 &rest.args)...(emacsql-send-mess
6b40 61 67 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 61 70 70 6c 79 20 23 27 65 6d 61 63 73 71 6c 2d age.connection.(apply.#'emacsql-
6b60 63 6f 6d 70 69 6c 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 71 6c 20 61 72 67 73 29 29 29 0a 0a compile.connection.sql.args)))..
6b80 28 70 72 6f 76 69 64 65 20 27 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 29 (provide.'emacsql-sqlite-module)
6ba0 0a 0a 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 2e 65 6c 20 65 ..;;;.emacsql-sqlite-module.el.e
6bc0 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 nds.here........................
6be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c00 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2e 65 6c 00 emacsql-4.3.1/emacsql-sqlite.el.
6c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
6c80 30 30 33 31 35 37 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 30 36 30 00 20 30 00 00 00 0031571.00000000000.015060..0...
6ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
6d20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
6d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e00 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2e 65 6c 20 2d 2d 2d 20 43 6f 64 65 20 75 ;;;.emacsql-sqlite.el.---.Code.u
6e20 73 65 64 20 62 79 20 62 6f 74 68 20 53 51 4c 69 74 65 20 62 61 63 6b 2d 65 6e 64 73 20 20 2d 2a sed.by.both.SQLite.back-ends..-*
6e40 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 74 20 2d 2a 2d 0a 0a 3b 3b 20 54 68 69 73 -.lexical-binding:t.-*-..;;.This
6e60 20 69 73 20 66 72 65 65 20 61 6e 64 20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f 66 74 77 61 .is.free.and.unencumbered.softwa
6e80 72 65 20 72 65 6c 65 61 73 65 64 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 re.released.into.the.public.doma
6ea0 69 6e 2e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 20 in...;;.Author:.Jonas.Bernoulli.
6ec0 3c 65 6d 61 63 73 2e 65 6d 61 63 73 71 6c 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e 64 <emacs.emacsql@jonas.bernoulli.d
6ee0 65 76 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 3a 20 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c ev>.;;.Maintainer:.Jonas.Bernoul
6f00 6c 69 20 3c 65 6d 61 63 73 2e 65 6d 61 63 73 71 6c 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c li.<emacs.emacsql@jonas.bernoull
6f20 69 2e 64 65 76 3e 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 i.dev>..;;.SPDX-License-Identifi
6f40 65 72 3a 20 55 6e 6c 69 63 65 6e 73 65 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a er:.Unlicense..;;;.Commentary:..
6f60 3b 3b 20 54 68 69 73 20 6c 69 62 72 61 72 79 20 63 6f 6e 74 61 69 6e 73 20 63 6f 64 65 20 74 68 ;;.This.library.contains.code.th
6f80 61 74 20 69 73 20 75 73 65 64 20 62 79 20 62 6f 74 68 20 53 51 4c 69 74 65 20 62 61 63 6b 2d 65 at.is.used.by.both.SQLite.back-e
6fa0 6e 64 73 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 65 6d 61 63 73 nds...;;;.Code:..(require.'emacs
6fc0 71 6c 29 0a 0a 3b 3b 3b 20 42 61 73 65 20 63 6c 61 73 73 0a 0a 28 64 65 66 63 6c 61 73 73 20 65 ql)..;;;.Base.class..(defclass.e
6fe0 6d 61 63 73 71 6c 2d 2d 73 71 6c 69 74 65 2d 62 61 73 65 20 28 65 6d 61 63 73 71 6c 2d 63 6f 6e macsql--sqlite-base.(emacsql-con
7000 6e 65 63 74 69 6f 6e 29 0a 20 20 28 28 66 69 6c 65 20 3a 69 6e 69 74 61 72 67 20 3a 66 69 6c 65 nection)...((file.:initarg.:file
7020 0a 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 66 6f 72 6d 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 ..........:initform.nil.........
7040 20 3a 74 79 70 65 20 28 6f 72 20 6e 75 6c 6c 20 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20 .:type.(or.null.string).........
7060 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 44 61 74 61 62 61 73 65 20 66 69 6c 65 20 6e .:documentation."Database.file.n
7080 61 6d 65 2e 22 29 0a 20 20 20 28 74 79 70 65 73 20 3a 61 6c 6c 6f 63 61 74 69 6f 6e 20 3a 63 6c ame.")....(types.:allocation.:cl
70a0 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 3a 72 65 61 64 65 72 20 65 6d 61 63 73 71 6c 2d 74 79 ass...........:reader.emacsql-ty
70c0 70 65 73 0a 20 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 66 6f 72 6d 20 27 28 28 69 6e 74 65 67 pes...........:initform.'((integ
70e0 65 72 20 22 49 4e 54 45 47 45 52 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er."INTEGER")...................
7100 20 20 20 20 28 66 6c 6f 61 74 20 22 52 45 41 4c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(float."REAL")..............
7120 20 20 20 20 20 20 20 20 20 28 6f 62 6a 65 63 74 20 22 54 45 58 54 22 29 0a 20 20 20 20 20 20 20 .........(object."TEXT")........
7140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 69 6c 20 6e 69 6c 29 29 29 29 0a 20 20 3a 61 ...............(nil.nil))))...:a
7160 62 73 74 72 61 63 74 20 74 29 0a 0a 3b 3b 3b 20 43 6f 6e 73 74 61 6e 74 73 0a 0a 28 64 65 66 63 bstract.t)..;;;.Constants..(defc
7180 6f 6e 73 74 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 72 65 73 65 72 76 65 64 0a 20 20 27 onst.emacsql-sqlite-reserved...'
71a0 28 20 41 42 4f 52 54 20 41 43 54 49 4f 4e 20 41 44 44 20 41 46 54 45 52 20 41 4c 4c 20 41 4c 54 (.ABORT.ACTION.ADD.AFTER.ALL.ALT
71c0 45 52 20 41 4e 41 4c 59 5a 45 20 41 4e 44 20 41 53 20 41 53 43 20 41 54 54 41 43 48 0a 20 20 20 ER.ANALYZE.AND.AS.ASC.ATTACH....
71e0 20 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 20 42 45 46 4f 52 45 20 42 45 47 49 4e 20 42 45 54 ..AUTOINCREMENT.BEFORE.BEGIN.BET
7200 57 45 45 4e 20 42 59 20 43 41 53 43 41 44 45 20 43 41 53 45 20 43 41 53 54 20 43 48 45 43 4b 0a WEEN.BY.CASCADE.CASE.CAST.CHECK.
7220 20 20 20 20 20 43 4f 4c 4c 41 54 45 20 43 4f 4c 55 4d 4e 20 43 4f 4d 4d 49 54 20 43 4f 4e 46 4c .....COLLATE.COLUMN.COMMIT.CONFL
7240 49 43 54 20 43 4f 4e 53 54 52 41 49 4e 54 20 43 52 45 41 54 45 20 43 52 4f 53 53 0a 20 20 20 20 ICT.CONSTRAINT.CREATE.CROSS.....
7260 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 20 43 55 52 52 45 .CURRENT_DATE.CURRENT_TIME.CURRE
7280 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 44 41 54 41 42 41 53 45 20 44 45 46 41 55 4c 54 0a 20 20 NT_TIMESTAMP.DATABASE.DEFAULT...
72a0 20 20 20 44 45 46 45 52 52 41 42 4c 45 20 44 45 46 45 52 52 45 44 20 44 45 4c 45 54 45 20 44 45 ...DEFERRABLE.DEFERRED.DELETE.DE
72c0 53 43 20 44 45 54 41 43 48 20 44 49 53 54 49 4e 43 54 20 44 52 4f 50 20 45 41 43 48 20 45 4c 53 SC.DETACH.DISTINCT.DROP.EACH.ELS
72e0 45 20 45 4e 44 0a 20 20 20 20 20 45 53 43 41 50 45 20 45 58 43 45 50 54 20 45 58 43 4c 55 53 49 E.END......ESCAPE.EXCEPT.EXCLUSI
7300 56 45 20 45 58 49 53 54 53 20 45 58 50 4c 41 49 4e 20 46 41 49 4c 20 46 4f 52 20 46 4f 52 45 49 VE.EXISTS.EXPLAIN.FAIL.FOR.FOREI
7320 47 4e 20 46 52 4f 4d 20 46 55 4c 4c 0a 20 20 20 20 20 47 4c 4f 42 20 47 52 4f 55 50 20 48 41 56 GN.FROM.FULL......GLOB.GROUP.HAV
7340 49 4e 47 20 49 46 20 49 47 4e 4f 52 45 20 49 4d 4d 45 44 49 41 54 45 20 49 4e 20 49 4e 44 45 58 ING.IF.IGNORE.IMMEDIATE.IN.INDEX
7360 20 49 4e 44 45 58 45 44 20 49 4e 49 54 49 41 4c 4c 59 0a 20 20 20 20 20 49 4e 4e 45 52 20 49 4e .INDEXED.INITIALLY......INNER.IN
7380 53 45 52 54 20 49 4e 53 54 45 41 44 20 49 4e 54 45 52 53 45 43 54 20 49 4e 54 4f 20 49 53 20 49 SERT.INSTEAD.INTERSECT.INTO.IS.I
73a0 53 4e 55 4c 4c 20 4a 4f 49 4e 20 4b 45 59 20 4c 45 46 54 20 4c 49 4b 45 0a 20 20 20 20 20 4c 49 SNULL.JOIN.KEY.LEFT.LIKE......LI
73c0 4d 49 54 20 4d 41 54 43 48 20 4e 41 54 55 52 41 4c 20 4e 4f 20 4e 4f 54 20 4e 4f 54 4e 55 4c 4c MIT.MATCH.NATURAL.NO.NOT.NOTNULL
73e0 20 4e 55 4c 4c 20 4f 46 20 4f 46 46 53 45 54 20 4f 4e 20 4f 52 20 4f 52 44 45 52 0a 20 20 20 20 .NULL.OF.OFFSET.ON.OR.ORDER.....
7400 20 4f 55 54 45 52 20 50 4c 41 4e 20 50 52 41 47 4d 41 20 50 52 49 4d 41 52 59 20 51 55 45 52 59 .OUTER.PLAN.PRAGMA.PRIMARY.QUERY
7420 20 52 41 49 53 45 20 52 45 43 55 52 53 49 56 45 20 52 45 46 45 52 45 4e 43 45 53 20 52 45 47 45 .RAISE.RECURSIVE.REFERENCES.REGE
7440 58 50 0a 20 20 20 20 20 52 45 49 4e 44 45 58 20 52 45 4c 45 41 53 45 20 52 45 4e 41 4d 45 20 52 XP......REINDEX.RELEASE.RENAME.R
7460 45 50 4c 41 43 45 20 52 45 53 54 52 49 43 54 20 52 49 47 48 54 20 52 4f 4c 4c 42 41 43 4b 20 52 EPLACE.RESTRICT.RIGHT.ROLLBACK.R
7480 4f 57 0a 20 20 20 20 20 53 41 56 45 50 4f 49 4e 54 20 53 45 4c 45 43 54 20 53 45 54 20 54 41 42 OW......SAVEPOINT.SELECT.SET.TAB
74a0 4c 45 20 54 45 4d 50 20 54 45 4d 50 4f 52 41 52 59 20 54 48 45 4e 20 54 4f 20 54 52 41 4e 53 41 LE.TEMP.TEMPORARY.THEN.TO.TRANSA
74c0 43 54 49 4f 4e 0a 20 20 20 20 20 54 52 49 47 47 45 52 20 55 4e 49 4f 4e 20 55 4e 49 51 55 45 20 CTION......TRIGGER.UNION.UNIQUE.
74e0 55 50 44 41 54 45 20 55 53 49 4e 47 20 56 41 43 55 55 4d 20 56 41 4c 55 45 53 20 56 49 45 57 20 UPDATE.USING.VACUUM.VALUES.VIEW.
7500 56 49 52 54 55 41 4c 20 57 48 45 4e 0a 20 20 20 20 20 57 48 45 52 45 20 57 49 54 48 20 57 49 54 VIRTUAL.WHEN......WHERE.WITH.WIT
7520 48 4f 55 54 29 0a 20 20 22 4c 69 73 74 20 6f 66 20 61 6c 6c 20 6f 66 20 53 51 4c 69 74 65 27 73 HOUT)..."List.of.all.of.SQLite's
7540 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 73 2e 0a 41 6c 73 6f 20 73 65 65 20 68 74 74 70 3a 2f .reserved.words..Also.see.http:/
7560 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 6c 61 6e 67 5f 6b 65 79 77 6f 72 64 73 2e 68 74 /www.sqlite.org/lang_keywords.ht
7580 6d 6c 2e 22 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d ml.")..(defconst.emacsql-sqlite-
75a0 65 72 72 6f 72 2d 63 6f 64 65 73 0a 20 20 27 28 28 31 20 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 error-codes...'((1..SQLITE_ERROR
75c0 20 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 20 20 20 20 20 22 53 51 4c 20 6c 6f ......emacsql-error......"SQL.lo
75e0 67 69 63 20 65 72 72 6f 72 22 29 0a 20 20 20 20 28 32 20 20 53 51 4c 49 54 45 5f 49 4e 54 45 52 gic.error").....(2..SQLITE_INTER
7600 4e 41 4c 20 20 20 65 6d 61 63 73 71 6c 2d 69 6e 74 65 72 6e 61 6c 20 20 20 6e 69 6c 29 0a 20 20 NAL...emacsql-internal...nil)...
7620 20 20 28 33 20 20 53 51 4c 49 54 45 5f 50 45 52 4d 20 20 20 20 20 20 20 65 6d 61 63 73 71 6c 2d ..(3..SQLITE_PERM.......emacsql-
7640 61 63 63 65 73 73 20 20 20 20 20 22 61 63 63 65 73 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 64 65 access....."access.permission.de
7660 6e 69 65 64 22 29 0a 20 20 20 20 28 34 20 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 20 20 20 20 nied").....(4..SQLITE_ABORT.....
7680 20 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 20 20 20 20 20 22 71 75 65 72 79 20 61 62 6f 72 74 .emacsql-error......"query.abort
76a0 65 64 22 29 0a 20 20 20 20 28 35 20 20 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20 20 20 20 20 65 ed").....(5..SQLITE_BUSY.......e
76c0 6d 61 63 73 71 6c 2d 6c 6f 63 6b 65 64 20 20 20 20 20 22 64 61 74 61 62 61 73 65 20 69 73 20 6c macsql-locked....."database.is.l
76e0 6f 63 6b 65 64 22 29 0a 20 20 20 20 28 36 20 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 20 20 ocked").....(6..SQLITE_LOCKED...
7700 20 20 65 6d 61 63 73 71 6c 2d 6c 6f 63 6b 65 64 20 20 20 20 20 22 64 61 74 61 62 61 73 65 20 74 ..emacsql-locked....."database.t
7720 61 62 6c 65 20 69 73 20 6c 6f 63 6b 65 64 22 29 0a 20 20 20 20 28 37 20 20 53 51 4c 49 54 45 5f able.is.locked").....(7..SQLITE_
7740 4e 4f 4d 45 4d 20 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 6d 65 6d 6f 72 79 20 20 20 20 20 22 6f NOMEM......emacsql-memory....."o
7760 75 74 20 6f 66 20 6d 65 6d 6f 72 79 22 29 0a 20 20 20 20 28 38 20 20 53 51 4c 49 54 45 5f 52 45 ut.of.memory").....(8..SQLITE_RE
7780 41 44 4f 4e 4c 59 20 20 20 65 6d 61 63 73 71 6c 2d 61 63 63 65 73 73 20 20 20 20 20 22 61 74 74 ADONLY...emacsql-access....."att
77a0 65 6d 70 74 20 74 6f 20 77 72 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20 64 61 74 61 62 61 73 empt.to.write.a.readonly.databas
77c0 65 22 29 0a 20 20 20 20 28 39 20 20 53 51 4c 49 54 45 5f 49 4e 54 45 52 52 55 50 54 20 20 65 6d e").....(9..SQLITE_INTERRUPT..em
77e0 61 63 73 71 6c 2d 65 72 72 6f 72 20 20 20 20 20 20 22 69 6e 74 65 72 72 75 70 74 65 64 22 29 0a acsql-error......"interrupted").
7800 20 20 20 20 28 31 30 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 20 20 20 20 20 65 6d 61 63 73 71 ....(10.SQLITE_IOERR......emacsq
7820 6c 2d 61 63 63 65 73 73 20 20 20 20 20 22 64 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72 22 29 0a 20 l-access....."disk.I/O.error")..
7840 20 20 20 28 31 31 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 20 20 20 65 6d 61 63 73 71 6c ...(11.SQLITE_CORRUPT....emacsql
7860 2d 63 6f 72 72 75 70 74 69 6f 6e 20 22 64 61 74 61 62 61 73 65 20 64 69 73 6b 20 69 6d 61 67 65 -corruption."database.disk.image
7880 20 69 73 20 6d 61 6c 66 6f 72 6d 65 64 22 29 0a 20 20 20 20 28 31 32 20 53 51 4c 49 54 45 5f 4e .is.malformed").....(12.SQLITE_N
78a0 4f 54 46 4f 55 4e 44 20 20 20 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 20 20 20 20 20 22 75 6e OTFOUND...emacsql-error......"un
78c0 6b 6e 6f 77 6e 20 6f 70 65 72 61 74 69 6f 6e 22 29 0a 20 20 20 20 28 31 33 20 53 51 4c 49 54 45 known.operation").....(13.SQLITE
78e0 5f 46 55 4c 4c 20 20 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 61 63 63 65 73 73 20 20 20 20 20 22 _FULL.......emacsql-access....."
7900 64 61 74 61 62 61 73 65 20 6f 72 20 64 69 73 6b 20 69 73 20 66 75 6c 6c 22 29 0a 20 20 20 20 28 database.or.disk.is.full").....(
7920 31 34 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 20 20 65 6d 61 63 73 71 6c 2d 61 63 63 14.SQLITE_CANTOPEN...emacsql-acc
7940 65 73 73 20 20 20 20 20 22 75 6e 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 ess....."unable.to.open.database
7960 20 66 69 6c 65 22 29 0a 20 20 20 20 28 31 35 20 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43 4f 4c 20 .file").....(15.SQLITE_PROTOCOL.
7980 20 20 65 6d 61 63 73 71 6c 2d 61 63 63 65 73 73 20 20 20 20 20 22 6c 6f 63 6b 69 6e 67 20 70 72 ..emacsql-access....."locking.pr
79a0 6f 74 6f 63 6f 6c 22 29 0a 20 20 20 20 28 31 36 20 53 51 4c 49 54 45 5f 45 4d 50 54 59 20 20 20 otocol").....(16.SQLITE_EMPTY...
79c0 20 20 20 65 6d 61 63 73 71 6c 2d 63 6f 72 72 75 70 74 69 6f 6e 20 6e 69 6c 29 0a 20 20 20 20 28 ...emacsql-corruption.nil).....(
79e0 31 37 20 53 51 4c 49 54 45 5f 53 43 48 45 4d 41 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 65 72 72 17.SQLITE_SCHEMA.....emacsql-err
7a00 6f 72 20 20 20 20 20 20 22 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 68 61 73 20 63 68 61 or......"database.schema.has.cha
7a20 6e 67 65 64 22 29 0a 20 20 20 20 28 31 38 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47 20 20 20 20 nged").....(18.SQLITE_TOOBIG....
7a40 20 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 20 20 20 20 20 22 73 74 72 69 6e 67 20 6f 72 20 62 .emacsql-error......"string.or.b
7a60 6c 6f 62 20 74 6f 6f 20 62 69 67 22 29 0a 20 20 20 20 28 31 39 20 53 51 4c 49 54 45 5f 43 4f 4e lob.too.big").....(19.SQLITE_CON
7a80 53 54 52 41 49 4e 54 20 65 6d 61 63 73 71 6c 2d 63 6f 6e 73 74 72 61 69 6e 74 20 22 63 6f 6e 73 STRAINT.emacsql-constraint."cons
7aa0 74 72 61 69 6e 74 20 66 61 69 6c 65 64 22 29 0a 20 20 20 20 28 32 30 20 53 51 4c 49 54 45 5f 4d traint.failed").....(20.SQLITE_M
7ac0 49 53 4d 41 54 43 48 20 20 20 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 20 20 20 20 20 22 64 61 ISMATCH...emacsql-error......"da
7ae0 74 61 74 79 70 65 20 6d 69 73 6d 61 74 63 68 22 29 0a 20 20 20 20 28 32 31 20 53 51 4c 49 54 45 tatype.mismatch").....(21.SQLITE
7b00 5f 4d 49 53 55 53 45 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 20 20 20 20 20 22 _MISUSE.....emacsql-error......"
7b20 62 61 64 20 70 61 72 61 6d 65 74 65 72 20 6f 72 20 6f 74 68 65 72 20 41 50 49 20 6d 69 73 75 73 bad.parameter.or.other.API.misus
7b40 65 22 29 0a 20 20 20 20 28 32 32 20 53 51 4c 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20 65 6d e").....(22.SQLITE_NOLFS......em
7b60 61 63 73 71 6c 2d 65 72 72 6f 72 20 20 20 20 20 20 22 6c 61 72 67 65 20 66 69 6c 65 20 73 75 70 acsql-error......"large.file.sup
7b80 70 6f 72 74 20 69 73 20 64 69 73 61 62 6c 65 64 22 29 0a 20 20 20 20 28 32 33 20 53 51 4c 49 54 port.is.disabled").....(23.SQLIT
7ba0 45 5f 41 55 54 48 20 20 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 61 63 63 65 73 73 20 20 20 20 20 E_AUTH.......emacsql-access.....
7bc0 22 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 64 65 6e 69 65 64 22 29 0a 20 20 20 20 28 32 34 20 "authorization.denied").....(24.
7be0 53 51 4c 49 54 45 5f 46 4f 52 4d 41 54 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 63 6f 72 72 75 70 SQLITE_FORMAT.....emacsql-corrup
7c00 74 69 6f 6e 20 6e 69 6c 29 0a 20 20 20 20 28 32 35 20 53 51 4c 49 54 45 5f 52 41 4e 47 45 20 20 tion.nil).....(25.SQLITE_RANGE..
7c20 20 20 20 20 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 20 20 20 20 20 22 63 6f 6c 75 6d 6e 20 69 ....emacsql-error......"column.i
7c40 6e 64 65 78 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 22 29 0a 20 20 20 20 28 32 36 20 53 51 4c 49 ndex.out.of.range").....(26.SQLI
7c60 54 45 5f 4e 4f 54 41 44 42 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 63 6f 72 72 75 70 74 69 6f 6e TE_NOTADB.....emacsql-corruption
7c80 20 22 66 69 6c 65 20 69 73 20 6e 6f 74 20 61 20 64 61 74 61 62 61 73 65 22 29 0a 20 20 20 20 28 ."file.is.not.a.database").....(
7ca0 32 37 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 77 61 72 27.SQLITE_NOTICE.....emacsql-war
7cc0 6e 69 6e 67 20 20 20 20 22 6e 6f 74 69 66 69 63 61 74 69 6f 6e 20 6d 65 73 73 61 67 65 22 29 0a ning...."notification.message").
7ce0 20 20 20 20 28 32 38 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47 20 20 20 20 65 6d 61 63 73 71 ....(28.SQLITE_WARNING....emacsq
7d00 6c 2d 77 61 72 6e 69 6e 67 20 20 20 20 22 77 61 72 6e 69 6e 67 20 6d 65 73 73 61 67 65 22 29 29 l-warning...."warning.message"))
7d20 0a 20 20 22 41 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 53 51 4c 69 74 65 20 65 72 72 6f 72 20 63 ..."Alist.mapping.SQLite.error.c
7d40 6f 64 65 73 20 74 6f 20 45 6d 61 63 53 51 4c 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a 45 6c 65 6d odes.to.EmacSQL.conditions..Elem
7d60 65 6e 74 73 20 68 61 76 65 20 74 68 65 20 66 6f 72 6d 20 28 45 52 52 43 4f 44 45 20 53 59 4d 42 ents.have.the.form.(ERRCODE.SYMB
7d80 4f 4c 49 43 2d 4e 41 4d 45 20 45 4d 41 43 53 51 4c 2d 45 52 52 4f 52 0a 45 52 52 53 54 52 29 2e OLIC-NAME.EMACSQL-ERROR.ERRSTR).
7da0 20 20 41 6c 73 6f 20 73 65 65 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 ..Also.see.https://www.sqlite.or
7dc0 67 2f 72 65 73 63 6f 64 65 2e 68 74 6d 6c 2e 22 29 0a 0a 3b 3b 3b 20 56 61 72 69 61 62 6c 65 73 g/rescode.html.")..;;;.Variables
7de0 0a 0a 28 64 65 66 76 61 72 20 65 6d 61 63 73 71 6c 2d 69 6e 63 6c 75 64 65 2d 68 65 61 64 65 72 ..(defvar.emacsql-include-header
7e00 20 6e 69 6c 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f 20 69 6e 63 6c 75 64 65 20 6e 61 6d 65 73 .nil..."Whether.to.include.names
7e20 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 61 73 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 72 6f 77 .of.columns.as.an.additional.row
7e40 2e 0a 4e 65 76 65 72 20 65 6e 61 62 6c 65 20 74 68 69 73 20 67 6c 6f 62 61 6c 6c 79 2c 20 6f 6e ..Never.enable.this.globally,.on
7e60 6c 79 20 6c 65 74 2d 62 69 6e 64 20 69 74 20 61 72 6f 75 6e 64 20 63 61 6c 6c 73 20 74 6f 20 60 ly.let-bind.it.around.calls.to.`
7e80 65 6d 61 63 73 71 6c 27 2e 0a 43 75 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 emacsql'..Currently.only.support
7ea0 65 64 20 62 79 20 60 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 6e 2d 63 6f ed.by.`emacsql-sqlite-builtin-co
7ec0 6e 6e 65 63 74 69 6f 6e 27 20 61 6e 64 0a 60 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f nnection'.and.`emacsql-sqlite-mo
7ee0 64 75 6c 65 2d 63 6f 6e 6e 65 63 74 69 6f 6e 27 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 65 6d 61 dule-connection'.")..(defvar.ema
7f00 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 73 79 2d 74 69 6d 65 6f 75 74 20 32 30 0a 20 20 22 53 csql-sqlite-busy-timeout.20..."S
7f20 65 63 6f 6e 64 73 20 74 6f 20 77 61 69 74 20 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f 20 61 63 econds.to.wait.when.trying.to.ac
7f40 63 65 73 73 20 61 20 74 61 62 6c 65 20 62 6c 6f 63 6b 65 64 20 62 79 20 61 6e 6f 74 68 65 72 20 cess.a.table.blocked.by.another.
7f60 70 72 6f 63 65 73 73 2e 0a 53 65 65 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c 69 74 65 2e process..See.https://www.sqlite.
7f80 6f 72 67 2f 63 33 72 65 66 2f 62 75 73 79 5f 74 69 6d 65 6f 75 74 2e 68 74 6d 6c 2e 22 29 0a 0a org/c3ref/busy_timeout.html.")..
7fa0 3b 3b 3b 20 55 74 69 6c 69 74 69 65 73 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 73 71 ;;;.Utilities..(defun.emacsql-sq
7fc0 6c 69 74 65 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 76 61 72 69 61 62 6c 65 20 66 69 6c 65 20 26 lite-connection.(variable.file.&
7fe0 6f 70 74 69 6f 6e 61 6c 20 73 65 74 75 70 20 75 73 65 2d 6d 6f 64 75 6c 65 29 0a 20 20 22 52 65 optional.setup.use-module)..."Re
8000 74 75 72 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 6f 72 65 64 20 69 6e 20 56 41 turn.the.connection.stored.in.VA
8020 52 49 41 42 4c 45 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 6e 20 46 49 4c 45 2e 0a RIABLE.to.the.database.in.FILE..
8040 0a 49 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 56 41 52 49 41 42 4c 45 20 69 73 20 61 20 6c .If.the.value.of.VARIABLE.is.a.l
8060 69 76 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 72 65 74 75 72 6e 20 ive.database.connection,.return.
8080 74 68 61 74 2e 0a 0a 4f 74 68 65 72 77 69 73 65 20 6f 70 65 6e 20 61 20 6e 65 77 20 63 6f 6e 6e that...Otherwise.open.a.new.conn
80a0 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 6e 20 46 49 4c 45 20 61 ection.to.the.database.in.FILE.a
80c0 6e 64 20 73 74 6f 72 65 20 74 68 65 0a 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 20 56 41 52 49 41 nd.store.the.connection.in.VARIA
80e0 42 4c 45 2c 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e 69 6e 67 20 69 74 2e 20 20 49 66 20 46 49 BLE,.before.returning.it...If.FI
8100 4c 45 20 69 73 20 6e 69 6c 2c 20 75 73 65 20 61 6e 0a 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 LE.is.nil,.use.an.in-memory.data
8120 62 61 73 65 2e 20 20 41 6c 77 61 79 73 20 65 6e 61 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f 72 base...Always.enable.support.for
8140 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 73 2e 0a 49 66 20 6f 70 74 69 .foreign.key.constrains..If.opti
8160 6f 6e 61 6c 20 53 45 54 55 50 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 69 74 20 6d 75 73 74 20 62 onal.SETUP.is.non-nil,.it.must.b
8180 65 20 61 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68 20 74 61 6b 65 73 20 74 68 65 0a 63 6f e.a.function,.which.takes.the.co
81a0 6e 6e 65 63 74 69 6f 6e 20 61 73 20 6f 6e 6c 79 20 61 72 67 75 6d 65 6e 74 2e 20 20 54 68 69 73 nnection.as.only.argument...This
81c0 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 69 6e 69 74 69 61 6c .function.can.be.used.to.initial
81e0 69 7a 65 0a 74 61 62 6c 65 73 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2e 0a 0a 49 66 20 6f 70 74 ize.tables,.for.example...If.opt
8200 69 6f 6e 61 6c 20 55 53 45 2d 4d 4f 44 55 4c 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 ional.USE-MODULE.is.non-nil,.the
8220 6e 20 75 73 65 20 74 68 65 20 65 78 74 65 72 6e 61 6c 20 6d 6f 64 75 6c 65 20 65 76 65 6e 0a 77 n.use.the.external.module.even.w
8240 68 65 6e 20 45 6d 61 63 73 20 77 61 73 20 62 75 69 6c 74 20 77 69 74 68 20 53 51 4c 69 74 65 20 hen.Emacs.was.built.with.SQLite.
8260 73 75 70 70 6f 72 74 2e 20 20 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 74 support...This.is.intended.for.t
8280 65 73 74 69 6e 67 0a 70 75 72 70 6f 73 65 73 2e 22 0a 20 20 28 6f 72 20 28 6c 65 74 20 28 28 63 esting.purposes."...(or.(let.((c
82a0 6f 6e 6e 65 63 74 69 6f 6e 20 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 76 61 72 69 61 62 6c 65 onnection.(symbol-value.variable
82c0 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 6e 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 65 6d 61 ))).........(and.connection.(ema
82e0 63 73 71 6c 2d 6c 69 76 65 2d 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 63 6f 6e 6e 65 63 74 69 csql-live-p.connection).connecti
8300 6f 6e 29 29 0a 20 20 20 20 20 20 28 73 65 74 20 76 61 72 69 61 62 6c 65 20 28 65 6d 61 63 73 71 on)).......(set.variable.(emacsq
8320 6c 2d 73 71 6c 69 74 65 2d 6f 70 65 6e 20 66 69 6c 65 20 6e 69 6c 20 73 65 74 75 70 20 75 73 65 l-sqlite-open.file.nil.setup.use
8340 2d 6d 6f 64 75 6c 65 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 -module))))..(defun.emacsql-sqli
8360 74 65 2d 6f 70 65 6e 20 28 66 69 6c 65 20 26 6f 70 74 69 6f 6e 61 6c 20 64 65 62 75 67 20 73 65 te-open.(file.&optional.debug.se
8380 74 75 70 20 75 73 65 2d 6d 6f 64 75 6c 65 29 0a 20 20 22 4f 70 65 6e 20 61 20 63 6f 6e 6e 65 63 tup.use-module)..."Open.a.connec
83a0 74 69 6f 6e 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 74 6f 72 65 64 20 69 6e 20 46 tion.to.the.database.stored.in.F
83c0 49 4c 45 20 75 73 69 6e 67 20 61 6e 20 53 51 4c 69 74 65 20 62 61 63 6b 2d 65 6e 64 2e 0a 0a 41 ILE.using.an.SQLite.back-end...A
83e0 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75 73 65 20 74 68 65 20 62 65 73 74 20 61 76 61 69 6c 61 utomatically.use.the.best.availa
8400 62 6c 65 20 62 61 63 6b 2d 65 6e 64 2c 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 0a 60 65 6d ble.back-end,.as.returned.by.`em
8420 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 64 65 66 61 75 6c 74 2d 63 6f 6e 6e 65 63 74 69 6f 6e 27 acsql-sqlite-default-connection'
8440 2e 0a 0a 49 66 20 46 49 4c 45 20 69 73 20 6e 69 6c 2c 20 75 73 65 20 61 6e 20 69 6e 2d 6d 65 6d ...If.FILE.is.nil,.use.an.in-mem
8460 6f 72 79 20 64 61 74 61 62 61 73 65 2e 20 20 49 66 20 6f 70 74 69 6f 6e 61 6c 20 44 45 42 55 47 ory.database...If.optional.DEBUG
8480 20 69 73 0a 6e 6f 6e 2d 6e 69 6c 2c 20 6c 6f 67 20 61 6c 6c 20 53 51 4c 69 74 65 20 63 6f 6d 6d .is.non-nil,.log.all.SQLite.comm
84a0 61 6e 64 73 20 74 6f 20 61 20 6c 6f 67 20 62 75 66 66 65 72 2c 20 66 6f 72 20 64 65 62 75 67 67 ands.to.a.log.buffer,.for.debugg
84c0 69 6e 67 0a 70 75 72 70 6f 73 65 73 2e 20 20 41 6c 77 61 79 73 20 65 6e 61 62 6c 65 20 73 75 70 ing.purposes...Always.enable.sup
84e0 70 6f 72 74 20 66 6f 72 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 73 2e port.for.foreign.key.constrains.
8500 0a 0a 49 66 20 6f 70 74 69 6f 6e 61 6c 20 53 45 54 55 50 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 ..If.optional.SETUP.is.non-nil,.
8520 69 74 20 6d 75 73 74 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68 20 74 61 6b it.must.be.a.function,.which.tak
8540 65 73 20 74 68 65 0a 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 73 20 6f 6e 6c 79 20 61 72 67 75 6d 65 es.the.connection.as.only.argume
8560 6e 74 2e 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 nt...This.function.can.be.used.t
8580 6f 20 69 6e 69 74 69 61 6c 69 7a 65 0a 74 61 62 6c 65 73 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 o.initialize.tables,.for.example
85a0 2e 0a 0a 49 66 20 6f 70 74 69 6f 6e 61 6c 20 55 53 45 2d 4d 4f 44 55 4c 45 20 69 73 20 6e 6f 6e ...If.optional.USE-MODULE.is.non
85c0 2d 6e 69 6c 2c 20 74 68 65 6e 20 75 73 65 20 74 68 65 20 65 78 74 65 72 6e 61 6c 20 6d 6f 64 75 -nil,.then.use.the.external.modu
85e0 6c 65 20 65 76 65 6e 0a 77 68 65 6e 20 45 6d 61 63 73 20 77 61 73 20 62 75 69 6c 74 20 77 69 74 le.even.when.Emacs.was.built.wit
8600 68 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74 2e 20 20 54 68 69 73 20 69 73 20 69 6e 74 65 6e h.SQLite.support...This.is.inten
8620 64 65 64 20 66 6f 72 20 74 65 73 74 69 6e 67 0a 70 75 72 70 6f 73 65 73 2e 22 0a 20 20 28 77 68 ded.for.testing.purposes."...(wh
8640 65 6e 20 66 69 6c 65 0a 20 20 20 20 28 6d 61 6b 65 2d 64 69 72 65 63 74 6f 72 79 20 28 66 69 6c en.file.....(make-directory.(fil
8660 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 20 66 69 6c 65 29 20 74 29 29 0a 20 20 28 6c 65 e-name-directory.file).t))...(le
8680 74 2a 20 28 28 63 6c 61 73 73 20 28 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 64 65 66 61 75 t*.((class.(emacsql-sqlite-defau
86a0 6c 74 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 65 2d 6d 6f 64 75 6c 65 29 29 0a 20 20 20 20 20 lt-connection.use-module))......
86c0 20 20 20 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 6d 61 6b 65 2d 69 6e 73 74 61 6e 63 65 20 63 ....(connection.(make-instance.c
86e0 6c 61 73 73 20 3a 66 69 6c 65 20 66 69 6c 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 64 65 62 lass.:file.file))).....(when.deb
8700 75 67 0a 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 6e 61 62 6c 65 2d 64 65 62 75 67 67 69 ug.......(emacsql-enable-debuggi
8720 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 20 20 28 65 6d 61 63 73 71 6c 20 63 6f 6e ng.connection)).....(emacsql.con
8740 6e 65 63 74 69 6f 6e 20 5b 3a 70 72 61 67 6d 61 20 28 3d 20 66 6f 72 65 69 67 6e 2d 6b 65 79 73 nection.[:pragma.(=.foreign-keys
8760 20 6f 6e 29 5d 29 0a 20 20 20 20 28 77 68 65 6e 20 73 65 74 75 70 0a 20 20 20 20 20 20 28 66 75 .on)]).....(when.setup.......(fu
8780 6e 63 61 6c 6c 20 73 65 74 75 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 20 20 63 6f 6e ncall.setup.connection)).....con
87a0 6e 65 63 74 69 6f 6e 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 nection))..(defun.emacsql-sqlite
87c0 2d 64 65 66 61 75 6c 74 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 26 6f 70 74 69 6f 6e 61 6c 20 75 -default-connection.(&optional.u
87e0 73 65 2d 6d 6f 64 75 6c 65 29 0a 20 20 22 44 65 74 65 72 6d 69 6e 65 20 61 6e 64 20 72 65 74 75 se-module)..."Determine.and.retu
8800 72 6e 20 74 68 65 20 62 65 73 74 20 53 51 4c 69 74 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c rn.the.best.SQLite.connection.cl
8820 61 73 73 2e 0a 0a 53 69 67 6e 61 6c 20 61 6e 20 65 72 72 6f 72 20 69 66 20 6e 6f 6e 65 20 6f 66 ass...Signal.an.error.if.none.of
8840 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c 61 73 73 65 73 20 63 61 6e 20 62 65 20 75 .the.connection.classes.can.be.u
8860 73 65 64 2e 0a 0a 49 66 20 6f 70 74 69 6f 6e 61 6c 20 55 53 45 2d 4d 4f 44 55 4c 45 20 69 73 20 sed...If.optional.USE-MODULE.is.
8880 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 6e 20 75 73 65 20 74 68 65 20 65 78 74 65 72 6e 61 6c 20 6d non-nil,.then.use.the.external.m
88a0 6f 64 75 6c 65 20 65 76 65 6e 0a 77 68 65 6e 20 45 6d 61 63 73 20 77 61 73 20 62 75 69 6c 74 20 odule.even.when.Emacs.was.built.
88c0 77 69 74 68 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74 2e 20 20 54 68 69 73 20 69 73 20 69 6e with.SQLite.support...This.is.in
88e0 74 65 6e 64 65 64 20 66 6f 72 20 74 65 73 74 69 6e 67 0a 70 75 72 70 6f 73 65 73 2e 22 0a 20 20 tended.for.testing.purposes."...
8900 28 6f 72 20 28 61 6e 64 20 28 6e 6f 74 20 75 73 65 2d 6d 6f 64 75 6c 65 29 0a 20 20 20 20 20 20 (or.(and.(not.use-module).......
8920 20 20 20 20 20 28 66 62 6f 75 6e 64 70 20 27 73 71 6c 69 74 65 2d 61 76 61 69 6c 61 62 6c 65 2d .....(fboundp.'sqlite-available-
8940 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 71 6c 69 74 65 2d 61 76 61 69 6c 61 62 6c 65 2d p)............(sqlite-available-
8960 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 65 6d 61 63 73 71 6c 2d p)............(require.'emacsql-
8980 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 27 65 6d 61 63 sqlite-builtin)............'emac
89a0 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 6e 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 sql-sqlite-builtin-connection)..
89c0 20 20 20 20 20 28 61 6e 64 20 28 62 6f 75 6e 64 70 20 27 6d 6f 64 75 6c 65 2d 66 69 6c 65 2d 73 .....(and.(boundp.'module-file-s
89e0 75 66 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2d 66 69 6c 65 2d 73 75 uffix)............module-file-su
8a00 66 66 69 78 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 ffix............(condition-case.
8a20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 61 69 6c 75 72 65 20 6d 6f nil................;;.Failure.mo
8a40 64 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 31 2e 20 60 6c 69 62 73 71 des:................;;.1..`libsq
8a60 6c 69 74 65 27 20 73 68 61 72 65 64 20 6c 69 62 72 61 72 79 20 69 73 6e 27 74 20 61 76 61 69 6c lite'.shared.library.isn't.avail
8a80 61 62 6c 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 32 2e 20 55 73 65 72 20 able.................;;.2..User.
8aa0 63 68 6f 6f 73 65 73 20 74 6f 20 6e 6f 74 20 63 6f 6d 70 69 6c 65 20 60 6c 69 62 73 71 6c 69 74 chooses.to.not.compile.`libsqlit
8ac0 65 27 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 33 2e 20 60 6c 69 62 73 71 6c e'.................;;.3..`libsql
8ae0 69 74 65 27 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 61 69 6c 73 2e 0a 20 20 20 20 20 20 20 20 ite'.compilation.fails..........
8b00 20 20 20 20 20 20 20 28 61 6e 64 20 28 72 65 71 75 69 72 65 20 27 73 71 6c 69 74 65 33 29 0a 20 .......(and.(require.'sqlite3)..
8b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 65 6d 61 ...................(require.'ema
8b40 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 csql-sqlite-module).............
8b60 20 20 20 20 20 20 20 20 27 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 2d 63 ........'emacsql-sqlite-module-c
8b80 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 onnection)..............(error..
8ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 20 27 65 .............(display-warning.'e
8bc0 6d 61 63 73 71 6c 20 22 5c 0a 53 69 6e 63 65 20 79 6f 75 72 20 45 6d 61 63 73 20 64 6f 65 73 20 macsql."\.Since.your.Emacs.does.
8be0 6e 6f 74 20 63 6f 6d 65 20 77 69 74 68 0a 62 75 69 6c 74 2d 69 6e 20 53 51 4c 69 74 65 20 73 75 not.come.with.built-in.SQLite.su
8c00 70 70 6f 72 74 20 5b 31 5d 2c 20 62 75 74 20 64 6f 65 73 20 73 75 70 70 6f 72 74 20 43 20 6d 6f pport.[1],.but.does.support.C.mo
8c20 64 75 6c 65 73 2c 20 77 65 20 63 61 6e 0a 75 73 65 20 61 6e 20 45 6d 61 63 53 51 4c 20 62 61 63 dules,.we.can.use.an.EmacSQL.bac
8c40 6b 65 6e 64 20 74 68 61 74 20 72 65 6c 69 65 73 20 6f 6e 20 74 68 65 20 74 68 69 72 64 2d 70 61 kend.that.relies.on.the.third-pa
8c60 72 74 79 20 60 73 71 6c 69 74 65 33 27 0a 70 61 63 6b 61 67 65 20 5b 32 5d 2e 0a 0a 50 6c 65 61 rty.`sqlite3'.package.[2]...Plea
8c80 73 65 20 69 6e 73 74 61 6c 6c 20 74 68 65 20 60 73 71 6c 69 74 65 33 27 20 45 6c 69 73 70 20 70 se.install.the.`sqlite3'.Elisp.p
8ca0 61 63 6b 61 67 65 20 75 73 69 6e 67 20 79 6f 75 72 20 70 72 65 66 65 72 72 65 64 0a 45 6d 61 63 ackage.using.your.preferred.Emac
8cc0 73 20 70 61 63 6b 61 67 65 20 6d 61 6e 61 67 65 72 2c 20 61 6e 64 20 69 6e 73 74 61 6c 6c 20 74 s.package.manager,.and.install.t
8ce0 68 65 20 53 51 4c 69 74 65 20 73 68 61 72 65 64 20 6c 69 62 72 61 72 79 0a 75 73 69 6e 67 20 79 he.SQLite.shared.library.using.y
8d00 6f 75 72 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 73 20 70 61 63 6b 61 67 65 20 6d 61 6e 61 67 our.distribution's.package.manag
8d20 65 72 2e 20 20 54 68 61 74 20 70 61 63 6b 61 67 65 20 73 68 6f 75 6c 64 0a 62 65 20 6e 61 6d 65 er...That.package.should.be.name
8d40 64 20 73 6f 6d 65 74 68 69 6e 67 20 6c 69 6b 65 20 60 6c 69 62 73 71 6c 69 74 65 33 27 20 5b 33 d.something.like.`libsqlite3'.[3
8d60 5d 20 61 6e 64 20 4e 4f 54 20 6a 75 73 74 20 60 73 71 6c 69 74 65 33 27 2e 0a 0a 54 68 65 20 6c ].and.NOT.just.`sqlite3'...The.l
8d80 65 67 61 63 79 20 62 61 63 6b 65 6e 64 2c 20 77 68 69 63 68 20 75 73 65 73 20 61 20 63 75 73 74 egacy.backend,.which.uses.a.cust
8da0 6f 6d 20 53 51 4c 69 74 65 20 65 78 65 63 75 74 61 62 6c 65 2c 20 68 61 73 0a 62 65 65 6e 20 72 om.SQLite.executable,.has.been.r
8dc0 65 6d 6f 76 65 2c 20 73 6f 20 77 65 20 63 61 6e 20 6e 6f 20 6c 6f 6e 67 65 72 20 66 61 6c 6c 20 emove,.so.we.can.no.longer.fall.
8de0 62 61 63 6b 20 74 6f 20 74 68 61 74 2e 0a 0a 5b 31 5d 3a 20 53 75 70 70 6f 72 74 65 64 20 73 69 back.to.that...[1]:.Supported.si
8e00 6e 63 65 20 45 6d 61 63 73 20 32 39 2e 31 2c 20 70 72 6f 76 69 64 65 64 20 69 74 20 77 61 73 20 nce.Emacs.29.1,.provided.it.was.
8e20 6e 6f 74 20 64 69 73 61 62 6c 65 64 0a 20 20 20 20 20 77 69 74 68 20 60 2d 2d 77 69 74 68 6f 75 not.disabled......with.`--withou
8e40 74 2d 73 71 6c 69 74 65 33 27 2e 0a 5b 32 5d 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e t-sqlite3'..[2]:.https://github.
8e60 63 6f 6d 2f 70 65 6b 69 6e 67 64 75 63 6b 2f 65 6d 61 63 73 2d 73 71 6c 69 74 65 33 2d 61 70 69 com/pekingduck/emacs-sqlite3-api
8e80 0a 5b 33 5d 3a 20 4f 6e 20 44 65 62 69 61 6e 20 68 74 74 70 73 3a 2f 2f 70 61 63 6b 61 67 65 73 .[3]:.On.Debian.https://packages
8ea0 2e 64 65 62 69 61 6e 2e 6f 72 67 2f 62 75 73 74 65 72 2f 6c 69 62 73 71 6c 69 74 65 33 2d 30 22 .debian.org/buster/libsqlite3-0"
8ec0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 62 75 66 66 65 72 20 64 69 )...............;;.The.buffer.di
8ee0 73 70 6c 61 79 69 6e 67 20 74 68 65 20 77 61 72 6e 69 6e 67 20 6d 69 67 68 74 20 69 6d 6d 65 64 splaying.the.warning.might.immed
8f00 69 61 74 65 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 62 65 20 72 65 70 6c 61 iately...............;;.be.repla
8f20 63 65 64 20 62 79 20 61 6e 6f 74 68 65 72 20 62 75 66 66 65 72 2c 20 62 65 66 6f 72 65 20 74 68 ced.by.another.buffer,.before.th
8f40 65 20 75 73 65 72 20 67 65 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 61 20 63 e.user.gets...............;;.a.c
8f60 68 61 6e 63 65 20 74 6f 20 73 65 65 20 69 74 2e 20 20 57 65 20 63 61 6e 6e 6f 74 20 68 61 76 65 hance.to.see.it...We.cannot.have
8f80 20 74 68 61 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 66 6e 29 0a 20 .that................(let.(fn)..
8fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 6e 20 28 6c 61 6d 62 64 61 20 ...............(setq.fn.(lambda.
8fc0 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 ()............................(r
8fe0 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 70 6f 73 74 2d 63 6f 6d 6d 61 6e 64 2d 68 6f 6f 6b 20 66 6e emove-hook.'post-command-hook.fn
9000 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f )............................(po
9020 70 2d 74 6f 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 20 22 2a 57 61 72 6e 69 6e p-to-buffer.(get-buffer."*Warnin
9040 67 73 2a 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f gs*")))).................(add-ho
9060 6f 6b 20 27 70 6f 73 74 2d 63 6f 6d 6d 61 6e 64 2d 68 6f 6f 6b 20 66 6e 29 29 0a 20 20 20 20 20 ok.'post-command-hook.fn))......
9080 20 20 20 20 20 20 20 20 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 6d .........nil))).......(error."Em
90a0 61 63 53 51 4c 20 63 6f 75 6c 64 20 6e 6f 74 20 66 69 6e 64 20 6f 72 20 63 6f 6d 70 69 6c 65 20 acSQL.could.not.find.or.compile.
90c0 61 20 62 61 63 6b 2d 65 6e 64 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 73 a.back-end")))..(defun.emacsql-s
90e0 71 6c 69 74 65 2d 73 65 74 2d 62 75 73 79 2d 74 69 6d 65 6f 75 74 20 28 63 6f 6e 6e 65 63 74 69 qlite-set-busy-timeout.(connecti
9100 6f 6e 29 0a 20 20 28 77 68 65 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 73 79 2d on)...(when.emacsql-sqlite-busy-
9120 74 69 6d 65 6f 75 74 0a 20 20 20 20 28 65 6d 61 63 73 71 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 timeout.....(emacsql.connection.
9140 5b 3a 70 72 61 67 6d 61 20 28 3d 20 62 75 73 79 2d 74 69 6d 65 6f 75 74 20 24 73 31 29 5d 0a 20 [:pragma.(=.busy-timeout.$s1)]..
9160 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 ............(*.emacsql-sqlite-bu
9180 73 79 2d 74 69 6d 65 6f 75 74 20 31 30 30 30 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 sy-timeout.1000))))..(defun.emac
91a0 73 71 6c 2d 73 71 6c 69 74 65 2d 72 65 61 64 2d 63 6f 6c 75 6d 6e 20 28 73 74 72 69 6e 67 29 0a sql-sqlite-read-column.(string).
91c0 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 62 65 67 ..(let.((value.nil).........(beg
91e0 20 30 29 0a 20 20 20 20 20 20 20 20 28 65 6e 64 20 28 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 29 .0).........(end.(length.string)
9200 29 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 3c 20 62 65 67 20 65 6e 64 29 0a 20 20 20 20 20 20 )).....(while.(<.beg.end).......
9220 28 6c 65 74 20 28 28 76 20 28 72 65 61 64 2d 66 72 6f 6d 2d 73 74 72 69 6e 67 20 73 74 72 69 6e (let.((v.(read-from-string.strin
9240 67 20 62 65 67 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 61 72 20 76 29 20 76 g.beg))).........(push.(car.v).v
9260 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 62 65 67 20 28 63 64 72 20 76 29 29 alue).........(setq.beg.(cdr.v))
9280 29 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 76 61 6c 75 65 29 29 29 0a 0a 28 64 65 66 75 )).....(nreverse.value)))..(defu
92a0 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6c 69 73 74 2d 74 61 62 6c 65 73 20 28 63 6f n.emacsql-sqlite-list-tables.(co
92c0 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 73 79 nnection)..."Return.a.list.of.sy
92e0 6d 62 6f 6c 73 20 69 64 65 6e 74 69 66 79 69 6e 67 20 74 61 62 6c 65 73 20 69 6e 20 43 4f 4e 4e mbols.identifying.tables.in.CONN
9300 45 43 54 49 4f 4e 2e 0a 54 61 62 6c 65 73 20 77 68 6f 73 65 20 6e 61 6d 65 73 20 62 65 67 69 6e ECTION..Tables.whose.names.begin
9320 20 77 69 74 68 20 5c 22 73 71 6c 69 74 65 5f 5c 22 2c 20 61 72 65 20 6e 6f 74 20 69 6e 63 6c 75 .with.\"sqlite_\",.are.not.inclu
9340 64 65 64 0a 69 6e 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 2e 22 0a 20 20 28 6d ded.in.the.returned.value."...(m
9360 61 70 63 61 72 20 23 27 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 20 63 apcar.#'car...........(emacsql.c
9380 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 3a 73 onnection....................[:s
93a0 65 6c 65 63 74 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b elect.name.....................;
93c0 3b 20 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 69 73 20 60 73 71 6c 69 74 65 2d 73 63 68 65 6d 61 ;.The.new.name.is.`sqlite-schema
93e0 27 2c 20 62 75 74 20 74 68 69 73 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ',.but.this.name................
9400 20 20 20 20 20 3b 3b 20 69 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 6f 6c 64 20 61 6e 64 20 .....;;.is.supported.by.old.and.
9420 6e 65 77 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 new.SQLite.versions.............
9440 20 20 20 20 20 20 20 20 20 3b 3b 20 53 65 65 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c 69 .........;;.See.https://www.sqli
9460 74 65 2e 6f 72 67 2f 73 63 68 65 6d 61 74 61 62 2e 68 74 6d 6c 2e 0a 20 20 20 20 20 20 20 20 20 te.org/schematab.html...........
9480 20 20 20 20 20 20 20 20 20 20 20 3a 66 72 6f 6d 20 73 71 6c 69 74 65 2d 6d 61 73 74 65 72 0a 20 ...........:from.sqlite-master..
94a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 77 68 65 72 65 20 28 61 6e 64 20 28 ...................:where.(and.(
94c0 3d 20 74 79 70 65 20 27 74 61 62 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.type.'table)..................
94e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 2d 6c 69 6b 65 20 6e 61 6d 65 20 22 73 ...............(not-like.name."s
9500 71 6c 69 74 65 5f 25 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a qlite_%")).....................:
9520 6f 72 64 65 72 2d 62 79 20 5b 28 61 73 63 20 6e 61 6d 65 29 5d 5d 29 29 29 0a 0a 28 64 65 66 75 order-by.[(asc.name)]])))..(defu
9540 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 64 75 6d 70 2d 64 61 74 61 62 61 73 65 20 28 n.emacsql-sqlite-dump-database.(
9560 63 6f 6e 6e 65 63 74 69 6f 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 76 65 72 73 69 6f 6e 70 29 0a 20 connection.&optional.versionp)..
9580 20 22 44 75 6d 70 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 70 65 63 69 66 69 65 64 20 62 79 ."Dump.the.database.specified.by
95a0 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 74 6f 20 61 20 66 69 6c 65 2e 0a 0a 54 68 65 20 64 75 6d 70 .CONNECTION.to.a.file...The.dump
95c0 20 66 69 6c 65 20 69 73 20 70 6c 61 63 65 64 20 69 6e 20 74 68 65 20 73 61 6d 65 20 64 69 72 65 .file.is.placed.in.the.same.dire
95e0 63 74 6f 72 79 20 61 73 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 66 69 6c 65 20 61 6e 64 20 69 ctory.as.the.database.file.and.i
9600 74 73 20 6e 61 6d 65 20 64 65 72 69 76 65 73 20 66 72 6f 6d 20 74 68 65 20 6e 61 6d 65 20 6f 66 ts.name.derives.from.the.name.of
9620 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 0a 54 68 65 20 73 75 66 66 69 78 20 69 .the.database.file..The.suffix.i
9640 73 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 20 5c 22 2e 73 71 6c 5c 22 20 61 6e 64 20 69 66 20 s.replaced.with.\".sql\".and.if.
9660 6f 70 74 69 6f 6e 61 6c 20 56 45 52 53 49 4f 4e 50 20 69 73 0a 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 optional.VERSIONP.is.non-nil,.th
9680 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 76 65 72 73 69 6f 6e 20 28 74 68 65 20 60 75 73 en.the.database.version.(the.`us
96a0 65 72 5f 76 65 72 73 69 6f 6e 27 20 70 72 61 67 6d 61 29 0a 61 6e 64 20 61 20 74 69 6d 65 73 74 er_version'.pragma).and.a.timest
96c0 61 6d 70 20 61 72 65 20 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 20 66 69 6c 65 20 6e 61 6d amp.are.appended.to.the.file.nam
96e0 65 2e 0a 0a 44 75 6d 70 69 6e 67 20 69 73 20 64 6f 6e 65 20 75 73 69 6e 67 20 74 68 65 20 6f 66 e...Dumping.is.done.using.the.of
9700 66 69 63 69 61 6c 20 60 73 71 6c 69 74 65 33 27 20 62 69 6e 61 72 79 2e 20 20 49 66 20 74 68 61 ficial.`sqlite3'.binary...If.tha
9720 74 20 69 73 0a 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 61 6e 64 20 56 45 52 53 49 4f 4e 50 20 t.is.not.available.and.VERSIONP.
9740 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 is.non-nil,.then.the.database.fi
9760 6c 65 20 69 73 0a 63 6f 70 69 65 64 20 69 6e 73 74 65 61 64 2e 22 0a 20 20 28 6c 65 74 2a 20 28 le.is.copied.instead."...(let*.(
9780 28 76 65 72 73 69 6f 6e 20 28 63 61 61 72 20 28 65 6d 61 63 73 71 6c 20 63 6f 6e 6e 65 63 74 69 (version.(caar.(emacsql.connecti
97a0 6f 6e 20 5b 3a 70 72 61 67 6d 61 20 75 73 65 72 2d 76 65 72 73 69 6f 6e 5d 29 29 29 0a 20 20 20 on.[:pragma.user-version])))....
97c0 20 20 20 20 20 20 28 64 62 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 69 6c 65 29 ......(db.(oref.connection.file)
97e0 29 0a 20 20 20 20 20 20 20 20 20 28 64 62 20 28 69 66 20 28 73 79 6d 62 6f 6c 70 20 64 62 29 20 )..........(db.(if.(symbolp.db).
9800 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 64 62 29 20 64 62 29 29 0a 20 20 20 20 20 20 20 20 20 (symbol-value.db).db))..........
9820 28 6e 61 6d 65 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 6e 6f 6e 64 69 72 65 63 74 6f 72 79 20 64 62 (name.(file-name-nondirectory.db
9840 29 29 0a 20 20 20 20 20 20 20 20 20 28 6f 75 74 70 75 74 20 28 63 6f 6e 63 61 74 20 28 66 69 6c ))..........(output.(concat.(fil
9860 65 2d 6e 61 6d 65 2d 73 61 6e 73 2d 65 78 74 65 6e 73 69 6f 6e 20 64 62 29 0a 20 20 20 20 20 20 e-name-sans-extension.db).......
9880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 76 65 72 73 69 6f 6e 70 ...................(and.versionp
98a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
98c0 63 6f 6e 63 61 74 20 28 66 6f 72 6d 61 74 20 22 2d 76 25 73 22 20 76 65 72 73 69 6f 6e 29 0a 20 concat.(format."-v%s".version)..
98e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9900 20 20 20 20 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 2d 25 59 25 6d 25 .....(format-time-string."-%Y%m%
9920 64 2d 25 48 25 4d 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d-%H%M")))......................
9940 20 20 20 20 22 2e 73 71 6c 22 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 28 28 6c ....".sql"))).....(cond......((l
9960 6f 63 61 74 65 2d 66 69 6c 65 20 22 73 71 6c 69 74 65 33 22 20 65 78 65 63 2d 70 61 74 68 29 0a ocate-file."sqlite3".exec-path).
9980 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 ......(when.(and.(file-exists-p.
99a0 6f 75 74 70 75 74 29 20 76 65 72 73 69 6f 6e 70 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 output).versionp).........(error
99c0 20 22 43 61 6e 6e 6f 74 20 64 75 6d 70 20 64 61 74 61 62 61 73 65 3b 20 25 73 20 61 6c 72 65 61 ."Cannot.dump.database;.%s.alrea
99e0 64 79 20 65 78 69 73 74 73 22 20 6f 75 74 70 75 74 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d dy.exists".output)).......(with-
9a00 74 65 6d 70 2d 66 69 6c 65 20 6f 75 74 70 75 74 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 temp-file.output.........(messag
9a20 65 20 22 44 75 6d 70 69 6e 67 20 25 73 20 64 61 74 61 62 61 73 65 20 74 6f 20 25 73 2e 2e 2e 22 e."Dumping.%s.database.to.%s..."
9a40 20 6e 61 6d 65 20 6f 75 74 70 75 74 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 7a .name.output).........(unless.(z
9a60 65 72 6f 70 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 erop.(save-excursion............
9a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 6c 6c 2d 70 72 6f 63 65 73 73 20 22 73 71 6c ..............(call-process."sql
9aa0 69 74 65 33 22 20 6e 69 6c 20 74 20 6e 69 6c 20 64 62 20 22 2e 64 75 6d 70 22 29 29 29 0a 20 20 ite3".nil.t.nil.db.".dump")))...
9ac0 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 46 61 69 6c 65 64 20 74 6f 20 64 75 6d 70 20 25 ........(error."Failed.to.dump.%
9ae0 73 22 20 64 62 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 76 65 72 73 69 6f 6e 0a 20 20 s".db)).........(when.version...
9b00 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 50 52 41 47 4d 41 20 ........(insert.(format."PRAGMA.
9b20 75 73 65 72 5f 76 65 72 73 69 6f 6e 3d 25 73 3b 5c 6e 22 20 76 65 72 73 69 6f 6e 29 29 29 0a 20 user_version=%s;\n".version)))..
9b40 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 6f 75 74 70 75 74 20 63 6f 6e 74 61 69 6e 73 20 22 50 .......;;.The.output.contains."P
9b60 52 41 47 4d 41 20 66 6f 72 65 69 67 6e 5f 6b 65 79 73 3d 4f 46 46 3b 22 2e 0a 20 20 20 20 20 20 RAGMA.foreign_keys=OFF;"........
9b80 20 20 3b 3b 20 43 68 61 6e 67 65 20 74 68 61 74 20 74 6f 20 61 76 6f 69 64 20 61 6c 61 72 6d 69 ..;;.Change.that.to.avoid.alarmi
9ba0 6e 67 20 61 74 74 65 6e 74 69 76 65 20 75 73 65 72 73 2e 0a 20 20 20 20 20 20 20 20 28 77 68 65 ng.attentive.users..........(whe
9bc0 6e 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 5e 50 52 41 47 4d 41 20 66 6f n.(re-search-forward."^PRAGMA.fo
9be0 72 65 69 67 6e 5f 6b 65 79 73 3d 5c 5c 28 4f 46 46 5c 5c 29 3b 22 20 31 30 30 30 20 74 29 0a 20 reign_keys=\\(OFF\\);".1000.t)..
9c00 20 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 68 20 22 4f 4e 22 20 74 20 74 .........(replace-match."ON".t.t
9c20 20 6e 69 6c 20 31 29 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 44 75 6d 70 69 .nil.1)).........(message."Dumpi
9c40 6e 67 20 25 73 20 64 61 74 61 62 61 73 65 20 74 6f 20 25 73 2e 2e 2e 64 6f 6e 65 22 20 6e 61 6d ng.%s.database.to.%s...done".nam
9c60 65 20 6f 75 74 70 75 74 29 29 29 0a 20 20 20 20 20 28 76 65 72 73 69 6f 6e 70 0a 20 20 20 20 20 e.output)))......(versionp......
9c80 20 28 73 65 74 71 20 6f 75 74 70 75 74 20 28 63 6f 6e 63 61 74 20 28 66 69 6c 65 2d 6e 61 6d 65 .(setq.output.(concat.(file-name
9ca0 2d 73 61 6e 73 2d 65 78 74 65 6e 73 69 6f 6e 20 6f 75 74 70 75 74 29 20 22 2e 64 62 22 29 29 0a -sans-extension.output).".db")).
9cc0 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 61 6e 6e 6f 74 20 64 75 6d 70 20 64 61 74 61 ......(message."Cannot.dump.data
9ce0 62 61 73 65 20 62 65 63 61 75 73 65 20 73 71 6c 69 74 65 33 20 62 69 6e 61 72 79 20 63 61 6e 6e base.because.sqlite3.binary.cann
9d00 6f 74 20 62 65 20 66 6f 75 6e 64 22 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 ot.be.found").......(when.(and.(
9d20 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 6f 75 74 70 75 74 29 20 76 65 72 73 69 6f 6e 70 29 0a file-exists-p.output).versionp).
9d40 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 43 61 6e 6e 6f 74 20 63 6f 70 79 20 64 61 74 61 ........(error."Cannot.copy.data
9d60 62 61 73 65 3b 20 25 73 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 22 20 6f 75 74 70 75 74 29 base;.%s.already.exists".output)
9d80 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 6f 70 79 69 6e 67 20 25 73 20 64 61 74 ).......(message."Copying.%s.dat
9da0 61 62 61 73 65 20 74 6f 20 25 73 2e 2e 2e 22 20 6e 61 6d 65 20 6f 75 74 70 75 74 29 0a 20 20 20 abase.to.%s...".name.output)....
9dc0 20 20 20 28 63 6f 70 79 2d 66 69 6c 65 20 64 62 20 6f 75 74 70 75 74 29 0a 20 20 20 20 20 20 28 ...(copy-file.db.output).......(
9de0 6d 65 73 73 61 67 65 20 22 43 6f 70 79 69 6e 67 20 25 73 20 64 61 74 61 62 61 73 65 20 74 6f 20 message."Copying.%s.database.to.
9e00 25 73 2e 2e 2e 64 6f 6e 65 22 20 6e 61 6d 65 20 6f 75 74 70 75 74 29 29 0a 20 20 20 20 20 28 28 %s...done".name.output))......((
9e20 65 72 72 6f 72 20 22 43 61 6e 6e 6f 74 20 64 75 6d 70 20 64 61 74 61 62 61 73 65 3b 20 73 71 6c error."Cannot.dump.database;.sql
9e40 69 74 65 33 20 62 69 6e 61 72 79 20 69 73 6e 27 74 20 61 76 61 69 6c 61 62 6c 65 22 29 29 29 29 ite3.binary.isn't.available"))))
9e60 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 72 65 73 74 6f 72 65 )..(defun.emacsql-sqlite-restore
9e80 2d 64 61 74 61 62 61 73 65 20 28 64 62 20 64 75 6d 70 29 0a 20 20 22 52 65 73 74 6f 72 65 20 64 -database.(db.dump)..."Restore.d
9ea0 61 74 61 62 61 73 65 20 44 42 20 66 72 6f 6d 20 44 55 4d 50 2e 0a 0a 44 55 4d 50 20 69 73 20 61 atabase.DB.from.DUMP...DUMP.is.a
9ec0 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e .file.containing.SQL.statements.
9ee0 20 20 44 42 20 63 61 6e 20 62 65 20 74 68 65 20 66 69 6c 65 0a 69 6e 20 77 68 69 63 68 20 74 68 ..DB.can.be.the.file.in.which.th
9f00 65 20 64 61 74 61 62 61 73 65 20 69 73 20 74 6f 20 62 65 20 73 74 6f 72 65 64 2c 20 6f 72 20 69 e.database.is.to.be.stored,.or.i
9f20 74 20 63 61 6e 20 62 65 20 61 20 64 61 74 61 62 61 73 65 0a 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 t.can.be.a.database.connection..
9f40 20 49 6e 20 74 68 65 20 6c 61 74 74 65 72 20 63 61 73 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 .In.the.latter.case.the.current.
9f60 64 61 74 61 62 61 73 65 20 69 73 20 66 69 72 73 74 0a 64 75 6d 70 65 64 20 74 6f 20 61 20 6e 65 database.is.first.dumped.to.a.ne
9f80 77 20 66 69 6c 65 20 61 6e 64 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f w.file.and.the.connection.is.clo
9fa0 73 65 64 2e 20 20 54 68 65 6e 20 74 68 65 0a 64 61 74 61 62 61 73 65 20 69 73 20 72 65 73 74 6f sed...Then.the.database.is.resto
9fc0 72 65 64 20 66 72 6f 6d 20 44 55 4d 50 2e 20 20 4e 6f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f red.from.DUMP...No.connection.to
9fe0 20 74 68 65 20 6e 65 77 0a 64 61 74 61 62 61 73 65 20 69 73 20 63 72 65 61 74 65 64 2e 22 0a 20 .the.new.database.is.created."..
a000 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 70 20 64 62 29 0a 20 20 20 20 28 65 6d 61 63 73 .(unless.(stringp.db).....(emacs
a020 71 6c 2d 73 71 6c 69 74 65 2d 64 75 6d 70 2d 64 61 74 61 62 61 73 65 20 64 62 20 74 29 0a 20 20 ql-sqlite-dump-database.db.t)...
a040 20 20 28 65 6d 61 63 73 71 6c 2d 63 6c 6f 73 65 20 28 70 72 6f 67 31 20 64 62 20 28 73 65 74 71 ..(emacsql-close.(prog1.db.(setq
a060 20 64 62 20 28 6f 72 65 66 20 64 62 20 66 69 6c 65 29 29 29 29 29 0a 20 20 28 77 69 74 68 2d 74 .db.(oref.db.file)))))...(with-t
a080 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 7a 65 72 6f 70 20 28 63 emp-buffer.....(unless.(zerop.(c
a0a0 61 6c 6c 2d 70 72 6f 63 65 73 73 20 22 73 71 6c 69 74 65 33 22 20 6e 69 6c 20 74 20 6e 69 6c 20 all-process."sqlite3".nil.t.nil.
a0c0 64 62 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 db..............................
a0e0 20 20 20 20 28 66 6f 72 6d 61 74 20 22 2e 72 65 61 64 20 25 73 22 20 64 75 6d 70 29 29 29 0a 20 ....(format.".read.%s".dump)))..
a100 20 20 20 20 20 28 65 72 72 6f 72 20 22 46 61 69 6c 65 64 20 74 6f 20 72 65 61 64 20 25 73 3a 20 .....(error."Failed.to.read.%s:.
a120 25 73 22 20 64 75 6d 70 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 29 29 0a 0a 28 70 %s".dump.(buffer-string)))))..(p
a140 72 6f 76 69 64 65 20 27 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 29 0a 0a 3b 3b 3b 20 65 6d 61 rovide.'emacsql-sqlite)..;;;.ema
a160 63 73 71 6c 2d 73 71 6c 69 74 65 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 csql-sqlite.el.ends.here........
a180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a200 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 65 6d 61 63 73 71 6c 2d 70 67 2e 65 6c 00 00 00 00 00 emacsql-4.3.1/emacsql-pg.el.....
a220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
a280 30 30 30 36 30 35 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 31 36 33 00 20 30 00 00 00 0006054.00000000000.014163..0...
a2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a300 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
a320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
a340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a400 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 70 67 2e 65 6c 20 2d 2d 2d 20 45 6d 61 63 53 51 4c 20 62 61 ;;;.emacsql-pg.el.---.EmacSQL.ba
a420 63 6b 2d 65 6e 64 20 66 6f 72 20 50 6f 73 74 67 72 65 53 51 4c 20 76 69 61 20 70 67 20 20 2d 2a ck-end.for.PostgreSQL.via.pg..-*
a440 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 74 20 2d 2a 2d 0a 0a 3b 3b 20 54 68 69 73 -.lexical-binding:t.-*-..;;.This
a460 20 69 73 20 66 72 65 65 20 61 6e 64 20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f 66 74 77 61 .is.free.and.unencumbered.softwa
a480 72 65 20 72 65 6c 65 61 73 65 64 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 re.released.into.the.public.doma
a4a0 69 6e 2e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c in...;;.Author:.Christopher.Well
a4c0 6f 6e 73 20 3c 77 65 6c 6c 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 3e 0a 3b 3b ons.<wellons@nullprogram.com>.;;
a4e0 20 4d 61 69 6e 74 61 69 6e 65 72 3a 20 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 20 3c 65 6d .Maintainer:.Jonas.Bernoulli.<em
a500 61 63 73 2e 65 6d 61 63 73 71 6c 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e 64 65 76 3e acs.emacsql@jonas.bernoulli.dev>
a520 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 55 6e ..;;.SPDX-License-Identifier:.Un
a540 6c 69 63 65 6e 73 65 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 license..;;;.Commentary:..;;.Thi
a560 73 20 6c 69 62 72 61 72 79 20 70 72 6f 76 69 64 65 73 20 61 6e 20 45 6d 61 63 53 51 4c 20 62 61 s.library.provides.an.EmacSQL.ba
a580 63 6b 2d 65 6e 64 20 66 6f 72 20 50 6f 73 74 67 72 65 53 51 4c 2c 20 77 68 69 63 68 0a 3b 3b 20 ck-end.for.PostgreSQL,.which.;;.
a5a0 75 73 65 73 20 74 68 65 20 60 70 67 27 20 70 61 63 6b 61 67 65 20 74 6f 20 64 69 72 65 63 74 6c uses.the.`pg'.package.to.directl
a5c0 79 20 73 70 65 61 6b 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 69 73 0a 3b y.speak.to.the.database...This.;
a5e0 3b 20 6c 69 62 72 61 72 79 20 72 65 71 75 69 72 65 73 20 61 74 20 6c 65 61 73 74 20 45 6d 61 63 ;.library.requires.at.least.Emac
a600 73 20 32 38 2e 31 2e 0a 0a 3b 3b 20 28 46 6f 72 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20 s.28.1...;;.(For.an.alternative.
a620 62 61 63 6b 2d 65 6e 64 20 66 6f 72 20 50 6f 73 74 67 72 65 53 51 4c 2c 20 73 65 65 20 60 65 6d back-end.for.PostgreSQL,.see.`em
a640 61 63 73 71 6c 2d 70 73 71 6c 27 2e 29 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 acsql-psql'.)..;;;.Code:..(requi
a660 72 65 20 27 65 6d 61 63 73 71 6c 29 0a 0a 28 69 66 20 28 3e 3d 20 65 6d 61 63 73 2d 6d 61 6a 6f re.'emacsql)..(if.(>=.emacs-majo
a680 72 2d 76 65 72 73 69 6f 6e 20 32 38 29 0a 20 20 20 20 28 72 65 71 75 69 72 65 20 27 70 67 20 6e r-version.28).....(require.'pg.n
a6a0 69 6c 20 74 29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 65 6d 61 63 73 71 6c 2d 70 67 2e 65 6c 20 il.t)...(message."emacsql-pg.el.
a6c0 72 65 71 75 69 72 65 73 20 45 6d 61 63 73 20 32 38 2e 31 20 6f 72 20 6c 61 74 65 72 22 29 29 0a requires.Emacs.28.1.or.later")).
a6e0 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 70 67 2d 63 6f 6e 6e 65 63 74 20 22 70 67 (declare-function.pg-connect."pg
a700 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 20 64 62 6e 61 6d 65 20 75 73 65 "...................(.dbname.use
a720 72 20 26 6f 70 74 69 6f 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r.&optional.....................
a740 28 70 61 73 73 77 6f 72 64 20 22 22 29 20 28 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 22 29 (password."").(host."localhost")
a760 20 28 70 6f 72 74 20 35 34 33 32 29 20 28 74 6c 73 20 6e 69 6c 29 29 29 0a 28 64 65 63 6c 61 72 .(port.5432).(tls.nil))).(declar
a780 65 2d 66 75 6e 63 74 69 6f 6e 20 70 67 2d 64 69 73 63 6f 6e 6e 65 63 74 20 22 70 67 22 20 28 63 e-function.pg-disconnect."pg".(c
a7a0 6f 6e 29 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 70 67 2d 65 78 65 63 20 22 on)).(declare-function.pg-exec."
a7c0 70 67 22 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 26 72 65 73 74 20 61 72 67 73 29 29 0a 28 64 65 pg".(connection.&rest.args)).(de
a7e0 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 70 67 2d 72 65 73 75 6c 74 20 22 70 67 22 20 28 72 clare-function.pg-result."pg".(r
a800 65 73 75 6c 74 20 77 68 61 74 20 26 72 65 73 74 20 61 72 67 29 29 0a 0a 28 64 65 66 63 6c 61 73 esult.what.&rest.arg))..(defclas
a820 73 20 65 6d 61 63 73 71 6c 2d 70 67 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 65 6d 61 63 73 71 6c s.emacsql-pg-connection.(emacsql
a840 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 28 28 70 67 63 6f 6e 20 3a 72 65 61 64 65 72 20 65 -connection)...((pgcon.:reader.e
a860 6d 61 63 73 71 6c 2d 70 67 2d 70 67 63 6f 6e 20 3a 69 6e 69 74 61 72 67 20 3a 70 67 63 6f 6e 29 macsql-pg-pgcon.:initarg.:pgcon)
a880 0a 20 20 20 28 64 62 6e 61 6d 65 20 3a 72 65 61 64 65 72 20 65 6d 61 63 73 71 6c 2d 70 67 2d 64 ....(dbname.:reader.emacsql-pg-d
a8a0 62 6e 61 6d 65 20 3a 69 6e 69 74 61 72 67 20 3a 64 62 6e 61 6d 65 29 0a 20 20 20 28 72 65 73 75 bname.:initarg.:dbname)....(resu
a8c0 6c 74 20 3a 61 63 63 65 73 73 6f 72 20 65 6d 61 63 73 71 6c 2d 70 67 2d 72 65 73 75 6c 74 29 0a lt.:accessor.emacsql-pg-result).
a8e0 20 20 20 28 74 79 70 65 73 20 3a 61 6c 6c 6f 63 61 74 69 6f 6e 20 3a 63 6c 61 73 73 0a 20 20 20 ...(types.:allocation.:class....
a900 20 20 20 20 20 20 20 3a 72 65 61 64 65 72 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 73 0a 20 20 20 .......:reader.emacsql-types....
a920 20 20 20 20 20 20 20 3a 69 6e 69 74 66 6f 72 6d 20 27 28 28 69 6e 74 65 67 65 72 20 22 42 49 47 .......:initform.'((integer."BIG
a940 49 4e 54 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6c 6f INT").......................(flo
a960 61 74 20 22 44 4f 55 42 4c 45 20 50 52 45 43 49 53 49 4f 4e 22 29 0a 20 20 20 20 20 20 20 20 20 at."DOUBLE.PRECISION")..........
a980 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 62 6a 65 63 74 20 22 54 45 58 54 22 29 0a 20 20 20 .............(object."TEXT")....
a9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 69 6c 20 22 54 45 58 54 22 29 29 ...................(nil."TEXT"))
a9c0 29 29 0a 20 20 22 41 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20 50 6f 73 74 67 72 65 53 ))..."A.connection.to.a.PostgreS
a9e0 51 4c 20 64 61 74 61 62 61 73 65 20 76 69 61 20 70 67 2e 65 6c 2e 22 29 0a 0a 28 63 6c 2d 64 65 QL.database.via.pg.el.")..(cl-de
aa00 66 75 6e 20 65 6d 61 63 73 71 6c 2d 70 67 20 28 64 62 6e 61 6d 65 20 75 73 65 72 20 26 6b 65 79 fun.emacsql-pg.(dbname.user.&key
aa20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 ..............................(h
aa40 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 22 29 20 28 70 61 73 73 77 6f 72 64 20 22 22 29 20 28 ost."localhost").(password."").(
aa60 70 6f 72 74 20 35 34 33 32 29 20 64 65 62 75 67 29 0a 20 20 22 43 6f 6e 6e 65 63 74 20 74 6f 20 port.5432).debug)..."Connect.to.
aa80 61 20 50 6f 73 74 67 72 65 53 51 4c 20 73 65 72 76 65 72 20 75 73 69 6e 67 20 70 67 2e 65 6c 2e a.PostgreSQL.server.using.pg.el.
aaa0 22 0a 20 20 28 72 65 71 75 69 72 65 20 27 70 67 29 0a 20 20 28 6c 65 74 2a 20 28 28 70 67 63 6f "...(require.'pg)...(let*.((pgco
aac0 6e 20 28 70 67 2d 63 6f 6e 6e 65 63 74 20 64 62 6e 61 6d 65 20 75 73 65 72 20 70 61 73 73 77 6f n.(pg-connect.dbname.user.passwo
aae0 72 64 20 68 6f 73 74 20 70 6f 72 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 6e 65 63 74 rd.host.port))..........(connect
ab00 69 6f 6e 20 28 6d 61 6b 65 2d 69 6e 73 74 61 6e 63 65 20 27 65 6d 61 63 73 71 6c 2d 70 67 2d 63 ion.(make-instance.'emacsql-pg-c
ab20 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 onnection.......................
ab40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 61 6e 64 6c 65 20 28 61 6e 64 20 28 66 62 6f 75 ..............:handle.(and.(fbou
ab60 6e 64 70 20 27 70 67 63 6f 6e 2d 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ndp.'pgcon-process).............
ab80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
aba0 20 20 20 20 20 28 70 67 63 6f 6e 2d 70 72 6f 63 65 73 73 20 70 67 63 6f 6e 29 29 0a 20 20 20 20 .....(pgcon-process.pgcon)).....
abc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
abe0 3a 70 67 63 6f 6e 20 70 67 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :pgcon.pgcon....................
ac00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 62 6e 61 6d 65 20 64 62 6e 61 6d 65 29 .................:dbname.dbname)
ac20 29 29 0a 20 20 20 20 28 77 68 65 6e 20 64 65 62 75 67 20 28 65 6d 61 63 73 71 6c 2d 65 6e 61 62 )).....(when.debug.(emacsql-enab
ac40 6c 65 2d 64 65 62 75 67 67 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 20 20 28 65 le-debugging.connection)).....(e
ac60 6d 61 63 73 71 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 5b 3a 73 65 74 20 28 3d 20 64 65 66 61 75 macsql.connection.[:set.(=.defau
ac80 6c 74 2d 74 72 61 6e 73 61 63 74 69 6f 6e 2d 69 73 6f 6c 61 74 69 6f 6e 20 27 53 45 52 49 41 4c lt-transaction-isolation.'SERIAL
aca0 49 5a 41 42 4c 45 29 5d 29 0a 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 20 IZABLE)]).....(emacsql-register.
acc0 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 connection)))..(cl-defmethod.ema
ace0 63 73 71 6c 2d 63 6c 6f 73 65 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d csql-close.((connection.emacsql-
ad00 70 67 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 pg-connection))...(ignore-errors
ad20 20 28 70 67 2d 64 69 73 63 6f 6e 6e 65 63 74 20 28 65 6d 61 63 73 71 6c 2d 70 67 2d 70 67 63 6f .(pg-disconnect.(emacsql-pg-pgco
ad40 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 n.connection))))..(cl-defmethod.
ad60 65 6d 61 63 73 71 6c 2d 73 65 6e 64 2d 6d 65 73 73 61 67 65 20 28 28 63 6f 6e 6e 65 63 74 69 6f emacsql-send-message.((connectio
ad80 6e 20 65 6d 61 63 73 71 6c 2d 70 67 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 6d 65 73 73 61 67 65 n.emacsql-pg-connection).message
ada0 29 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 6f 72 0a 20 20 20 20 20 20 )...(condition-case.error.......
adc0 28 73 65 74 66 20 28 65 6d 61 63 73 71 6c 2d 70 67 2d 72 65 73 75 6c 74 20 63 6f 6e 6e 65 63 74 (setf.(emacsql-pg-result.connect
ade0 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 67 2d 65 78 65 63 20 28 65 6d 61 63 73 ion).............(pg-exec.(emacs
ae00 71 6c 2d 70 67 2d 70 67 63 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 6d 65 73 73 61 67 65 29 ql-pg-pgcon.connection).message)
ae20 29 0a 20 20 20 20 28 65 72 72 6f 72 20 28 73 69 67 6e 61 6c 20 27 65 6d 61 63 73 71 6c 2d 65 72 ).....(error.(signal.'emacsql-er
ae40 72 6f 72 20 65 72 72 6f 72 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 ror.error))))..(cl-defmethod.ema
ae60 63 73 71 6c 2d 77 61 69 74 69 6e 67 2d 70 20 28 28 5f 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 csql-waiting-p.((_connection.ema
ae80 63 73 71 6c 2d 70 67 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 3b 3b 20 70 67 2d 65 78 65 csql-pg-connection))...;;.pg-exe
aea0 63 20 77 69 6c 6c 20 62 6c 6f 63 6b 0a 20 20 74 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 c.will.block...t)..(cl-defmethod
aec0 20 65 6d 61 63 73 71 6c 2d 70 61 72 73 65 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 .emacsql-parse.((connection.emac
aee0 73 71 6c 2d 70 67 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 28 6c 65 74 20 28 28 74 75 70 sql-pg-connection))...(let.((tup
af00 6c 65 73 20 28 70 67 2d 72 65 73 75 6c 74 20 28 65 6d 61 63 73 71 6c 2d 70 67 2d 72 65 73 75 6c les.(pg-result.(emacsql-pg-resul
af20 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 3a 74 75 70 6c 65 73 29 29 29 0a 20 20 20 20 28 63 6c t.connection).:tuples))).....(cl
af40 2d 6c 6f 6f 70 20 66 6f 72 20 74 75 70 6c 65 20 69 6e 20 74 75 70 6c 65 73 20 63 6f 6c 6c 65 63 -loop.for.tuple.in.tuples.collec
af60 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 76 61 6c 75 t..............(cl-loop.for.valu
af80 65 20 69 6e 20 74 75 70 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.in.tuple......................
afa0 20 77 68 65 6e 20 28 73 74 72 69 6e 67 70 20 76 61 6c 75 65 29 20 63 6f 6c 6c 65 63 74 20 28 72 .when.(stringp.value).collect.(r
afc0 65 61 64 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ead.value)......................
afe0 20 65 6c 73 65 20 63 6f 6c 6c 65 63 74 20 76 61 6c 75 65 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 .else.collect.value))))..(provid
b000 65 20 27 65 6d 61 63 73 71 6c 2d 70 67 29 0a 0a 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 70 67 2e 65 e.'emacsql-pg)..;;;.emacsql-pg.e
b020 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 l.ends.here.....................
b040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b200 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 52 45 41 44 4d 45 2e 6d 64 00 00 00 00 00 00 00 00 00 emacsql-4.3.1/README.md.........
b220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
b280 30 30 33 34 32 36 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 30 37 33 00 20 30 00 00 00 0034264.00000000000.013073..0...
b2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b300 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
b320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
b340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b400 23 20 45 6d 61 63 53 51 4c 0a 0a 45 6d 61 63 53 51 4c 20 69 73 20 61 20 68 69 67 68 2d 6c 65 76 #.EmacSQL..EmacSQL.is.a.high-lev
b420 65 6c 20 45 6d 61 63 73 20 4c 69 73 70 20 66 72 6f 6e 74 2d 65 6e 64 20 66 6f 72 20 53 51 4c 69 el.Emacs.Lisp.front-end.for.SQLi
b440 74 65 2e 0a 0a 50 6f 73 74 67 72 65 53 51 4c 20 61 6e 64 20 4d 79 53 51 4c 20 61 72 65 20 61 6c te...PostgreSQL.and.MySQL.are.al
b460 73 6f 20 73 75 70 70 6f 72 74 65 64 2c 20 62 75 74 20 75 73 65 20 6f 66 20 74 68 65 73 65 20 63 so.supported,.but.use.of.these.c
b480 6f 6e 6e 65 63 74 6f 72 73 0a 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 0a 0a 41 onnectors.is.not.recommended...A
b4a0 6e 79 20 5b 72 65 61 64 61 62 6c 65 20 6c 69 73 70 20 76 61 6c 75 65 5d 5b 72 65 61 64 61 62 6c ny.[readable.lisp.value][readabl
b4c0 65 5d 20 63 61 6e 20 62 65 20 73 74 6f 72 65 64 20 61 73 20 61 20 76 61 6c 75 65 20 69 6e 0a 45 e].can.be.stored.as.a.value.in.E
b4e0 6d 61 63 53 51 4c 2c 20 69 6e 63 6c 75 64 69 6e 67 20 6e 75 6d 62 65 72 73 2c 20 73 74 72 69 6e macSQL,.including.numbers,.strin
b500 67 73 2c 20 73 79 6d 62 6f 6c 73 2c 20 6c 69 73 74 73 2c 20 76 65 63 74 6f 72 73 2c 20 61 6e 64 gs,.symbols,.lists,.vectors,.and
b520 0a 63 6c 6f 73 75 72 65 73 2e 20 45 6d 61 63 53 51 4c 20 68 61 73 20 6e 6f 20 63 6f 6e 63 65 70 .closures..EmacSQL.has.no.concep
b540 74 20 6f 66 20 22 54 45 58 54 22 20 76 61 6c 75 65 73 3b 20 69 74 27 73 20 61 6c 6c 20 6a 75 73 t.of."TEXT".values;.it's.all.jus
b560 74 20 6c 69 73 70 0a 6f 62 6a 65 63 74 73 2e 20 54 68 65 20 6c 69 73 70 20 6f 62 6a 65 63 74 20 t.lisp.objects..The.lisp.object.
b580 60 6e 69 6c 60 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 31 3a 31 20 77 69 74 68 20 60 4e 55 4c 4c `nil`.corresponds.1:1.with.`NULL
b5a0 60 20 69 6e 20 74 68 65 0a 64 61 74 61 62 61 73 65 2e 0a 0a 52 65 71 75 69 72 65 73 20 45 6d 61 `.in.the.database...Requires.Ema
b5c0 63 73 20 32 36 20 6f 72 20 6c 61 74 65 72 2e 0a 0a 5b 21 5b 43 6f 6d 70 69 6c 65 5d 28 68 74 74 cs.26.or.later...[![Compile](htt
b5e0 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 2f 65 6d 61 63 73 71 6c 2f 61 63 ps://github.com/magit/emacsql/ac
b600 74 69 6f 6e 73 2f 77 6f 72 6b 66 6c 6f 77 73 2f 63 6f 6d 70 69 6c 65 2e 79 6d 6c 2f 62 61 64 67 tions/workflows/compile.yml/badg
b620 65 2e 73 76 67 29 5d 28 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 e.svg)](https://github.com/magit
b640 2f 65 6d 61 63 73 71 6c 2f 61 63 74 69 6f 6e 73 2f 77 6f 72 6b 66 6c 6f 77 73 2f 63 6f 6d 70 69 /emacsql/actions/workflows/compi
b660 6c 65 2e 79 6d 6c 29 0a 5b 21 5b 54 65 73 74 5d 28 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e le.yml).[![Test](https://github.
b680 63 6f 6d 2f 6d 61 67 69 74 2f 65 6d 61 63 73 71 6c 2f 61 63 74 69 6f 6e 73 2f 77 6f 72 6b 66 6c com/magit/emacsql/actions/workfl
b6a0 6f 77 73 2f 74 65 73 74 2e 79 6d 6c 2f 62 61 64 67 65 2e 73 76 67 29 5d 28 68 74 74 70 73 3a 2f ows/test.yml/badge.svg)](https:/
b6c0 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 2f 65 6d 61 63 73 71 6c 2f 61 63 74 69 6f 6e /github.com/magit/emacsql/action
b6e0 73 2f 77 6f 72 6b 66 6c 6f 77 73 2f 74 65 73 74 2e 79 6d 6c 29 0a 5b 21 5b 4e 6f 6e 47 4e 55 20 s/workflows/test.yml).[![NonGNU.
b700 45 4c 50 41 5d 28 68 74 74 70 73 3a 2f 2f 65 6d 61 63 73 61 69 72 2e 6d 65 2f 61 73 73 65 74 73 ELPA](https://emacsair.me/assets
b720 2f 62 61 64 67 65 73 2f 6e 6f 6e 67 6e 75 2d 65 6c 70 61 2e 73 76 67 29 5d 28 68 74 74 70 73 3a /badges/nongnu-elpa.svg)](https:
b740 2f 2f 65 6c 70 61 2e 6e 6f 6e 67 6e 75 2e 6f 72 67 2f 6e 6f 6e 67 6e 75 2d 64 65 76 65 6c 2f 65 //elpa.nongnu.org/nongnu-devel/e
b760 6d 61 63 73 71 6c 2e 68 74 6d 6c 29 0a 5b 21 5b 4d 45 4c 50 41 20 53 74 61 62 6c 65 5d 28 68 74 macsql.html).[![MELPA.Stable](ht
b780 74 70 73 3a 2f 2f 73 74 61 62 6c 65 2e 6d 65 6c 70 61 2e 6f 72 67 2f 70 61 63 6b 61 67 65 73 2f tps://stable.melpa.org/packages/
b7a0 65 6d 61 63 73 71 6c 2d 62 61 64 67 65 2e 73 76 67 29 5d 28 68 74 74 70 73 3a 2f 2f 73 74 61 62 emacsql-badge.svg)](https://stab
b7c0 6c 65 2e 6d 65 6c 70 61 2e 6f 72 67 2f 23 2f 65 6d 61 63 73 71 6c 29 0a 5b 21 5b 4d 45 4c 50 41 le.melpa.org/#/emacsql).[![MELPA
b7e0 5d 28 68 74 74 70 73 3a 2f 2f 6d 65 6c 70 61 2e 6f 72 67 2f 70 61 63 6b 61 67 65 73 2f 65 6d 61 ](https://melpa.org/packages/ema
b800 63 73 71 6c 2d 62 61 64 67 65 2e 73 76 67 29 5d 28 68 74 74 70 73 3a 2f 2f 6d 65 6c 70 61 2e 6f csql-badge.svg)](https://melpa.o
b820 72 67 2f 23 2f 65 6d 61 63 73 71 6c 29 0a 0a 23 23 23 20 46 41 51 0a 23 23 23 23 20 57 68 79 20 rg/#/emacsql)..###.FAQ.####.Why.
b840 61 72 65 20 61 6c 6c 20 76 61 6c 75 65 73 20 73 74 6f 72 65 64 20 61 73 20 73 74 72 69 6e 67 73 are.all.values.stored.as.strings
b860 3f 0a 0a 45 6d 61 63 53 51 4c 20 69 73 20 6e 6f 74 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 69 6e ?..EmacSQL.is.not.intended.to.in
b880 74 65 72 61 63 74 20 77 69 74 68 20 61 72 62 69 74 72 61 72 79 20 64 61 74 61 62 61 73 65 73 2c teract.with.arbitrary.databases,
b8a0 20 62 75 74 20 74 6f 0a 62 65 20 61 6e 20 41 43 49 44 2d 63 6f 6d 70 6c 69 61 6e 74 20 64 61 74 .but.to.be.an.ACID-compliant.dat
b8c0 61 62 61 73 65 20 66 6f 72 20 45 6d 61 63 73 20 65 78 74 65 6e 73 69 6f 6e 73 2e 20 20 54 68 69 abase.for.Emacs.extensions...Thi
b8e0 73 20 6d 65 61 6e 73 20 74 68 61 74 0a 45 6d 61 63 53 51 4c 20 63 61 6e 6e 6f 74 20 62 65 20 75 s.means.that.EmacSQL.cannot.be.u
b900 73 65 64 20 77 69 74 68 20 61 20 72 65 67 75 6c 61 72 20 53 51 4c 20 64 61 74 61 62 61 73 65 20 sed.with.a.regular.SQL.database.
b920 75 73 65 64 20 62 79 20 6f 74 68 65 72 0a 6e 6f 6e 2d 45 6d 61 63 73 20 63 6c 69 65 6e 74 73 2e used.by.other.non-Emacs.clients.
b940 0a 0a 41 6c 6c 20 64 61 74 61 62 61 73 65 20 76 61 6c 75 65 73 20 6d 75 73 74 20 62 65 20 73 2d ..All.database.values.must.be.s-
b960 65 78 70 72 65 73 73 69 6f 6e 73 2e 20 57 68 65 6e 20 45 6d 61 63 53 51 4c 20 73 74 6f 72 65 73 expressions..When.EmacSQL.stores
b980 20 61 0a 76 61 6c 75 65 20 e2 80 94 20 73 74 72 69 6e 67 2c 20 73 79 6d 62 6f 6c 2c 20 63 6f 6e .a.value.....string,.symbol,.con
b9a0 73 2c 20 65 74 63 2e 20 e2 80 94 20 69 74 20 69 73 20 70 72 69 6e 74 65 64 20 61 6e 64 20 77 72 s,.etc......it.is.printed.and.wr
b9c0 69 74 74 65 6e 20 74 6f 0a 74 68 65 20 64 61 74 61 62 61 73 65 20 69 6e 20 69 74 73 20 70 72 69 itten.to.the.database.in.its.pri
b9e0 6e 74 65 64 20 66 6f 72 6d 2e 20 53 74 72 69 6e 67 73 20 61 72 65 20 77 72 61 70 70 65 64 20 69 nted.form..Strings.are.wrapped.i
ba00 6e 20 71 75 6f 74 65 73 0a 61 6e 64 20 65 73 63 61 70 65 64 20 61 73 20 6e 65 63 65 73 73 61 72 n.quotes.and.escaped.as.necessar
ba20 79 2e 20 54 68 61 74 20 6d 65 61 6e 73 20 22 62 61 72 65 22 20 73 79 6d 62 6f 6c 73 20 69 6e 20 y..That.means."bare".symbols.in.
ba40 74 68 65 20 64 61 74 61 62 61 73 65 0a 67 65 6e 65 72 61 6c 6c 79 20 6c 6f 6f 6b 20 6c 69 6b 65 the.database.generally.look.like
ba60 20 73 74 72 69 6e 67 73 2e 20 54 68 65 20 6f 6e 6c 79 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20 .strings..The.only.exception.is.
ba80 60 6e 69 6c 60 2c 20 77 68 69 63 68 20 69 73 0a 73 74 6f 72 65 64 20 61 73 20 60 4e 55 4c 4c 60 `nil`,.which.is.stored.as.`NULL`
baa0 2e 0a 0a 23 23 23 23 20 57 69 6c 6c 20 45 6d 61 63 53 51 4c 20 65 76 65 72 20 73 75 70 70 6f 72 ...####.Will.EmacSQL.ever.suppor
bac0 74 20 61 72 62 69 74 72 61 72 79 20 64 61 74 61 62 61 73 65 73 3f 0a 0a 54 68 65 20 61 75 74 68 t.arbitrary.databases?..The.auth
bae0 6f 72 20 6f 66 20 45 6d 61 63 53 51 4c 20 5b 74 68 69 6e 6b 73 5d 5b 6d 69 73 74 61 6b 65 5d 20 or.of.EmacSQL.[thinks][mistake].
bb00 74 68 61 74 20 69 74 20 77 61 73 20 70 72 6f 62 61 62 6c 79 20 61 0a 64 65 73 69 67 6e 20 6d 69 that.it.was.probably.a.design.mi
bb20 73 74 61 6b 65 20 74 6f 20 72 65 73 74 72 69 63 74 20 69 74 20 74 6f 20 45 6d 61 63 73 20 62 79 stake.to.restrict.it.to.Emacs.by
bb40 20 73 74 6f 72 69 6e 67 20 6f 6e 6c 79 20 70 72 69 6e 74 65 64 20 76 61 6c 75 65 73 2c 0a 61 6e .storing.only.printed.values,.an
bb60 64 20 74 68 61 74 20 69 74 20 77 6f 75 6c 64 20 62 65 20 61 20 6c 6f 74 20 6d 6f 72 65 20 75 73 d.that.it.would.be.a.lot.more.us
bb80 65 66 75 6c 20 69 66 20 69 74 20 6a 75 73 74 20 68 61 6e 64 6c 65 64 20 70 72 69 6d 69 74 69 76 eful.if.it.just.handled.primitiv
bba0 65 0a 64 61 74 61 62 61 73 65 20 74 79 70 65 73 2e 0a 0a 48 6f 77 65 76 65 72 2c 20 45 6d 61 63 e.database.types...However,.Emac
bbc0 53 51 4c 20 69 73 20 69 6e 20 6d 61 69 6e 74 65 6e 61 6e 63 65 20 6d 6f 64 65 20 61 6e 64 20 74 SQL.is.in.maintenance.mode.and.t
bbe0 68 65 72 65 20 61 72 65 20 6e 6f 20 70 6c 61 6e 73 20 74 6f 0a 6d 61 6b 65 20 61 6e 79 20 66 75 here.are.no.plans.to.make.any.fu
bc00 6e 64 61 6d 65 6e 74 61 6c 20 63 68 61 6e 67 65 73 2c 20 6e 6f 74 20 6c 65 61 73 74 20 62 65 63 ndamental.changes,.not.least.bec
bc20 61 75 73 65 20 74 68 65 79 20 77 6f 75 6c 64 20 62 72 65 61 6b 20 61 6c 6c 0a 65 78 69 73 74 69 ause.they.would.break.all.existi
bc40 6e 67 20 70 61 63 6b 61 67 65 73 20 61 6e 64 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20 72 ng.packages.and.databases.that.r
bc60 65 6c 79 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 45 6d 61 63 53 51 4c 0a 62 65 68 61 76 ely.on.the.current.EmacSQL.behav
bc80 69 6f 72 2e 0a 0a 23 23 23 20 57 69 6e 64 6f 77 73 20 49 73 73 75 65 73 0a 0a 45 6d 61 63 73 20 ior...###.Windows.Issues..Emacs.
bca0 60 73 74 61 72 74 2d 70 72 6f 63 65 73 73 2d 73 68 65 6c 6c 2d 63 6f 6d 6d 61 6e 64 60 20 66 75 `start-process-shell-command`.fu
bcc0 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 0a 57 69 6e 64 6f nction.is.not.supported.on.Windo
bce0 77 73 2e 20 53 69 6e 63 65 20 62 6f 74 68 20 60 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 60 20 61 ws..Since.both.`emacsql-mysql`.a
bd00 6e 64 20 60 65 6d 61 63 73 71 6c 2d 70 73 71 6c 60 20 72 65 6c 79 20 6f 6e 20 74 68 69 73 0a 66 nd.`emacsql-psql`.rely.on.this.f
bd20 75 6e 63 74 69 6f 6e 2c 20 6e 65 69 74 68 65 72 20 6f 66 20 74 68 65 73 65 20 63 6f 6e 6e 65 63 unction,.neither.of.these.connec
bd40 74 69 6f 6e 20 74 79 70 65 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 tion.types.are.supported.on.Wind
bd60 6f 77 73 2e 0a 0a 23 23 20 45 78 61 6d 70 6c 65 20 55 73 61 67 65 0a 0a 60 60 60 65 6c 0a 28 64 ows...##.Example.Usage..```el.(d
bd80 65 66 76 61 72 20 64 62 20 28 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6f 70 65 6e 20 22 7e efvar.db.(emacsql-sqlite-open."~
bda0 2f 63 6f 6d 70 61 6e 79 2e 64 62 22 29 29 0a 0a 3b 3b 20 43 72 65 61 74 65 20 61 20 74 61 62 6c /company.db"))..;;.Create.a.tabl
bdc0 65 2e 20 54 61 62 6c 65 20 61 6e 64 20 63 6f 6c 75 6d 6e 20 69 64 65 6e 74 69 66 69 65 72 73 20 e..Table.and.column.identifiers.
bde0 61 72 65 20 73 79 6d 62 6f 6c 73 2e 0a 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 63 72 65 61 74 are.symbols..(emacsql.db.[:creat
be00 65 2d 74 61 62 6c 65 20 70 65 6f 70 6c 65 20 28 5b 6e 61 6d 65 20 69 64 20 73 61 6c 61 72 79 5d e-table.people.([name.id.salary]
be20 29 5d 29 0a 0a 3b 3b 20 4f 72 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 70 72 6f 76 69 64 65 20 63 6f )])..;;.Or.optionally.provide.co
be40 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a lumn.constraints..(emacsql.db.[:
be60 63 72 65 61 74 65 2d 74 61 62 6c 65 20 70 65 6f 70 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 create-table.people.............
be80 20 28 5b 6e 61 6d 65 20 28 69 64 20 69 6e 74 65 67 65 72 20 3a 70 72 69 6d 61 72 79 2d 6b 65 79 .([name.(id.integer.:primary-key
bea0 29 20 28 73 61 6c 61 72 79 20 66 6c 6f 61 74 29 5d 29 5d 29 0a 0a 3b 3b 20 49 6e 73 65 72 74 20 ).(salary.float)])])..;;.Insert.
bec0 73 6f 6d 65 20 64 61 74 61 3a 0a 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 69 6e 73 65 72 74 20 some.data:.(emacsql.db.[:insert.
bee0 3a 69 6e 74 6f 20 70 65 6f 70 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 76 61 6c 75 65 :into.people..............:value
bf00 73 20 28 5b 22 4a 65 66 66 22 20 31 30 30 30 20 36 30 30 30 30 2e 30 5d 20 5b 22 53 75 73 61 6e s.(["Jeff".1000.60000.0].["Susan
bf20 22 20 31 30 30 31 20 36 34 30 30 30 2e 30 5d 29 5d 29 0a 0a 3b 3b 20 51 75 65 72 79 20 74 68 65 ".1001.64000.0])])..;;.Query.the
bf40 20 64 61 74 61 62 61 73 65 20 66 6f 72 20 72 65 73 75 6c 74 73 3a 0a 28 65 6d 61 63 73 71 6c 20 .database.for.results:.(emacsql.
bf60 64 62 20 5b 3a 73 65 6c 65 63 74 20 5b 6e 61 6d 65 20 69 64 5d 0a 20 20 20 20 20 20 20 20 20 20 db.[:select.[name.id]...........
bf80 20 20 20 3a 66 72 6f 6d 20 70 65 6f 70 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 77 68 ...:from.people..............:wh
bfa0 65 72 65 20 28 3e 20 73 61 6c 61 72 79 20 36 32 30 30 30 29 5d 29 0a 3b 3b 20 3d 3e 20 28 28 22 ere.(>.salary.62000)]).;;.=>.(("
bfc0 53 75 73 61 6e 22 20 31 30 30 31 29 29 0a 0a 3b 3b 20 51 75 65 72 69 65 73 20 63 61 6e 20 62 65 Susan".1001))..;;.Queries.can.be
bfe0 20 74 65 6d 70 6c 61 74 65 73 2c 20 75 73 69 6e 67 20 24 31 2c 20 24 32 2c 20 65 74 63 2e 3a 0a .templates,.using.$1,.$2,.etc.:.
c000 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 73 65 6c 65 63 74 20 5b 6e 61 6d 65 20 69 64 5d 0a 20 (emacsql.db.[:select.[name.id]..
c020 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 72 6f 6d 20 70 65 6f 70 6c 65 0a 20 20 20 20 20 20 20 ............:from.people........
c040 20 20 20 20 20 20 3a 77 68 65 72 65 20 28 3e 20 73 61 6c 61 72 79 20 24 73 31 29 5d 0a 20 20 20 ......:where.(>.salary.$s1)]....
c060 20 20 20 20 20 20 35 30 30 30 30 29 0a 3b 3b 20 3d 3e 20 28 28 22 4a 65 66 66 22 20 31 30 30 30 ......50000).;;.=>.(("Jeff".1000
c080 29 20 28 22 53 75 73 61 6e 22 20 31 30 30 31 29 29 0a 60 60 60 0a 0a 57 68 65 6e 20 65 64 69 74 ).("Susan".1001)).```..When.edit
c0a0 69 6e 67 20 74 68 65 73 65 20 70 72 65 70 61 72 65 64 20 53 51 4c 20 73 2d 65 78 70 72 65 73 73 ing.these.prepared.SQL.s-express
c0c0 69 6f 6e 20 73 74 61 74 65 6d 65 6e 74 73 2c 20 74 68 65 20 60 4d 2d 78 0a 65 6d 61 63 73 71 6c ion.statements,.the.`M-x.emacsql
c0e0 2d 73 68 6f 77 2d 6c 61 73 74 2d 73 71 6c 60 20 63 6f 6d 6d 61 6e 64 20 28 74 68 69 6e 6b 20 60 -show-last-sql`.command.(think.`
c100 65 76 61 6c 2d 6c 61 73 74 2d 73 65 78 70 60 29 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 0a 73 eval-last-sexp`).is.useful.for.s
c120 65 65 69 6e 67 20 77 68 61 74 20 74 68 65 20 61 63 74 75 61 6c 20 53 51 4c 20 65 78 70 72 65 73 eeing.what.the.actual.SQL.expres
c140 73 69 6f 6e 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 2e 0a sion.will.become.when.compiled..
c160 0a 23 23 20 53 63 68 65 6d 61 0a 0a 41 20 74 61 62 6c 65 20 73 63 68 65 6d 61 20 69 73 20 61 20 .##.Schema..A.table.schema.is.a.
c180 6c 69 73 74 20 77 68 6f 73 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 69 73 20 61 20 76 65 list.whose.first.element.is.a.ve
c1a0 63 74 6f 72 20 6f 66 20 63 6f 6c 75 6d 6e 0a 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 2e 20 54 ctor.of.column.specifications..T
c1c0 68 65 20 72 65 73 74 20 6f 66 20 74 68 65 20 6c 69 73 74 20 73 70 65 63 69 66 69 65 73 20 74 61 he.rest.of.the.list.specifies.ta
c1e0 62 6c 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 41 0a 63 6f 6c 75 6d 6e 20 69 64 65 6e 74 69 ble.constraints..A.column.identi
c200 66 69 65 72 20 69 73 20 61 20 73 79 6d 62 6f 6c 20 61 6e 64 20 61 20 63 6f 6c 75 6d 6e 27 73 20 fier.is.a.symbol.and.a.column's.
c220 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 63 61 6e 20 65 69 74 68 65 72 0a 62 65 20 6a 75 73 74 specification.can.either.be.just
c240 20 74 68 69 73 20 73 79 6d 62 6f 6c 20 6f 72 20 69 74 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 63 .this.symbol.or.it.can.include.c
c260 6f 6e 73 74 72 61 69 6e 74 73 20 61 73 20 61 20 6c 69 73 74 2e 20 42 65 63 61 75 73 65 0a 45 6d onstraints.as.a.list..Because.Em
c280 61 63 53 51 4c 20 73 74 6f 72 65 73 20 65 6e 74 69 72 65 20 6c 69 73 70 20 6f 62 6a 65 63 74 73 acSQL.stores.entire.lisp.objects
c2a0 20 61 73 20 76 61 6c 75 65 73 2c 20 74 68 65 20 6f 6e 6c 79 20 72 65 6c 65 76 61 6e 74 20 28 61 .as.values,.the.only.relevant.(a
c2c0 6e 64 0a 61 6c 6c 6f 77 65 64 29 20 74 79 70 65 73 20 61 72 65 20 60 69 6e 74 65 67 65 72 60 2c nd.allowed).types.are.`integer`,
c2e0 20 60 66 6c 6f 61 74 60 2c 20 61 6e 64 20 60 6f 62 6a 65 63 74 60 20 28 64 65 66 61 75 6c 74 29 .`float`,.and.`object`.(default)
c300 2e 0a 0a 20 20 20 20 28 5b 28 3c 63 6f 6c 75 6d 6e 3e 29 20 2e 2e 2e 5d 20 28 3c 74 61 62 6c 65 .......([(<column>)....].(<table
c320 2d 63 6f 6e 73 74 72 61 69 6e 74 3e 20 2e 2e 2e 29 20 2e 2e 2e 5d 29 0a 0a 44 61 73 68 65 73 20 -constraint>....)....])..Dashes.
c340 69 6e 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 72 65 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 in.identifiers.are.converted.int
c360 6f 20 75 6e 64 65 72 73 63 6f 72 65 73 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 0a 69 6e 74 6f o.underscores.when.compiled.into
c380 20 53 51 4c 2e 20 54 68 69 73 20 61 6c 6c 6f 77 73 20 66 6f 72 20 6c 69 73 70 2d 73 74 79 6c 65 .SQL..This.allows.for.lisp-style
c3a0 20 69 64 65 6e 74 69 66 69 65 72 73 20 74 6f 20 62 65 20 75 73 65 64 20 69 6e 20 53 51 4c 2e 0a .identifiers.to.be.used.in.SQL..
c3c0 43 6f 6e 73 74 72 61 69 6e 74 73 20 66 6f 6c 6c 6f 77 20 74 68 65 20 63 6f 6d 70 69 6c 61 74 69 Constraints.follow.the.compilati
c3e0 6f 6e 20 72 75 6c 65 73 20 62 65 6c 6f 77 2e 0a 0a 60 60 60 65 6c 0a 3b 3b 20 4e 6f 20 63 6f 6e on.rules.below...```el.;;.No.con
c400 73 74 72 61 69 6e 74 73 20 73 63 68 65 6d 61 20 77 69 74 68 20 66 6f 75 72 20 63 6f 6c 75 6d 6e straints.schema.with.four.column
c420 73 3a 0a 28 5b 6e 61 6d 65 20 69 64 20 62 75 69 6c 64 69 6e 67 20 72 6f 6f 6d 5d 29 0a 0a 3b 3b s:.([name.id.building.room])..;;
c440 20 41 64 64 20 73 6f 6d 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 3a 0a 28 5b .Add.some.column.constraints:.([
c460 28 6e 61 6d 65 20 3a 75 6e 69 71 75 65 29 20 28 69 64 20 69 6e 74 65 67 65 72 20 3a 70 72 69 6d (name.:unique).(id.integer.:prim
c480 61 72 79 2d 6b 65 79 29 20 62 75 69 6c 64 69 6e 67 20 72 6f 6f 6d 5d 29 0a 0a 3b 3b 20 41 64 64 ary-key).building.room])..;;.Add
c4a0 20 73 6f 6d 65 20 74 61 62 6c 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 3a 0a 28 5b 28 6e 61 6d 65 .some.table.constraints:.([(name
c4c0 20 3a 75 6e 69 71 75 65 29 20 28 69 64 20 69 6e 74 65 67 65 72 20 3a 70 72 69 6d 61 72 79 2d 6b .:unique).(id.integer.:primary-k
c4e0 65 79 29 20 62 75 69 6c 64 69 6e 67 20 72 6f 6f 6d 5d 0a 20 28 3a 75 6e 69 71 75 65 20 5b 62 75 ey).building.room]..(:unique.[bu
c500 69 6c 64 69 6e 67 20 72 6f 6f 6d 5d 29 0a 20 28 3a 63 68 65 63 6b 20 28 3e 20 69 64 20 30 29 29 ilding.room])..(:check.(>.id.0))
c520 29 0a 60 60 60 0a 0a 48 65 72 65 27 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 75 73 69 6e 67 20 66 ).```..Here's.an.example.using.f
c540 6f 72 65 69 67 6e 20 6b 65 79 73 2e 0a 0a 60 60 60 65 6c 0a 3b 3b 20 22 73 75 62 6a 65 63 74 73 oreign.keys...```el.;;."subjects
c560 22 20 74 61 62 6c 65 20 73 63 68 65 6d 61 0a 28 5b 28 69 64 20 69 6e 74 65 67 65 72 20 3a 70 72 ".table.schema.([(id.integer.:pr
c580 69 6d 61 72 79 2d 6b 65 79 29 20 73 75 62 6a 65 63 74 5d 29 0a 0a 3b 3b 20 22 74 61 67 22 20 74 imary-key).subject])..;;."tag".t
c5a0 61 62 6c 65 20 72 65 66 65 72 65 6e 63 65 73 20 73 75 62 6a 65 63 74 73 0a 28 5b 28 73 75 62 6a able.references.subjects.([(subj
c5c0 65 63 74 2d 69 64 20 69 6e 74 65 67 65 72 29 20 74 61 67 5d 0a 20 28 3a 66 6f 72 65 69 67 6e 2d ect-id.integer).tag]..(:foreign-
c5e0 6b 65 79 20 5b 73 75 62 6a 65 63 74 2d 69 64 5d 20 3a 72 65 66 65 72 65 6e 63 65 73 20 73 75 62 key.[subject-id].:references.sub
c600 6a 65 63 74 73 20 5b 69 64 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6f 6e 2d 64 65 jects.[id]................:on-de
c620 6c 65 74 65 20 3a 63 61 73 63 61 64 65 29 29 0a 60 60 60 0a 0a 46 6f 72 65 69 67 6e 20 6b 65 79 lete.:cascade)).```..Foreign.key
c640 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61 .constraints.are.enabled.by.defa
c660 75 6c 74 20 69 6e 20 45 6d 61 63 53 51 4c 2e 0a 0a 23 23 20 4f 70 65 72 61 74 6f 72 73 0a 0a 45 ult.in.EmacSQL...##.Operators..E
c680 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20 77 72 69 74 74 65 6e 20 6c 69 73 70 2d 73 74 79 6c xpressions.are.written.lisp-styl
c6a0 65 2c 20 77 69 74 68 20 74 68 65 20 6f 70 65 72 61 74 6f 72 20 66 69 72 73 74 2e 20 49 66 20 69 e,.with.the.operator.first..If.i
c6c0 74 0a 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 6e 20 6f 70 65 72 61 74 6f 72 20 45 6d 61 63 53 51 4c t.looks.like.an.operator.EmacSQL
c6e0 20 74 72 65 61 74 73 20 69 74 20 6c 69 6b 65 20 61 6e 20 6f 70 65 72 61 74 6f 72 2e 20 48 6f 77 .treats.it.like.an.operator..How
c700 65 76 65 72 2c 0a 73 65 76 65 72 61 6c 20 6f 70 65 72 61 74 6f 72 73 20 61 72 65 20 73 70 65 63 ever,.several.operators.are.spec
c720 69 61 6c 2e 0a 0a 20 20 20 20 3c 3d 20 20 20 20 3e 3d 20 20 20 20 66 75 6e 63 61 6c 6c 20 20 20 ial.......<=....>=....funcall...
c740 20 71 75 6f 74 65 0a 0a 54 68 65 20 60 3c 3d 60 20 61 6e 64 20 60 3e 3d 60 20 6f 70 65 72 61 74 .quote..The.`<=`.and.`>=`.operat
c760 6f 72 73 20 61 63 63 65 70 74 20 32 20 6f 72 20 33 20 6f 70 65 72 61 6e 64 73 2c 20 74 72 61 6e ors.accept.2.or.3.operands,.tran
c780 73 66 6f 72 6d 69 6e 67 20 69 6e 74 6f 0a 61 20 53 51 4c 20 60 5f 20 42 45 54 57 45 45 4e 20 5f sforming.into.a.SQL.`_.BETWEEN._
c7a0 20 41 4e 44 20 5f 60 20 6f 70 65 72 61 74 6f 72 20 61 73 20 61 70 70 72 6f 70 72 69 61 74 65 2e .AND._`.operator.as.appropriate.
c7c0 0a 0a 46 6f 72 20 66 75 6e 63 74 69 6f 6e 2d 6c 69 6b 65 20 22 6f 70 65 72 61 74 6f 72 73 22 20 ..For.function-like."operators".
c7e0 6c 69 6b 65 20 60 63 6f 75 6e 74 60 20 61 6e 64 20 60 6d 61 78 60 20 75 73 65 20 74 68 65 20 60 like.`count`.and.`max`.use.the.`
c800 66 75 6e 63 61 6c 6c 60 0a 22 6f 70 65 72 61 74 6f 72 2e 22 0a 0a 60 60 60 65 6c 0a 5b 3a 73 65 funcall`."operator."..```el.[:se
c820 6c 65 63 74 20 28 66 75 6e 63 61 6c 6c 20 6d 61 78 20 61 67 65 29 20 3a 66 72 6f 6d 20 70 65 6f lect.(funcall.max.age).:from.peo
c840 70 6c 65 5d 0a 60 60 60 0a 0a 57 69 74 68 20 60 67 6c 6f 62 60 20 61 6e 64 20 60 6c 69 6b 65 60 ple].```..With.`glob`.and.`like`
c860 20 53 51 4c 20 6f 70 65 72 61 74 6f 72 73 20 6b 65 65 70 20 69 6e 20 6d 69 6e 64 20 74 68 61 74 .SQL.operators.keep.in.mind.that
c880 20 74 68 65 79 27 72 65 0a 6d 61 74 63 68 69 6e 67 20 74 68 65 20 2a 70 72 69 6e 74 65 64 2a 20 .they're.matching.the.*printed*.
c8a0 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 73 65 20 76 61 6c 75 65 73 2c representations.of.these.values,
c8c0 20 65 76 65 6e 20 69 66 20 74 68 65 0a 76 61 6c 75 65 20 69 73 20 61 20 73 74 72 69 6e 67 2e 0a .even.if.the.value.is.a.string..
c8e0 0a 54 68 65 20 60 7c 7c 60 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f 70 65 72 61 74 6f 72 .The.`||`.concatenation.operator
c900 20 69 73 20 75 6e 73 75 70 70 6f 72 74 65 64 20 62 65 63 61 75 73 65 20 63 6f 6e 63 61 74 65 6e .is.unsupported.because.concaten
c920 61 74 69 6e 67 0a 70 72 69 6e 74 65 64 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 73 20 62 72 ating.printed.representations.br
c940 65 61 6b 73 20 61 6e 20 69 6d 70 6f 72 74 61 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 3a 20 61 6c eaks.an.important.constraint:.al
c960 6c 20 76 61 6c 75 65 73 20 6d 75 73 74 0a 72 65 6d 61 69 6e 20 72 65 61 64 61 62 6c 65 20 77 69 l.values.must.remain.readable.wi
c980 74 68 69 6e 20 53 51 4c 69 74 65 2e 0a 0a 23 23 20 51 75 6f 74 69 6e 67 0a 0a 49 6e 73 69 64 65 thin.SQLite...##.Quoting..Inside
c9a0 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 45 6d 61 63 53 51 4c 20 63 61 6e 6e 6f 74 20 74 65 6c .expressions,.EmacSQL.cannot.tel
c9c0 6c 20 74 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 73 79 6d 62 6f 6c 0a l.the.difference.between.symbol.
c9e0 6c 69 74 65 72 61 6c 73 20 61 6e 64 20 63 6f 6c 75 6d 6e 20 72 65 66 65 72 65 6e 63 65 73 2e 20 literals.and.column.references..
ca00 49 66 20 79 6f 75 27 72 65 20 74 61 6c 6b 69 6e 67 20 61 62 6f 75 74 20 74 68 65 20 73 79 6d 62 If.you're.talking.about.the.symb
ca20 6f 6c 0a 69 74 73 65 6c 66 2c 20 6a 75 73 74 20 71 75 6f 74 65 20 69 74 20 61 73 20 79 6f 75 20 ol.itself,.just.quote.it.as.you.
ca40 77 6f 75 6c 64 20 69 6e 20 6e 6f 72 6d 61 6c 20 45 6c 69 73 70 2e 20 4e 6f 74 65 20 74 68 61 74 would.in.normal.Elisp..Note.that
ca60 20 74 68 69 73 0a 64 6f 65 73 20 6e 6f 74 20 22 65 73 63 61 70 65 22 20 60 24 74 6e 60 20 70 61 .this.does.not."escape".`$tn`.pa
ca80 72 61 6d 65 74 65 72 20 73 79 6d 62 6f 6c 73 2e 0a 0a 60 60 60 65 6c 0a 28 65 6d 61 63 73 71 6c rameter.symbols...```el.(emacsql
caa0 20 64 62 20 5b 2e 2e 2e 20 3a 77 68 65 72 65 20 28 3d 20 63 61 74 65 67 6f 72 79 20 27 68 69 6b .db.[....:where.(=.category.'hik
cac0 69 6e 67 29 5d 29 0a 60 60 60 0a 0a 51 75 6f 74 69 6e 67 20 61 20 73 74 72 69 6e 67 20 6d 61 6b ing)]).```..Quoting.a.string.mak
cae0 65 73 20 45 6d 61 63 53 51 4c 20 68 61 6e 64 6c 65 20 69 74 20 61 73 20 61 20 22 72 61 77 20 73 es.EmacSQL.handle.it.as.a."raw.s
cb00 74 72 69 6e 67 2e 22 20 54 68 65 73 65 20 72 61 77 0a 73 74 72 69 6e 67 73 20 61 72 65 20 6e 6f tring.".These.raw.strings.are.no
cb20 74 20 70 72 69 6e 74 65 64 20 77 68 65 6e 20 62 65 69 6e 67 20 61 73 73 65 6d 62 6c 65 64 20 69 t.printed.when.being.assembled.i
cb40 6e 74 6f 20 61 20 71 75 65 72 79 2e 20 54 68 65 73 65 20 61 72 65 0a 69 6e 74 65 6e 64 65 64 20 nto.a.query..These.are.intended.
cb60 66 6f 72 20 75 73 65 20 69 6e 20 73 70 65 63 69 61 6c 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 for.use.in.special.circumstances
cb80 20 6c 69 6b 65 20 66 69 6c 65 6e 61 6d 65 73 20 28 60 41 54 54 41 43 48 60 29 20 6f 72 0a 70 61 .like.filenames.(`ATTACH`).or.pa
cba0 74 74 65 72 6e 20 6d 61 74 63 68 69 6e 67 20 28 60 4c 49 4b 45 60 29 2e 20 49 74 20 69 73 20 76 ttern.matching.(`LIKE`)..It.is.v
cbc0 69 74 61 6c 20 74 68 61 74 20 72 61 77 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e 6f 74 0a 72 65 ital.that.raw.strings.are.not.re
cbe0 74 75 72 6e 65 64 20 61 73 20 72 65 73 75 6c 74 73 2e 0a 0a 60 60 60 65 6c 0a 28 65 6d 61 63 73 turned.as.results...```el.(emacs
cc00 71 6c 20 64 62 20 5b 2e 2e 2e 20 3a 77 68 65 72 65 20 28 6c 69 6b 65 20 6e 61 6d 65 20 27 22 25 ql.db.[....:where.(like.name.'"%
cc20 66 6f 6f 25 22 29 5d 29 0a 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 61 74 74 61 63 68 20 27 22 foo%")]).(emacsql.db.[:attach.'"
cc40 2f 70 61 74 68 2f 74 6f 2f 66 6f 6f 2e 64 62 22 20 3a 61 73 20 66 6f 6f 5d 29 0a 60 60 60 0a 0a /path/to/foo.db".:as.foo]).```..
cc60 53 69 6e 63 65 20 74 65 6d 70 6c 61 74 65 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 63 6c 75 64 Since.template.parameters.includ
cc80 65 20 74 68 65 69 72 20 74 79 70 65 20 74 68 65 79 20 6e 65 76 65 72 20 6e 65 65 64 20 74 6f 20 e.their.type.they.never.need.to.
cca0 62 65 0a 71 75 6f 74 65 64 2e 0a 0a 23 23 20 50 72 65 70 61 72 65 64 20 53 74 61 74 65 6d 65 6e be.quoted...##.Prepared.Statemen
ccc0 74 73 0a 0a 54 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 69 6e 74 65 72 61 63 74 65 64 20 77 ts..The.database.is.interacted.w
cce0 69 74 68 20 76 69 61 20 70 72 65 70 61 72 65 64 20 53 51 4c 20 73 2d 65 78 70 72 65 73 73 69 6f ith.via.prepared.SQL.s-expressio
cd00 6e 0a 73 74 61 74 65 6d 65 6e 74 73 2e 20 59 6f 75 20 73 68 6f 75 6c 64 6e 27 74 20 6e 6f 72 6d n.statements..You.shouldn't.norm
cd20 61 6c 6c 79 20 62 65 20 63 6f 6e 63 61 74 65 6e 61 74 69 6e 67 20 73 74 72 69 6e 67 73 20 6f 6e ally.be.concatenating.strings.on
cd40 20 79 6f 75 72 0a 6f 77 6e 2e 20 28 41 6e 64 20 69 74 20 6c 65 61 76 65 73 20 6f 75 74 20 61 6e .your.own..(And.it.leaves.out.an
cd60 79 20 70 6f 73 73 69 62 69 6c 69 74 79 20 6f 66 20 61 20 53 51 4c 20 69 6e 6a 65 63 74 69 6f 6e y.possibility.of.a.SQL.injection
cd80 21 29 20 53 65 65 20 74 68 65 0a 22 55 73 61 67 65 22 20 73 65 63 74 69 6f 6e 20 61 62 6f 76 65 !).See.the."Usage".section.above
cda0 20 66 6f 72 20 65 78 61 6d 70 6c 65 73 2e 20 41 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 61 20 .for.examples..A.statement.is.a.
cdc0 76 65 63 74 6f 72 20 6f 66 0a 6b 65 79 77 6f 72 64 73 20 61 6e 64 20 6f 74 68 65 72 20 6c 69 73 vector.of.keywords.and.other.lis
cde0 70 20 6f 62 6a 65 63 74 2e 0a 0a 50 72 65 70 61 72 65 64 20 45 6d 61 63 53 51 4c 20 73 2d 65 78 p.object...Prepared.EmacSQL.s-ex
ce00 70 72 65 73 73 69 6f 6e 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 63 6f 6d 70 69 6c 65 64 pression.statements.are.compiled
ce20 20 69 6e 74 6f 20 53 51 4c 0a 73 74 61 74 65 6d 65 6e 74 73 2e 20 54 68 65 20 73 74 61 74 65 6d .into.SQL.statements..The.statem
ce40 65 6e 74 20 63 6f 6d 70 69 6c 65 72 20 69 73 20 6d 65 6d 6f 72 69 7a 65 64 20 73 6f 20 74 68 61 ent.compiler.is.memorized.so.tha
ce60 74 20 75 73 69 6e 67 20 74 68 65 20 73 61 6d 65 0a 73 74 61 74 65 6d 65 6e 74 20 6d 75 6c 74 69 t.using.the.same.statement.multi
ce80 70 6c 65 20 74 69 6d 65 73 20 69 73 20 66 61 73 74 2e 20 54 6f 20 61 73 73 69 73 74 20 69 6e 20 ple.times.is.fast..To.assist.in.
cea0 74 68 69 73 2c 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63 61 6e 0a 61 63 74 20 61 73 20 61 this,.the.statement.can.act.as.a
cec0 20 74 65 6d 70 6c 61 74 65 20 2d 2d 20 75 73 69 6e 67 20 60 24 69 31 60 2c 20 60 24 73 32 60 2c .template.--.using.`$i1`,.`$s2`,
cee0 20 65 74 63 2e 20 2d 2d 20 77 6f 72 6b 69 6e 67 20 6c 69 6b 65 20 74 68 65 0a 45 6c 69 73 70 20 .etc..--.working.like.the.Elisp.
cf00 60 66 6f 72 6d 61 74 60 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a 23 23 23 20 43 6f 6d 70 69 6c 61 74 `format`.function...###.Compilat
cf20 69 6f 6e 20 52 75 6c 65 73 0a 0a 52 61 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 74 79 70 69 63 ion.Rules..Rather.than.the.typic
cf40 61 6c 20 75 70 70 65 72 63 61 73 65 20 53 51 4c 20 6b 65 79 77 6f 72 64 73 2c 20 6b 65 79 77 6f al.uppercase.SQL.keywords,.keywo
cf60 72 64 73 20 69 6e 20 61 20 70 72 65 70 61 72 65 64 0a 45 6d 61 63 53 51 4c 20 73 74 61 74 65 6d rds.in.a.prepared.EmacSQL.statem
cf80 65 6e 74 20 61 72 65 20 6c 69 74 65 72 61 6c 6c 79 20 6a 75 73 74 20 74 68 61 74 3a 20 6c 69 73 ent.are.literally.just.that:.lis
cfa0 70 20 6b 65 79 77 6f 72 64 73 2e 20 45 6d 61 63 53 51 4c 20 6f 6e 6c 79 0a 75 6e 64 65 72 73 74 p.keywords..EmacSQL.only.underst
cfc0 61 6e 64 73 20 61 20 76 65 72 79 20 73 6d 61 6c 6c 20 61 6d 6f 75 6e 74 20 6f 66 20 53 51 4c 27 ands.a.very.small.amount.of.SQL'
cfe0 73 20 73 79 6e 74 61 78 2e 20 54 68 65 20 63 6f 6d 70 69 6c 65 72 20 66 6f 6c 6c 6f 77 73 0a 73 s.syntax..The.compiler.follows.s
d000 6f 6d 65 20 73 69 6d 70 6c 65 20 72 75 6c 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 6e 20 73 ome.simple.rules.to.convert.an.s
d020 2d 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 74 6f 20 53 51 4c 2e 0a 0a 23 23 23 23 20 41 6c 6c 20 -expression.into.SQL...####.All.
d040 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 76 65 63 74 6f 72 73 2e prepared.statements.are.vectors.
d060 0a 0a 41 20 70 72 65 70 61 72 65 64 20 73 2d 65 78 70 72 65 73 73 69 6f 6e 20 73 74 61 74 65 6d ..A.prepared.s-expression.statem
d080 65 6e 74 20 69 73 20 61 20 76 65 63 74 6f 72 20 62 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 61 ent.is.a.vector.beginning.with.a
d0a0 20 6b 65 79 77 6f 72 64 0a 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 73 65 72 69 65 73 20 6f 66 .keyword.followed.by.a.series.of
d0c0 20 6b 65 79 77 6f 72 64 73 20 61 6e 64 20 73 70 65 63 69 61 6c 20 76 61 6c 75 65 73 2e 20 54 68 .keywords.and.special.values..Th
d0e0 69 73 20 69 6e 63 6c 75 64 65 73 0a 6d 6f 73 74 20 6b 69 6e 64 73 20 6f 66 20 73 75 62 2d 71 75 is.includes.most.kinds.of.sub-qu
d100 65 72 69 65 73 2e 0a 0a 60 60 60 65 6c 0a 5b 3a 73 65 6c 65 63 74 20 2e 2e 2e 20 3a 66 72 6f 6d eries...```el.[:select.....:from
d120 20 2e 2e 2e 5d 0a 5b 3a 73 65 6c 65 63 74 20 74 61 67 20 3a 66 72 6f 6d 20 74 61 67 73 0a 20 3a ....].[:select.tag.:from.tags..:
d140 77 68 65 72 65 20 28 69 6e 20 74 61 67 20 5b 3a 73 65 6c 65 63 74 20 2e 2e 2e 5d 29 5d 0a 60 60 where.(in.tag.[:select....])].``
d160 60 0a 0a 23 23 23 23 20 4b 65 79 77 6f 72 64 73 20 61 72 65 20 73 70 6c 69 74 20 61 6e 64 20 63 `..####.Keywords.are.split.and.c
d180 61 70 69 74 61 6c 69 7a 65 64 2e 0a 0a 44 61 73 68 65 73 20 61 72 65 20 63 6f 6e 76 65 72 74 65 apitalized...Dashes.are.converte
d1a0 64 20 69 6e 74 6f 20 73 70 61 63 65 73 20 61 6e 64 20 74 68 65 20 6b 65 79 77 6f 72 64 20 67 65 d.into.spaces.and.the.keyword.ge
d1c0 74 73 20 63 61 70 69 74 61 6c 69 7a 65 64 2e 20 46 6f 72 0a 65 78 61 6d 70 6c 65 2c 20 60 3a 69 ts.capitalized..For.example,.`:i
d1e0 66 2d 6e 6f 74 2d 65 78 69 73 74 73 60 20 62 65 63 6f 6d 65 73 20 60 49 46 20 4e 4f 54 20 45 58 f-not-exists`.becomes.`IF.NOT.EX
d200 49 53 54 53 60 2e 20 48 6f 77 20 79 6f 75 20 63 68 6f 6f 73 65 20 74 6f 0a 63 6f 6d 62 69 6e 65 ISTS`..How.you.choose.to.combine
d220 20 6b 65 79 77 6f 72 64 73 20 69 73 20 75 70 20 74 6f 20 79 6f 75 72 20 70 65 72 73 6f 6e 61 6c .keywords.is.up.to.your.personal
d240 20 74 61 73 74 65 20 28 65 2e 67 2e 2c 20 60 3a 64 72 6f 70 20 3a 74 61 62 6c 65 60 20 76 73 2e .taste.(e.g.,.`:drop.:table`.vs.
d260 0a 60 3a 64 72 6f 70 2d 74 61 62 6c 65 60 29 2e 0a 0a 23 23 23 23 20 53 74 61 6e 64 61 6c 6f 6e .`:drop-table`)...####.Standalon
d280 65 20 73 79 6d 62 6f 6c 73 20 61 72 65 20 69 64 65 6e 74 69 66 69 65 72 73 2e 0a 0a 45 6d 61 63 e.symbols.are.identifiers...Emac
d2a0 53 51 4c 20 64 6f 65 73 6e 27 74 20 6b 6e 6f 77 20 77 68 61 74 20 73 79 6d 62 6f 6c 73 20 72 65 SQL.doesn't.know.what.symbols.re
d2c0 66 65 72 20 74 6f 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 6e 64 20 77 68 61 74 0a 73 79 6d 62 fer.to.identifiers.and.what.symb
d2e0 6f 6c 73 20 73 68 6f 75 6c 64 20 62 65 20 74 72 65 61 74 65 64 20 61 73 20 76 61 6c 75 65 73 2e ols.should.be.treated.as.values.
d300 20 55 73 65 20 71 75 6f 74 65 73 20 74 6f 20 6d 61 72 6b 20 61 20 73 79 6d 62 6f 6c 20 61 73 20 .Use.quotes.to.mark.a.symbol.as.
d320 61 0a 76 61 6c 75 65 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 60 70 65 6f 70 6c 65 60 20 68 a.value..For.example,.`people`.h
d340 65 72 65 20 77 69 6c 6c 20 62 65 20 74 72 65 61 74 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69 ere.will.be.treated.as.an.identi
d360 66 69 65 72 2e 0a 0a 60 60 60 65 6c 0a 5b 3a 69 6e 73 65 72 74 2d 69 6e 74 6f 20 70 65 6f 70 6c fier...```el.[:insert-into.peopl
d380 65 20 3a 76 61 6c 75 65 73 20 2e 2e 2e 5d 0a 60 60 60 0a 0a 23 23 23 23 20 52 6f 77 2d 6f 72 69 e.:values....].```..####.Row-ori
d3a0 65 6e 74 65 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 61 6c 77 61 79 73 20 72 65 70 72 ented.information.is.always.repr
d3c0 65 73 65 6e 74 65 64 20 61 73 20 76 65 63 74 6f 72 73 2e 0a 0a 54 68 69 73 20 69 6e 63 6c 75 64 esented.as.vectors...This.includ
d3e0 65 73 20 72 6f 77 73 20 62 65 69 6e 67 20 69 6e 73 65 72 74 65 64 2c 20 61 6e 64 20 73 65 74 73 es.rows.being.inserted,.and.sets
d400 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 20 71 75 65 72 79 2e 20 49 66 0a 79 6f 75 27 72 .of.columns.in.a.query..If.you'r
d420 65 20 74 61 6c 6b 69 6e 67 20 61 62 6f 75 74 20 61 20 72 6f 77 2d 6c 69 6b 65 20 74 68 69 6e 67 e.talking.about.a.row-like.thing
d440 20 74 68 65 6e 20 70 75 74 20 69 74 20 69 6e 20 61 20 76 65 63 74 6f 72 2e 0a 0a 60 60 60 65 6c .then.put.it.in.a.vector...```el
d460 0a 5b 3a 73 65 6c 65 63 74 20 5b 69 64 20 6e 61 6d 65 5d 20 3a 66 72 6f 6d 20 70 65 6f 70 6c 65 .[:select.[id.name].:from.people
d480 5d 0a 60 60 60 0a 0a 4e 6f 74 65 20 74 68 61 74 20 60 2a 60 20 69 73 20 61 63 74 75 61 6c 6c 79 ].```..Note.that.`*`.is.actually
d4a0 20 61 20 53 51 4c 20 6b 65 79 77 6f 72 64 2c 20 73 6f 20 64 6f 6e 27 74 20 70 75 74 20 69 74 20 .a.SQL.keyword,.so.don't.put.it.
d4c0 69 6e 20 61 20 76 65 63 74 6f 72 2e 0a 0a 60 60 60 65 6c 0a 5b 3a 73 65 6c 65 63 74 20 2a 20 3a in.a.vector...```el.[:select.*.:
d4e0 66 72 6f 6d 20 2e 2e 2e 5d 0a 60 60 60 0a 0a 23 23 23 23 20 4c 69 73 74 73 20 61 72 65 20 74 72 from....].```..####.Lists.are.tr
d500 65 61 74 65 64 20 61 73 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 0a 0a 54 68 69 73 20 69 73 20 74 eated.as.expressions...This.is.t
d520 72 75 65 20 65 76 65 6e 20 77 69 74 68 69 6e 20 72 6f 77 2d 6f 72 69 65 6e 74 65 64 20 76 65 63 rue.even.within.row-oriented.vec
d540 74 6f 72 73 2e 0a 0a 60 60 60 65 6c 0a 5b 2e 2e 2e 20 3a 77 68 65 72 65 20 28 3d 20 6e 61 6d 65 tors...```el.[....:where.(=.name
d560 20 22 42 6f 62 22 29 5d 0a 5b 3a 73 65 6c 65 63 74 20 5b 28 2f 20 73 65 63 6f 6e 64 73 20 36 30 ."Bob")].[:select.[(/.seconds.60
d580 29 20 63 6f 75 6e 74 5d 20 3a 66 72 6f 6d 20 2e 2e 2e 5d 0a 60 60 60 0a 0a 53 6f 6d 65 20 74 68 ).count].:from....].```..Some.th
d5a0 69 6e 67 73 20 74 68 61 74 20 61 72 65 20 74 72 61 64 69 74 69 6f 6e 61 6c 6c 79 20 6b 65 79 77 ings.that.are.traditionally.keyw
d5c0 6f 72 64 73 20 2d 2d 20 70 61 72 74 69 63 75 6c 61 72 6c 79 20 74 68 6f 73 65 20 74 68 61 74 0a ords.--.particularly.those.that.
d5e0 61 72 65 20 6d 69 78 65 64 20 69 6e 20 77 69 74 68 20 65 78 70 72 65 73 73 69 6f 6e 73 20 2d 2d are.mixed.in.with.expressions.--
d600 20 68 61 76 65 20 62 65 65 6e 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 6f 70 65 72 61 74 .have.been.converted.into.operat
d620 6f 72 73 0a 28 60 41 53 60 2c 20 60 41 53 43 60 2c 20 60 44 45 53 43 60 29 2e 0a 0a 60 60 60 65 ors.(`AS`,.`ASC`,.`DESC`)...```e
d640 6c 0a 5b 2e 2e 2e 20 3a 6f 72 64 65 72 2d 62 79 20 5b 28 61 73 63 20 62 29 2c 20 28 64 65 73 63 l.[....:order-by.[(asc.b),.(desc
d660 20 61 29 5d 5d 20 20 20 3b 20 22 4f 52 44 45 52 20 42 59 20 62 20 41 53 43 2c 20 61 20 44 45 53 .a)]]...;."ORDER.BY.b.ASC,.a.DES
d680 43 22 0a 5b 3a 73 65 6c 65 63 74 20 70 3a 6e 61 6d 65 20 3a 66 72 6f 6d 20 28 61 73 20 70 65 6f C".[:select.p:name.:from.(as.peo
d6a0 70 6c 65 20 70 29 5d 20 20 3b 20 22 53 45 4c 45 43 54 20 70 2e 6e 61 6d 65 20 46 52 4f 4d 20 70 ple.p)]..;."SELECT.p.name.FROM.p
d6c0 65 6f 70 6c 65 20 41 53 20 70 22 0a 60 60 60 0a 0a 23 23 23 23 20 54 68 65 20 60 3a 76 61 6c 75 eople.AS.p".```..####.The.`:valu
d6e0 65 73 60 20 6b 65 79 77 6f 72 64 20 69 73 20 73 70 65 63 69 61 6c 2e 0a 0a 57 68 61 74 20 66 6f es`.keyword.is.special...What.fo
d700 6c 6c 6f 77 73 20 60 3a 76 61 6c 75 65 73 60 20 69 73 20 61 6c 77 61 79 73 20 74 72 65 61 74 65 llows.`:values`.is.always.treate
d720 64 20 6c 69 6b 65 20 61 20 76 65 63 74 6f 72 20 6f 72 20 6c 69 73 74 20 6f 66 0a 76 65 63 74 6f d.like.a.vector.or.list.of.vecto
d740 72 73 2e 20 4e 6f 72 6d 61 6c 6c 79 20 74 68 69 73 20 73 6f 72 74 20 6f 66 20 74 68 69 6e 67 20 rs..Normally.this.sort.of.thing.
d760 77 6f 75 6c 64 20 61 70 70 65 61 72 20 74 6f 20 62 65 20 61 20 63 6f 6c 75 6d 6e 0a 72 65 66 65 would.appear.to.be.a.column.refe
d780 72 65 6e 63 65 2e 0a 0a 60 60 60 65 6c 0a 5b 2e 2e 2e 20 3a 76 61 6c 75 65 73 20 5b 31 20 32 20 rence...```el.[....:values.[1.2.
d7a0 33 5d 5d 0a 5b 2e 2e 2e 20 3a 76 61 6c 75 65 73 20 28 5b 31 20 32 20 33 5d 20 5b 34 20 35 20 36 3]].[....:values.([1.2.3].[4.5.6
d7c0 5d 29 5d 20 20 3b 20 69 6e 73 65 72 74 20 6d 75 6c 74 69 70 6c 65 20 72 6f 77 73 0a 60 60 60 0a ])]..;.insert.multiple.rows.```.
d7e0 0a 23 23 23 23 20 41 20 6c 69 73 74 20 77 68 6f 73 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 .####.A.list.whose.first.element
d800 20 69 73 20 61 20 76 65 63 74 6f 72 20 69 73 20 61 20 74 61 62 6c 65 20 73 63 68 65 6d 61 2e 0a .is.a.vector.is.a.table.schema..
d820 0a 54 68 69 73 20 69 73 20 74 6f 20 64 69 73 74 69 6e 67 75 69 73 68 20 73 63 68 65 6d 61 74 61 .This.is.to.distinguish.schemata
d840 20 66 72 6f 6d 20 65 76 65 72 79 74 68 69 6e 67 20 65 6c 73 65 2e 20 57 69 74 68 20 74 68 65 0a .from.everything.else..With.the.
d860 65 78 63 65 70 74 69 6f 6e 20 6f 66 20 77 68 61 74 20 66 6f 6c 6c 6f 77 73 20 60 3a 76 61 6c 75 exception.of.what.follows.`:valu
d880 65 73 60 2c 20 6e 6f 74 68 69 6e 67 20 65 6c 73 65 20 69 73 20 73 68 61 70 65 64 20 6c 69 6b 65 es`,.nothing.else.is.shaped.like
d8a0 20 74 68 69 73 2e 0a 0a 60 60 60 65 6c 0a 5b 3a 63 72 65 61 74 65 2d 74 61 62 6c 65 20 70 65 6f .this...```el.[:create-table.peo
d8c0 70 6c 65 20 28 5b 28 69 64 20 3a 70 72 69 6d 61 72 79 2d 6b 65 79 29 20 6e 61 6d 65 5d 29 5d 0a ple.([(id.:primary-key).name])].
d8e0 60 60 60 0a 0a 23 23 23 20 54 65 6d 70 6c 61 74 65 73 0a 0a 54 6f 20 6d 61 6b 65 20 73 74 61 74 ```..###.Templates..To.make.stat
d900 65 6d 65 6e 74 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 61 73 74 65 72 2c 20 61 6e 64 20 74 6f ement.compilation.faster,.and.to
d920 20 61 76 6f 69 64 20 6d 61 6b 69 6e 67 20 79 6f 75 20 62 75 69 6c 64 20 75 70 0a 73 74 61 74 65 .avoid.making.you.build.up.state
d940 6d 65 6e 74 73 20 64 79 6e 61 6d 69 63 61 6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 69 6e 73 65 72 ments.dynamically,.you.can.inser
d960 74 20 60 24 74 6e 60 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a 69 t.`$tn`.parameters.in.place.of.i
d980 64 65 6e 74 69 66 69 65 72 73 20 61 6e 64 20 76 61 6c 75 65 73 2e 20 54 68 65 73 65 20 72 65 66 dentifiers.and.values..These.ref
d9a0 65 72 20 74 6f 20 74 68 65 20 61 72 67 75 6d 65 6e 74 27 73 20 74 79 70 65 20 61 6e 64 20 69 74 er.to.the.argument's.type.and.it
d9c0 73 0a 61 72 67 75 6d 65 6e 74 20 70 6f 73 69 74 69 6f 6e 20 61 66 74 65 72 20 74 68 65 20 73 74 s.argument.position.after.the.st
d9e0 61 74 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 60 65 6d 61 63 73 71 6c 60 20 66 75 6e 63 74 69 6f atement.in.the.`emacsql`.functio
da00 6e 2c 0a 6f 6e 65 2d 69 6e 64 65 78 65 64 2e 0a 0a 60 60 60 65 6c 0a 28 65 6d 61 63 73 71 6c 20 n,.one-indexed...```el.(emacsql.
da20 64 62 20 5b 3a 73 65 6c 65 63 74 20 2a 20 3a 66 72 6f 6d 20 24 69 31 20 3a 77 68 65 72 65 20 28 db.[:select.*.:from.$i1.:where.(
da40 3e 20 73 61 6c 61 72 79 20 24 73 32 29 5d 20 27 65 6d 70 6c 6f 79 65 65 73 20 35 30 30 30 30 29 >.salary.$s2)].'employees.50000)
da60 0a 0a 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 73 65 6c 65 63 74 20 2a 20 3a 66 72 6f 6d 20 65 ..(emacsql.db.[:select.*.:from.e
da80 6d 70 6c 6f 79 65 65 73 20 3a 77 68 65 72 65 20 28 6c 69 6b 65 20 6e 61 6d 65 20 24 72 31 29 5d mployees.:where.(like.name.$r1)]
daa0 20 22 25 53 6d 69 74 68 25 22 29 0a 60 60 60 0a 0a 54 68 65 20 6c 65 74 74 65 72 20 62 65 66 6f ."%Smith%").```..The.letter.befo
dac0 72 65 20 74 68 65 20 6e 75 6d 62 65 72 20 69 73 20 74 68 65 20 74 79 70 65 2e 0a 0a 20 2a 20 60 re.the.number.is.the.type....*.`
dae0 69 60 20 3a 20 69 64 65 6e 74 69 66 69 65 72 0a 20 2a 20 60 73 60 20 3a 20 73 63 61 6c 61 72 0a i`.:.identifier..*.`s`.:.scalar.
db00 20 2a 20 60 76 60 20 3a 20 76 65 63 74 6f 72 20 28 6f 72 20 6d 75 6c 74 69 70 6c 65 20 76 65 63 .*.`v`.:.vector.(or.multiple.vec
db20 74 6f 72 73 29 0a 20 2a 20 60 72 60 20 3a 20 72 61 77 2c 20 75 6e 70 72 69 6e 74 65 64 20 73 74 tors)..*.`r`.:.raw,.unprinted.st
db40 72 69 6e 67 73 0a 20 2a 20 60 53 60 20 3a 20 73 63 68 65 6d 61 0a 0a 57 68 65 6e 20 63 6f 6d 62 rings..*.`S`.:.schema..When.comb
db60 69 6e 65 64 20 77 69 74 68 20 60 3a 76 61 6c 75 65 73 60 2c 20 74 68 65 20 76 65 63 74 6f 72 20 ined.with.`:values`,.the.vector.
db80 74 79 70 65 20 63 61 6e 20 72 65 66 65 72 20 74 6f 20 6c 69 73 74 73 20 6f 66 0a 72 6f 77 73 2e type.can.refer.to.lists.of.rows.
dba0 0a 0a 60 60 60 65 6c 0a 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 69 6e 73 65 72 74 2d 69 6e 74 ..```el.(emacsql.db.[:insert-int
dbc0 6f 20 66 61 76 6f 72 69 74 65 2d 63 68 61 72 61 63 74 65 72 73 20 3a 76 61 6c 75 65 73 20 24 76 o.favorite-characters.:values.$v
dbe0 31 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 28 5b 30 20 22 43 61 6c 76 69 6e 22 5d 20 5b 31 1].............'([0."Calvin"].[1
dc00 20 22 48 6f 62 62 65 73 22 5d 20 5b 33 20 22 53 75 73 69 65 22 5d 29 29 0a 60 60 60 0a 0a 54 68 ."Hobbes"].[3."Susie"])).```..Th
dc20 69 73 20 69 73 20 77 68 79 20 72 6f 77 73 20 6d 75 73 74 20 62 65 20 76 65 63 74 6f 72 73 20 61 is.is.why.rows.must.be.vectors.a
dc40 6e 64 20 6e 6f 74 20 6c 69 73 74 73 2e 0a 0a 23 23 23 20 49 67 6e 6f 72 65 64 20 46 65 61 74 75 nd.not.lists...###.Ignored.Featu
dc60 72 65 73 0a 0a 45 6d 61 63 53 51 4c 20 64 6f 65 73 6e 27 74 20 63 6f 76 65 72 20 61 6c 6c 20 6f res..EmacSQL.doesn't.cover.all.o
dc80 66 20 53 51 4c 69 74 65 27 73 20 66 65 61 74 75 72 65 73 2e 20 48 65 72 65 20 61 72 65 20 61 20 f.SQLite's.features..Here.are.a.
dca0 6c 69 73 74 20 6f 66 0a 74 68 69 6e 67 73 20 74 68 61 74 20 61 72 65 6e 27 74 20 73 75 70 70 6f list.of.things.that.aren't.suppo
dcc0 72 74 65 64 2c 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 77 69 6c 6c 20 6e 65 76 65 72 20 62 65 rted,.and.probably.will.never.be
dce0 2e 0a 0a 20 2a 20 43 6f 6c 6c 61 74 69 6e 67 2e 20 53 51 4c 69 74 65 20 68 61 73 20 74 68 72 65 ....*.Collating..SQLite.has.thre
dd00 65 20 62 75 69 6c 74 2d 69 6e 20 63 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 3a 20 e.built-in.collation.functions:.
dd20 42 49 4e 41 52 59 0a 20 20 20 28 64 65 66 61 75 6c 74 29 2c 20 4e 4f 43 41 53 45 2c 20 61 6e 64 BINARY....(default),.NOCASE,.and
dd40 20 52 54 52 49 4d 2e 20 45 6d 61 63 53 51 4c 20 76 61 6c 75 65 73 20 6e 65 76 65 72 20 68 61 76 .RTRIM..EmacSQL.values.never.hav
dd60 65 20 72 69 67 68 74 2d 68 61 6e 64 0a 20 20 20 77 68 69 74 65 73 70 61 63 65 2c 20 73 6f 20 52 e.right-hand....whitespace,.so.R
dd80 54 52 49 4d 20 77 6f 6e 27 74 20 62 65 20 6f 66 20 61 6e 79 20 75 73 65 2e 20 4e 4f 43 41 53 45 TRIM.won't.be.of.any.use..NOCASE
dda0 20 69 73 20 62 72 6f 6b 65 6e 0a 20 20 20 28 41 53 43 49 49 2d 6f 6e 6c 79 29 20 61 6e 64 20 74 .is.broken....(ASCII-only).and.t
ddc0 68 65 72 65 27 73 20 6c 69 74 74 6c 65 20 72 65 61 73 6f 6e 20 74 6f 20 75 73 65 20 69 74 2e 0a here's.little.reason.to.use.it..
dde0 0a 20 2a 20 54 65 78 74 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 2e ..*.Text.manipulation.functions.
de00 20 4c 69 6b 65 20 63 6f 6c 6c 61 74 69 6e 67 20 74 68 69 73 20 69 73 20 69 6e 63 6f 6d 70 61 74 .Like.collating.this.is.incompat
de20 69 62 6c 65 0a 20 20 20 77 69 74 68 20 45 6d 61 63 53 51 4c 20 73 2d 65 78 70 72 65 73 73 69 6f ible....with.EmacSQL.s-expressio
de40 6e 20 73 74 6f 72 61 67 65 2e 0a 0a 20 2a 20 44 61 74 65 20 61 6e 64 20 74 69 6d 65 2e 20 54 68 n.storage....*.Date.and.time..Th
de60 65 73 65 20 61 72 65 20 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 74 68 65 20 70 72 ese.are.incompatible.with.the.pr
de80 69 6e 74 65 64 20 76 61 6c 75 65 73 0a 20 20 20 73 74 6f 72 65 64 20 62 79 20 45 6d 61 63 53 51 inted.values....stored.by.EmacSQ
dea0 4c 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 20 68 61 76 65 20 6c 69 74 74 6c 65 20 75 73 65 2e L.and.therefore.have.little.use.
dec0 0a 0a 23 23 20 4c 69 6d 69 74 61 74 69 6f 6e 73 0a 0a 45 6d 61 63 53 51 4c 20 69 73 20 2a 6e 6f ..##.Limitations..EmacSQL.is.*no
dee0 74 2a 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 70 6c 61 79 20 77 65 6c 6c 20 77 69 74 68 20 6f 74 t*.intended.to.play.well.with.ot
df00 68 65 72 20 70 72 6f 67 72 61 6d 73 20 61 63 63 65 73 73 69 6e 67 0a 74 68 65 20 53 51 4c 69 74 her.programs.accessing.the.SQLit
df20 65 20 64 61 74 61 62 61 73 65 2e 20 4e 6f 6e 2d 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 73 20 61 e.database..Non-numeric.values.a
df40 72 65 20 73 74 6f 72 65 64 20 65 6e 63 6f 64 65 64 20 61 73 0a 73 2d 65 78 70 72 65 73 73 69 6f re.stored.encoded.as.s-expressio
df60 6e 73 20 54 45 58 54 20 76 61 6c 75 65 73 2e 20 54 68 69 73 20 61 76 6f 69 64 73 20 61 6d 62 69 ns.TEXT.values..This.avoids.ambi
df80 67 75 69 74 69 65 73 20 69 6e 20 70 61 72 73 69 6e 67 20 6f 75 74 70 75 74 0a 66 72 6f 6d 20 74 guities.in.parsing.output.from.t
dfa0 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 6e 64 20 61 6c 6c 6f 77 73 20 66 6f 72 20 73 he.command.line.and.allows.for.s
dfc0 74 6f 72 61 67 65 20 6f 66 20 45 6d 61 63 73 20 72 69 63 68 65 72 20 64 61 74 61 0a 74 79 70 65 torage.of.Emacs.richer.data.type
dfe0 73 2e 20 54 68 69 73 20 69 73 20 61 6e 20 65 66 66 69 63 69 65 6e 74 2c 20 41 43 49 44 2d 63 6f s..This.is.an.efficient,.ACID-co
e000 6d 70 6c 69 61 6e 74 20 64 61 74 61 62 61 73 65 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 66 6f mpliant.database.specifically.fo
e020 72 0a 45 6d 61 63 73 2e 0a 0a 23 23 20 45 6d 61 63 73 20 4c 69 73 70 20 49 6e 64 65 6e 74 61 74 r.Emacs...##.Emacs.Lisp.Indentat
e040 69 6f 6e 20 41 6e 6e 6f 79 61 6e 63 65 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 60 65 6d 61 63 ion.Annoyance..By.default,.`emac
e060 73 2d 6c 69 73 70 2d 6d 6f 64 65 60 20 69 6e 64 65 6e 74 73 20 76 65 63 74 6f 72 73 20 61 73 20 s-lisp-mode`.indents.vectors.as.
e080 69 66 20 74 68 65 79 20 77 65 72 65 20 72 65 67 75 6c 61 72 0a 66 75 6e 63 74 69 6f 6e 20 63 61 if.they.were.regular.function.ca
e0a0 6c 6c 73 2e 0a 0a 60 60 60 65 6c 0a 3b 3b 20 55 67 6c 79 20 69 6e 64 65 6e 74 61 74 69 6f 6e 21 lls...```el.;;.Ugly.indentation!
e0c0 0a 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 73 65 6c 65 63 74 20 2a 0a 20 20 20 20 20 20 20 20 .(emacsql.db.[:select.*.........
e0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 72 6f 6d 20 70 65 6f 70 6c 65 0a 20 20 20 20 20 20 .............:from.people.......
e100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 77 68 65 72 65 20 28 3e 20 61 67 65 20 36 30 29 ...............:where.(>.age.60)
e120 5d 29 0a 60 60 60 0a 0a 43 61 6c 6c 69 6e 67 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 60 65 6d ]).```..Calling.the.function.`em
e140 61 63 73 71 6c 2d 66 69 78 2d 76 65 63 74 6f 72 2d 69 6e 64 65 6e 74 61 74 69 6f 6e 60 20 28 69 acsql-fix-vector-indentation`.(i
e160 6e 74 65 72 61 63 74 69 76 65 29 0a 61 64 76 69 73 65 73 20 74 68 65 20 6d 61 6a 6f 72 20 6d 6f nteractive).advises.the.major.mo
e180 64 65 20 74 6f 20 66 69 78 20 74 68 69 73 20 61 6e 6e 6f 79 61 6e 63 65 2e 0a 0a 60 60 60 65 6c de.to.fix.this.annoyance...```el
e1a0 0a 3b 3b 20 53 75 63 68 20 69 6e 64 65 6e 74 21 0a 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 73 .;;.Such.indent!.(emacsql.db.[:s
e1c0 65 6c 65 63 74 20 2a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 72 6f 6d 20 70 65 6f 70 6c elect.*..............:from.peopl
e1e0 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 77 68 65 72 65 20 28 3e 20 61 67 65 20 36 30 29 e..............:where.(>.age.60)
e200 5d 29 0a 60 60 60 0a 0a 23 23 20 43 6f 6e 74 72 69 62 75 74 69 6e 67 20 61 6e 64 20 45 78 74 65 ]).```..##.Contributing.and.Exte
e220 6e 64 69 6e 67 0a 0a 54 6f 20 72 75 6e 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65 2c 20 63 6c nding..To.run.the.test.suite,.cl
e240 6f 6e 65 20 74 68 65 20 60 70 67 60 20 61 6e 64 20 60 73 71 6c 69 74 65 33 60 20 70 61 63 6b 61 one.the.`pg`.and.`sqlite3`.packa
e260 67 65 73 20 69 6e 74 6f 0a 73 69 62 6c 69 6e 67 20 64 69 72 65 63 74 6f 72 69 65 73 2e 20 54 68 ges.into.sibling.directories..Th
e280 65 20 4d 61 6b 65 66 69 6c 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 70 75 e.Makefile.will.automatically.pu
e2a0 74 20 74 68 65 73 65 20 70 61 74 68 73 20 6f 6e 0a 74 68 65 20 45 6d 61 63 73 20 6c 6f 61 64 20 t.these.paths.on.the.Emacs.load.
e2c0 70 61 74 68 20 28 6f 76 65 72 72 69 64 65 20 60 4c 44 46 4c 41 47 53 60 20 69 66 20 79 6f 75 72 path.(override.`LDFLAGS`.if.your
e2e0 20 73 69 74 75 61 74 69 6f 6e 20 69 73 20 64 69 66 66 65 72 65 6e 74 29 2e 0a 0a 60 60 60 73 68 .situation.is.different)...```sh
e300 65 6c 6c 0a 67 69 74 20 63 6c 6f 6e 65 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d ell.git.clone.https://github.com
e320 2f 65 6d 61 72 73 64 65 6e 2f 70 67 2d 65 6c 20 2e 2e 2f 70 67 0a 67 69 74 20 63 6c 6f 6e 65 20 /emarsden/pg-el.../pg.git.clone.
e340 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 70 65 6b 69 6e 67 64 75 63 6b 2f 65 6d https://github.com/pekingduck/em
e360 61 63 73 2d 73 71 6c 69 74 65 33 2d 61 70 69 20 2e 2e 2f 73 71 6c 69 74 65 33 0a 60 60 60 0a 0a acs-sqlite3-api.../sqlite3.```..
e380 4f 72 20 73 65 74 20 60 4c 4f 41 44 5f 50 41 54 48 60 20 74 6f 20 70 6f 69 6e 74 20 61 74 20 74 Or.set.`LOAD_PATH`.to.point.at.t
e3a0 68 65 73 65 20 70 61 63 6b 61 67 65 73 20 65 6c 73 65 77 68 65 72 65 3a 0a 0a 60 60 60 73 68 65 hese.packages.elsewhere:..```she
e3c0 6c 6c 0a 6d 61 6b 65 20 4c 4f 41 44 5f 50 41 54 48 3d 27 2d 4c 20 70 61 74 68 2f 74 6f 2f 70 67 ll.make.LOAD_PATH='-L.path/to/pg
e3e0 20 2d 4c 20 70 61 74 68 2f 74 6f 2f 73 71 6c 69 74 65 33 27 0a 60 60 60 0a 0a 54 68 65 6e 20 69 .-L.path/to/sqlite3'.```..Then.i
e400 6e 76 6f 6b 65 20 6d 61 6b 65 3a 0a 0a 60 60 60 73 68 65 6c 6c 0a 6d 61 6b 65 20 74 65 73 74 0a nvoke.make:..```shell.make.test.
e420 60 60 60 0a 0a 49 66 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 ```..If.the.environment.variable
e440 20 60 50 47 44 41 54 41 42 41 53 45 60 20 69 73 20 70 72 65 73 65 6e 74 20 74 68 65 6e 20 74 68 .`PGDATABASE`.is.present.then.th
e460 65 20 75 6e 69 74 0a 74 65 73 74 73 20 77 69 6c 6c 20 61 6c 73 6f 20 62 65 20 72 75 6e 20 77 69 e.unit.tests.will.also.be.run.wi
e480 74 68 20 50 6f 73 74 67 72 65 53 51 4c 20 28 65 6d 61 63 73 71 6c 2d 70 73 71 6c 29 2e 20 50 72 th.PostgreSQL.(emacsql-psql)..Pr
e4a0 6f 76 69 64 65 0a 60 50 47 48 4f 53 54 60 2c 20 60 50 47 50 4f 52 54 60 2c 20 61 6e 64 20 60 50 ovide.`PGHOST`,.`PGPORT`,.and.`P
e4c0 47 55 53 45 52 60 20 69 66 20 6e 65 65 64 65 64 2e 20 49 66 20 60 50 47 55 53 45 52 60 20 69 73 GUSER`.if.needed..If.`PGUSER`.is
e4e0 20 70 72 6f 76 69 64 65 64 2c 0a 74 68 65 20 70 67 2e 65 6c 20 62 61 63 6b 2d 65 6e 64 20 28 65 .provided,.the.pg.el.back-end.(e
e500 6d 61 63 73 71 6c 2d 70 67 29 20 77 69 6c 6c 20 61 6c 73 6f 20 62 65 20 74 65 73 74 65 64 2e 0a macsql-pg).will.also.be.tested..
e520 0a 49 66 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 60 4d 59 .If.the.environment.variable.`MY
e540 53 51 4c 5f 44 42 4e 41 4d 45 60 20 69 73 20 70 72 65 73 65 6e 74 20 74 68 65 6e 20 74 68 65 20 SQL_DBNAME`.is.present.then.the.
e560 75 6e 69 74 0a 74 65 73 74 73 20 77 69 6c 6c 20 61 6c 73 6f 20 62 65 20 72 75 6e 20 77 69 74 68 unit.tests.will.also.be.run.with
e580 20 4d 79 53 51 4c 20 69 6e 20 74 68 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 4e 6f .MySQL.in.the.named.database..No
e5a0 74 65 20 74 68 61 74 0a 74 68 69 73 20 69 73 20 6e 6f 74 20 61 6e 20 6f 66 66 69 63 69 61 6c 20 te.that.this.is.not.an.official.
e5c0 4d 79 53 51 4c 20 76 61 72 69 61 62 6c 65 2c 20 6a 75 73 74 20 73 6f 6d 65 74 68 69 6e 67 20 6d MySQL.variable,.just.something.m
e5e0 61 64 65 20 75 70 20 66 6f 72 0a 45 6d 61 63 53 51 4c 2e 0a 0a 23 23 23 20 43 72 65 61 74 69 6e ade.up.for.EmacSQL...###.Creatin
e600 67 20 61 20 4e 65 77 20 46 72 6f 6e 74 2d 65 6e 64 0a 0a 45 6d 61 63 53 51 4c 20 75 73 65 73 20 g.a.New.Front-end..EmacSQL.uses.
e620 45 49 45 49 4f 20 73 6f 20 74 68 61 74 20 69 6e 74 65 72 61 63 74 69 6f 6e 73 20 77 69 74 68 20 EIEIO.so.that.interactions.with.
e640 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 63 63 75 72 0a 74 68 72 6f 75 67 68 20 67 65 6e 65 72 a.connection.occur.through.gener
e660 69 63 20 66 75 6e 63 74 69 6f 6e 73 2e 20 59 6f 75 20 6e 65 65 64 20 74 6f 20 64 65 66 69 6e 65 ic.functions..You.need.to.define
e680 20 61 20 6e 65 77 20 63 6c 61 73 73 20 74 68 61 74 0a 69 6e 68 65 72 69 74 73 20 66 72 6f 6d 20 .a.new.class.that.inherits.from.
e6a0 60 65 6d 61 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 60 2e 0a 0a 20 2a 20 49 6d 70 6c 65 6d `emacsql-connection`....*.Implem
e6c0 65 6e 74 20 60 65 6d 61 63 73 71 6c 2d 73 65 6e 64 2d 6d 65 73 73 61 67 65 60 2c 20 60 65 6d 61 ent.`emacsql-send-message`,.`ema
e6e0 63 73 71 6c 2d 77 61 69 74 69 6e 67 2d 70 60 2c 0a 20 20 20 60 65 6d 61 63 73 71 6c 2d 70 61 72 csql-waiting-p`,....`emacsql-par
e700 73 65 60 2c 20 61 6e 64 20 60 65 6d 61 63 73 71 6c 2d 63 6c 6f 73 65 60 2e 0a 20 2a 20 50 72 6f se`,.and.`emacsql-close`...*.Pro
e720 76 69 64 65 20 61 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 74 68 61 74 20 69 6e 69 74 69 61 6c 69 vide.a.constructor.that.initiali
e740 7a 65 73 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 6e 64 20 63 61 6c 6c 73 0a 20 20 20 zes.the.connection.and.calls....
e760 60 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 60 20 28 66 6f 72 20 61 75 74 6f 6d 61 74 69 `emacsql-register`.(for.automati
e780 63 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c 65 61 6e 75 70 29 2e 0a 20 2a 20 50 72 6f 76 69 64 c.connection.cleanup)...*.Provid
e7a0 65 20 60 65 6d 61 63 73 71 6c 2d 74 79 70 65 73 60 20 69 66 20 6e 65 65 64 65 64 20 28 68 69 6e e.`emacsql-types`.if.needed.(hin
e7c0 74 3a 20 75 73 65 20 61 20 63 6c 61 73 73 2d 61 6c 6c 6f 63 61 74 65 64 20 73 6c 6f 74 29 2e 0a t:.use.a.class-allocated.slot)..
e7e0 20 2a 20 45 6e 73 75 72 65 20 74 68 61 74 20 79 6f 75 20 70 72 6f 70 65 72 6c 79 20 72 65 61 64 .*.Ensure.that.you.properly.read
e800 20 4e 55 4c 4c 20 61 73 20 6e 69 6c 20 28 68 69 6e 74 3a 20 61 73 6b 20 79 6f 75 72 20 62 61 63 .NULL.as.nil.(hint:.ask.your.bac
e820 6b 2d 65 6e 64 0a 20 20 20 74 6f 20 70 72 69 6e 74 20 69 74 20 74 68 61 74 20 77 61 79 29 2e 0a k-end....to.print.it.that.way)..
e840 20 2a 20 52 65 67 69 73 74 65 72 20 61 6c 6c 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 73 20 77 .*.Register.all.reserved.words.w
e860 69 74 68 20 60 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 2d 72 65 73 65 72 76 65 64 60 2e ith.`emacsql-register-reserved`.
e880 0a 20 2a 20 50 72 65 66 65 72 61 62 6c 79 20 70 72 6f 76 69 64 65 20 60 65 6d 61 63 73 71 6c 2d ..*.Preferably.provide.`emacsql-
e8a0 72 65 63 6f 6e 6e 65 63 74 60 20 69 66 20 70 6f 73 73 69 62 6c 65 2e 0a 20 2a 20 53 65 74 20 74 reconnect`.if.possible...*.Set.t
e8c0 68 65 20 64 65 66 61 75 6c 74 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 20 74 6f 20 2a 73 he.default.isolation.level.to.*s
e8e0 65 72 69 61 6c 69 7a 61 62 6c 65 2a 2e 0a 20 2a 20 45 6e 61 62 6c 65 20 61 75 74 6f 63 6f 6d 6d erializable*...*.Enable.autocomm
e900 69 74 20 6d 6f 64 65 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 20 2a 20 50 72 65 66 65 72 20 41 4e it.mode.by.default...*.Prefer.AN
e920 53 49 20 73 79 6e 74 61 78 20 28 76 61 6c 75 65 20 65 73 63 61 70 65 73 2c 20 69 64 65 6e 74 69 SI.syntax.(value.escapes,.identi
e940 66 69 65 72 20 65 73 63 61 70 65 73 2c 20 65 74 63 2e 29 2e 0a 20 2a 20 45 6e 61 62 6c 65 20 66 fier.escapes,.etc.)...*.Enable.f
e960 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 62 79 20 64 65 66 61 75 6c oreign.key.constraints.by.defaul
e980 74 2e 0a 0a 54 68 65 20 67 6f 61 6c 20 6f 66 20 74 68 65 20 61 75 74 6f 63 6f 6d 6d 69 74 2c 20 t...The.goal.of.the.autocommit,.
e9a0 69 73 6f 6c 61 74 69 6f 6e 2c 20 70 61 72 73 69 6e 67 2c 20 61 6e 64 20 66 6f 72 65 69 67 6e 20 isolation,.parsing,.and.foreign.
e9c0 6b 65 79 0a 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 20 69 73 20 74 6f key.configuration.settings.is.to
e9e0 20 6e 6f 72 6d 61 6c 69 7a 65 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 61 73 20 6d 75 63 68 .normalize.the.interface.as.much
ea00 20 61 73 0a 70 6f 73 73 69 62 6c 65 2e 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 27 73 20 75 .as.possible..The.connection's.u
ea20 73 65 72 20 73 68 6f 75 6c 64 20 68 61 76 65 20 74 68 65 20 6f 70 74 69 6f 6e 20 74 6f 20 62 65 ser.should.have.the.option.to.be
ea40 20 61 67 6e 6f 73 74 69 63 0a 61 62 6f 75 74 20 77 68 69 63 68 20 62 61 63 6b 2d 65 6e 64 20 69 .agnostic.about.which.back-end.i
ea60 73 20 61 63 74 75 61 6c 6c 79 20 69 6e 20 75 73 65 2e 0a 0a 54 68 65 20 70 72 6f 76 69 64 65 64 s.actually.in.use...The.provided
ea80 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 73 65 72 76 65 20 61 73 .implementations.should.serve.as
eaa0 20 75 73 65 66 75 6c 20 65 78 61 6d 70 6c 65 73 2e 20 49 66 20 79 6f 75 72 0a 62 61 63 6b 2d 65 .useful.examples..If.your.back-e
eac0 6e 64 20 6f 75 74 70 75 74 73 20 64 61 74 61 20 69 6e 20 61 20 63 6c 65 61 6e 2c 20 73 74 61 6e nd.outputs.data.in.a.clean,.stan
eae0 64 61 72 64 20 77 61 79 20 79 6f 75 20 6d 61 79 20 62 65 20 61 62 6c 65 20 74 6f 20 75 73 65 0a dard.way.you.may.be.able.to.use.
eb00 74 68 65 20 65 6d 61 63 73 71 6c 2d 70 72 6f 74 6f 63 6f 6c 2d 6d 69 78 69 6e 20 63 6c 61 73 73 the.emacsql-protocol-mixin.class
eb20 20 74 6f 20 64 6f 20 6d 6f 73 74 20 6f 66 20 74 68 65 20 77 6f 72 6b 2e 0a 0a 23 23 20 53 65 65 .to.do.most.of.the.work...##.See
eb40 20 41 6c 73 6f 0a 0a 20 2a 20 5b 53 51 4c 69 74 65 20 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 5d .Also...*.[SQLite.Documentation]
eb60 28 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 64 6f 63 73 2e 68 74 6d (https://www.sqlite.org/docs.htm
eb80 6c 29 0a 0a 5b 72 65 61 64 61 62 6c 65 5d 3a 20 68 74 74 70 3a 2f 2f 6e 75 6c 6c 70 72 6f 67 72 l)..[readable]:.http://nullprogr
eba0 61 6d 2e 63 6f 6d 2f 62 6c 6f 67 2f 32 30 31 33 2f 31 32 2f 33 30 2f 23 61 6c 6d 6f 73 74 5f 65 am.com/blog/2013/12/30/#almost_e
ebc0 76 65 72 79 74 68 69 6e 67 5f 70 72 69 6e 74 73 5f 72 65 61 64 61 62 6c 79 0a 5b 6d 69 73 74 61 verything_prints_readably.[mista
ebe0 6b 65 5d 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 2f 65 6d ke]:.https://github.com/magit/em
ec00 61 63 73 71 6c 2f 69 73 73 75 65 73 2f 33 35 23 69 73 73 75 65 63 6f 6d 6d 65 6e 74 2d 33 34 36 acsql/issues/35#issuecomment-346
ec20 33 35 32 34 33 39 0a 0a 3c 21 2d 2d 20 4c 6f 63 61 6c 57 6f 72 64 73 3a 20 45 49 45 49 4f 20 45 352439..<!--.LocalWords:.EIEIO.E
ec40 6c 69 73 70 20 45 6d 61 63 53 51 4c 20 4d 45 4c 50 41 20 4d 61 6b 65 66 69 6c 65 20 4e 4f 43 41 lisp.EmacSQL.MELPA.Makefile.NOCA
ec60 53 45 20 52 54 52 49 4d 20 20 2d 2d 3e 0a 3c 21 2d 2d 20 4c 6f 63 61 6c 57 6f 72 64 73 3a 20 53 SE.RTRIM..-->.<!--.LocalWords:.S
ec80 51 4c 27 73 20 61 75 74 6f 63 6f 6d 6d 69 74 20 65 6c 20 65 6d 61 63 73 71 6c 20 75 6e 70 72 69 QL's.autocommit.el.emacsql.unpri
eca0 6e 74 65 64 20 77 68 69 74 65 73 70 61 63 65 20 2d 2d 3e 0a 00 00 00 00 00 00 00 00 00 00 00 00 nted.whitespace.-->.............
ecc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ece0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
edc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ede0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ee00 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 55 4e 4c 49 43 45 4e 53 45 00 00 00 00 00 00 00 00 00 emacsql-4.3.1/UNLICENSE.........
ee20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ee40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ee60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
ee80 30 30 30 32 32 37 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 30 35 37 00 20 30 00 00 00 0002273.00000000000.013057..0...
eea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
ef20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
ef40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
efa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
efc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
efe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f000 54 68 69 73 20 69 73 20 66 72 65 65 20 61 6e 64 20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f This.is.free.and.unencumbered.so
f020 66 74 77 61 72 65 20 72 65 6c 65 61 73 65 64 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 ftware.released.into.the.public.
f040 64 6f 6d 61 69 6e 2e 0a 0a 41 6e 79 6f 6e 65 20 69 73 20 66 72 65 65 20 74 6f 20 63 6f 70 79 2c domain...Anyone.is.free.to.copy,
f060 20 6d 6f 64 69 66 79 2c 20 70 75 62 6c 69 73 68 2c 20 75 73 65 2c 20 63 6f 6d 70 69 6c 65 2c 20 .modify,.publish,.use,.compile,.
f080 73 65 6c 6c 2c 20 6f 72 0a 64 69 73 74 72 69 62 75 74 65 20 74 68 69 73 20 73 6f 66 74 77 61 72 sell,.or.distribute.this.softwar
f0a0 65 2c 20 65 69 74 68 65 72 20 69 6e 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66 6f 72 6d 20 6f 72 e,.either.in.source.code.form.or
f0c0 20 61 73 20 61 20 63 6f 6d 70 69 6c 65 64 0a 62 69 6e 61 72 79 2c 20 66 6f 72 20 61 6e 79 20 70 .as.a.compiled.binary,.for.any.p
f0e0 75 72 70 6f 73 65 2c 20 63 6f 6d 6d 65 72 63 69 61 6c 20 6f 72 20 6e 6f 6e 2d 63 6f 6d 6d 65 72 urpose,.commercial.or.non-commer
f100 63 69 61 6c 2c 20 61 6e 64 20 62 79 20 61 6e 79 0a 6d 65 61 6e 73 2e 0a 0a 49 6e 20 6a 75 72 69 cial,.and.by.any.means...In.juri
f120 73 64 69 63 74 69 6f 6e 73 20 74 68 61 74 20 72 65 63 6f 67 6e 69 7a 65 20 63 6f 70 79 72 69 67 sdictions.that.recognize.copyrig
f140 68 74 20 6c 61 77 73 2c 20 74 68 65 20 61 75 74 68 6f 72 20 6f 72 20 61 75 74 68 6f 72 73 0a 6f ht.laws,.the.author.or.authors.o
f160 66 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 20 64 65 64 69 63 61 74 65 20 61 6e 79 20 61 6e 64 f.this.software.dedicate.any.and
f180 20 61 6c 6c 20 63 6f 70 79 72 69 67 68 74 20 69 6e 74 65 72 65 73 74 20 69 6e 20 74 68 65 0a 73 .all.copyright.interest.in.the.s
f1a0 6f 66 74 77 61 72 65 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 20 57 65 oftware.to.the.public.domain..We
f1c0 20 6d 61 6b 65 20 74 68 69 73 20 64 65 64 69 63 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 62 65 .make.this.dedication.for.the.be
f1e0 6e 65 66 69 74 0a 6f 66 20 74 68 65 20 70 75 62 6c 69 63 20 61 74 20 6c 61 72 67 65 20 61 6e 64 nefit.of.the.public.at.large.and
f200 20 74 6f 20 74 68 65 20 64 65 74 72 69 6d 65 6e 74 20 6f 66 20 6f 75 72 20 68 65 69 72 73 20 61 .to.the.detriment.of.our.heirs.a
f220 6e 64 0a 73 75 63 63 65 73 73 6f 72 73 2e 20 57 65 20 69 6e 74 65 6e 64 20 74 68 69 73 20 64 65 nd.successors..We.intend.this.de
f240 64 69 63 61 74 69 6f 6e 20 74 6f 20 62 65 20 61 6e 20 6f 76 65 72 74 20 61 63 74 20 6f 66 0a 72 dication.to.be.an.overt.act.of.r
f260 65 6c 69 6e 71 75 69 73 68 6d 65 6e 74 20 69 6e 20 70 65 72 70 65 74 75 69 74 79 20 6f 66 20 61 elinquishment.in.perpetuity.of.a
f280 6c 6c 20 70 72 65 73 65 6e 74 20 61 6e 64 20 66 75 74 75 72 65 20 72 69 67 68 74 73 20 74 6f 20 ll.present.and.future.rights.to.
f2a0 74 68 69 73 0a 73 6f 66 74 77 61 72 65 20 75 6e 64 65 72 20 63 6f 70 79 72 69 67 68 74 20 6c 61 this.software.under.copyright.la
f2c0 77 2e 0a 0a 54 48 45 20 53 4f 46 54 57 41 52 45 20 49 53 20 50 52 4f 56 49 44 45 44 20 22 41 53 w...THE.SOFTWARE.IS.PROVIDED."AS
f2e0 20 49 53 22 2c 20 57 49 54 48 4f 55 54 20 57 41 52 52 41 4e 54 59 20 4f 46 20 41 4e 59 20 4b 49 .IS",.WITHOUT.WARRANTY.OF.ANY.KI
f300 4e 44 2c 0a 45 58 50 52 45 53 53 20 4f 52 20 49 4d 50 4c 49 45 44 2c 20 49 4e 43 4c 55 44 49 4e ND,.EXPRESS.OR.IMPLIED,.INCLUDIN
f320 47 20 42 55 54 20 4e 4f 54 20 4c 49 4d 49 54 45 44 20 54 4f 20 54 48 45 20 57 41 52 52 41 4e 54 G.BUT.NOT.LIMITED.TO.THE.WARRANT
f340 49 45 53 20 4f 46 0a 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 2c 20 46 49 54 4e 45 53 53 20 IES.OF.MERCHANTABILITY,.FITNESS.
f360 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 20 41 4e 44 20 4e 4f 4e FOR.A.PARTICULAR.PURPOSE.AND.NON
f380 49 4e 46 52 49 4e 47 45 4d 45 4e 54 2e 0a 49 4e 20 4e 4f 20 45 56 45 4e 54 20 53 48 41 4c 4c 20 INFRINGEMENT..IN.NO.EVENT.SHALL.
f3a0 54 48 45 20 41 55 54 48 4f 52 53 20 42 45 20 4c 49 41 42 4c 45 20 46 4f 52 20 41 4e 59 20 43 4c THE.AUTHORS.BE.LIABLE.FOR.ANY.CL
f3c0 41 49 4d 2c 20 44 41 4d 41 47 45 53 20 4f 52 0a 4f 54 48 45 52 20 4c 49 41 42 49 4c 49 54 59 2c AIM,.DAMAGES.OR.OTHER.LIABILITY,
f3e0 20 57 48 45 54 48 45 52 20 49 4e 20 41 4e 20 41 43 54 49 4f 4e 20 4f 46 20 43 4f 4e 54 52 41 43 .WHETHER.IN.AN.ACTION.OF.CONTRAC
f400 54 2c 20 54 4f 52 54 20 4f 52 20 4f 54 48 45 52 57 49 53 45 2c 0a 41 52 49 53 49 4e 47 20 46 52 T,.TORT.OR.OTHERWISE,.ARISING.FR
f420 4f 4d 2c 20 4f 55 54 20 4f 46 20 4f 52 20 49 4e 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 57 49 54 48 OM,.OUT.OF.OR.IN.CONNECTION.WITH
f440 20 54 48 45 20 53 4f 46 54 57 41 52 45 20 4f 52 20 54 48 45 20 55 53 45 20 4f 52 0a 4f 54 48 45 .THE.SOFTWARE.OR.THE.USE.OR.OTHE
f460 52 20 44 45 41 4c 49 4e 47 53 20 49 4e 20 54 48 45 20 53 4f 46 54 57 41 52 45 2e 0a 0a 46 6f 72 R.DEALINGS.IN.THE.SOFTWARE...For
f480 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 70 6c 65 61 73 65 20 72 65 66 65 72 20 .more.information,.please.refer.
f4a0 74 6f 20 3c 68 74 74 70 3a 2f 2f 75 6e 6c 69 63 65 6e 73 65 2e 6f 72 67 2f 3e 0a 00 00 00 00 00 to.<http://unlicense.org/>......
f4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f600 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 emacsql-4.3.1/emacsql-sqlite-bui
f620 6c 74 69 6e 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ltin.el.........................
f640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
f680 30 30 30 36 33 36 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 36 35 32 35 00 20 30 00 00 00 0006363.00000000000.016525..0...
f6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f700 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
f720 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
f740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f800 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 6e 2e 65 6c 20 2d 2d ;;;.emacsql-sqlite-builtin.el.--
f820 2d 20 45 6d 61 63 53 51 4c 20 62 61 63 6b 2d 65 6e 64 20 66 6f 72 20 53 51 4c 69 74 65 20 75 73 -.EmacSQL.back-end.for.SQLite.us
f840 69 6e 67 20 62 75 69 6c 74 69 6e 20 73 75 70 70 6f 72 74 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c ing.builtin.support..-*-.lexical
f860 2d 62 69 6e 64 69 6e 67 3a 74 20 2d 2a 2d 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 66 72 65 65 20 -binding:t.-*-..;;.This.is.free.
f880 61 6e 64 20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f 66 74 77 61 72 65 20 72 65 6c 65 61 73 and.unencumbered.software.releas
f8a0 65 64 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 0a 0a 3b 3b 20 41 ed.into.the.public.domain...;;.A
f8c0 75 74 68 6f 72 3a 20 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 20 3c 65 6d 61 63 73 2e 65 6d uthor:.Jonas.Bernoulli.<emacs.em
f8e0 61 63 73 71 6c 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e 64 65 76 3e 0a 3b 3b 20 4d 61 acsql@jonas.bernoulli.dev>.;;.Ma
f900 69 6e 74 61 69 6e 65 72 3a 20 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 20 3c 65 6d 61 63 73 intainer:.Jonas.Bernoulli.<emacs
f920 2e 65 6d 61 63 73 71 6c 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e 64 65 76 3e 0a 0a 3b .emacsql@jonas.bernoulli.dev>..;
f940 3b 20 53 50 44 58 2d 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 55 6e 6c 69 63 ;.SPDX-License-Identifier:.Unlic
f960 65 6e 73 65 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 6c ense..;;;.Commentary:..;;.This.l
f980 69 62 72 61 72 79 20 70 72 6f 76 69 64 65 73 20 61 6e 20 45 6d 61 63 53 51 4c 20 62 61 63 6b 2d ibrary.provides.an.EmacSQL.back-
f9a0 65 6e 64 20 66 6f 72 20 53 51 4c 69 74 65 2c 20 77 68 69 63 68 20 75 73 65 73 0a 3b 3b 20 74 68 end.for.SQLite,.which.uses.;;.th
f9c0 65 20 62 75 69 6c 74 2d 69 6e 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74 20 69 6e 20 45 6d 61 e.built-in.SQLite.support.in.Ema
f9e0 63 73 20 32 39 20 61 6e 20 6c 61 74 65 72 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 cs.29.an.later...;;;.Code:..(req
fa00 75 69 72 65 20 27 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 29 0a 0a 28 64 65 63 6c 61 72 65 2d uire.'emacsql-sqlite)..(declare-
fa20 66 75 6e 63 74 69 6f 6e 20 73 71 6c 69 74 65 2d 6f 70 65 6e 20 22 73 71 6c 69 74 65 2e 63 22 29 function.sqlite-open."sqlite.c")
fa40 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 73 71 6c 69 74 65 2d 73 65 6c 65 63 74 .(declare-function.sqlite-select
fa60 20 22 73 71 6c 69 74 65 2e 63 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 73 ."sqlite.c").(declare-function.s
fa80 71 6c 69 74 65 2d 63 6c 6f 73 65 20 22 73 71 6c 69 74 65 2e 63 22 29 0a 0a 28 65 6d 61 63 73 71 qlite-close."sqlite.c")..(emacsq
faa0 6c 2d 72 65 67 69 73 74 65 72 2d 72 65 73 65 72 76 65 64 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 l-register-reserved.emacsql-sqli
fac0 74 65 2d 72 65 73 65 72 76 65 64 29 0a 0a 28 64 65 66 63 6c 61 73 73 20 65 6d 61 63 73 71 6c 2d te-reserved)..(defclass.emacsql-
fae0 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 6e 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 65 6d 61 63 73 sqlite-builtin-connection.(emacs
fb00 71 6c 2d 2d 73 71 6c 69 74 65 2d 62 61 73 65 29 20 28 29 0a 20 20 22 41 20 63 6f 6e 6e 65 63 74 ql--sqlite-base).()..."A.connect
fb20 69 6f 6e 20 74 6f 20 61 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 75 73 69 6e 67 20 62 ion.to.a.SQLite.database.using.b
fb40 75 69 6c 74 69 6e 20 73 75 70 70 6f 72 74 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 uiltin.support.")..(cl-defmethod
fb60 20 69 6e 69 74 69 61 6c 69 7a 65 2d 69 6e 73 74 61 6e 63 65 20 3a 61 66 74 65 72 0a 20 20 28 28 .initialize-instance.:after...((
fb80 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 connection.emacsql-sqlite-builti
fba0 6e 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 26 72 65 73 74 20 5f 29 0a 20 20 28 6f 73 65 74 20 63 n-connection).&rest._)...(oset.c
fbc0 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 0a 20 20 20 20 20 20 20 20 28 73 71 6c 69 74 65 onnection.handle.........(sqlite
fbe0 2d 6f 70 65 6e 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 69 6c 65 29 29 29 0a 20 -open.(oref.connection.file)))..
fc00 20 28 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 73 65 74 2d 62 75 73 79 2d 74 69 6d 65 6f 75 .(emacsql-sqlite-set-busy-timeou
fc20 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 28 65 6d 61 63 73 71 6c 20 63 6f 6e 6e 65 63 74 t.connection)...(emacsql.connect
fc40 69 6f 6e 20 5b 3a 70 72 61 67 6d 61 20 28 3d 20 66 6f 72 65 69 67 6e 2d 6b 65 79 73 20 6f 6e 29 ion.[:pragma.(=.foreign-keys.on)
fc60 5d 29 0a 20 20 28 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 20 63 6f 6e 6e 65 63 74 69 6f ])...(emacsql-register.connectio
fc80 6e 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 n))..(cl-defun.emacsql-sqlite-bu
fca0 69 6c 74 69 6e 20 28 66 69 6c 65 20 26 6b 65 79 20 64 65 62 75 67 29 0a 20 20 22 4f 70 65 6e 20 iltin.(file.&key.debug)..."Open.
fcc0 61 20 63 6f 6e 6e 65 63 74 65 64 20 74 6f 20 64 61 74 61 62 61 73 65 20 73 74 6f 72 65 64 20 69 a.connected.to.database.stored.i
fce0 6e 20 46 49 4c 45 2e 0a 49 66 20 46 49 4c 45 20 69 73 20 6e 69 6c 20 75 73 65 20 61 6e 20 69 6e n.FILE..If.FILE.is.nil.use.an.in
fd00 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 2e 0a 0a 3a 64 65 62 75 67 20 4c 4f 47 20 2d 2d -memory.database...:debug.LOG.--
fd20 20 57 68 65 6e 20 6e 6f 6e 2d 6e 69 6c 2c 20 6c 6f 67 20 61 6c 6c 20 53 51 4c 69 74 65 20 63 6f .When.non-nil,.log.all.SQLite.co
fd40 6d 6d 61 6e 64 73 20 74 6f 20 61 20 6c 6f 67 0a 62 75 66 66 65 72 2e 20 20 54 68 69 73 20 69 73 mmands.to.a.log.buffer...This.is
fd60 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 20 70 75 72 70 6f 73 65 73 2e 22 0a 20 20 28 6c 65 74 .for.debugging.purposes."...(let
fd80 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 6d 61 6b 65 2d 69 6e 73 74 61 6e 63 65 20 23 27 65 .((connection.(make-instance.#'e
fda0 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 6e 2d 63 6f 6e 6e 65 63 74 69 6f 6e macsql-sqlite-builtin-connection
fdc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
fde0 20 20 20 20 3a 66 69 6c 65 20 66 69 6c 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 64 65 62 75 ....:file.file))).....(when.debu
fe00 67 0a 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 65 6e 61 62 6c 65 2d 64 65 62 75 67 67 69 6e g.......(emacsql-enable-debuggin
fe20 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a g.connection)).....connection)).
fe40 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 6c 69 76 65 2d 70 20 28 28 .(cl-defmethod.emacsql-live-p.((
fe60 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 connection.emacsql-sqlite-builti
fe80 6e 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 28 61 6e 64 20 28 6f 72 65 66 20 63 6f 6e 6e n-connection))...(and.(oref.conn
fea0 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 20 74 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f ection.handle).t))..(cl-defmetho
fec0 64 20 65 6d 61 63 73 71 6c 2d 63 6c 6f 73 65 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 d.emacsql-close.((connection.ema
fee0 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 6e 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 csql-sqlite-builtin-connection))
ff00 0a 20 20 28 73 71 6c 69 74 65 2d 63 6c 6f 73 65 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f ...(sqlite-close.(oref.connectio
ff20 6e 20 68 61 6e 64 6c 65 29 29 0a 20 20 28 6f 73 65 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 n.handle))...(oset.connection.ha
ff40 6e 64 6c 65 20 6e 69 6c 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 ndle.nil))..(cl-defmethod.emacsq
ff60 6c 2d 73 65 6e 64 2d 6d 65 73 73 61 67 65 0a 20 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d l-send-message...((connection.em
ff80 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 6e 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 acsql-sqlite-builtin-connection)
ffa0 20 6d 65 73 73 61 67 65 29 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 0a .message)...(condition-case.err.
ffc0 20 20 20 20 20 20 28 6c 65 74 20 28 28 68 65 61 64 65 72 70 20 65 6d 61 63 73 71 6c 2d 69 6e 63 ......(let.((headerp.emacsql-inc
ffe0 6c 75 64 65 2d 68 65 61 64 65 72 29 29 0a 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c lude-header)).........(mapcar.(l
10000 61 6d 62 64 61 20 28 72 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 ambda.(row)...................(c
10020 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 70 20 ond....................(headerp.
10040 28 73 65 74 71 20 68 65 61 64 65 72 70 20 6e 69 6c 29 20 72 6f 77 29 0a 20 20 20 20 20 20 20 20 (setq.headerp.nil).row).........
10060 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 61 70 63 61 6e 20 28 6c 61 6d 62 64 61 20 28 63 6f 6c ...........((mapcan.(lambda.(col
10080 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
100a0 28 63 6f 6e 64 20 28 28 6e 75 6c 6c 20 63 6f 6c 29 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 29 (cond.((null.col).....(list.nil)
100c0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )...............................
100e0 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 63 6f 6c 20 22 22 29 20 28 6c 69 73 74 20 22 22 29 29 ......((equal.col."").(list.""))
10100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
10120 20 20 20 20 20 28 28 6e 75 6d 62 65 72 70 20 63 6f 6c 29 20 20 28 6c 69 73 74 20 63 6f 6c 29 29 .....((numberp.col)..(list.col))
10140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
10160 20 20 20 20 20 28 28 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 72 65 61 64 2d 63 6f 6c 75 6d .....((emacsql-sqlite-read-colum
10180 6e 20 63 6f 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n.col)))).......................
101a0 20 20 20 20 20 20 72 6f 77 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 ......row)))).................(s
101c0 71 6c 69 74 65 2d 73 65 6c 65 63 74 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 qlite-select.(oref.connection.ha
101e0 6e 64 6c 65 29 20 6d 65 73 73 61 67 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ndle).message.nil...............
10200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 65 6d 61 63 73 71 6c 2d 69 6e .................(and.emacsql-in
10220 63 6c 75 64 65 2d 68 65 61 64 65 72 20 27 66 75 6c 6c 29 29 29 29 0a 20 20 20 20 28 28 73 71 6c clude-header.'full)))).....((sql
10240 69 74 65 2d 65 72 72 6f 72 20 73 71 6c 69 74 65 2d 6c 6f 63 6b 65 64 2d 65 72 72 6f 72 29 0a 20 ite-error.sqlite-locked-error)..
10260 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 28 63 64 72 20 65 72 72 29 29 0a 20 20 20 20 ....(if.(stringp.(cdr.err)).....
10280 20 20 20 20 20 28 73 69 67 6e 61 6c 20 27 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 28 6c 69 73 .....(signal.'emacsql-error.(lis
102a0 74 20 28 63 64 72 20 65 72 72 29 29 29 0a 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a t.(cdr.err)))........(pcase-let*
102c0 20 28 28 60 28 2c 5f 20 2c 65 72 72 73 74 72 20 2c 65 72 72 6d 73 67 20 2c 65 72 72 63 6f 64 65 .((`(,_.,errstr.,errmsg.,errcode
102e0 20 2c 65 78 74 2d 65 72 72 63 6f 64 65 29 20 65 72 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .,ext-errcode).err).............
10300 20 20 20 20 20 20 20 20 28 60 28 2c 5f 20 2c 5f 20 2c 73 69 67 6e 61 6c 20 2c 5f 29 0a 20 20 20 ........(`(,_.,_.,signal.,_)....
10320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73 73 71 20 65 72 72 63 6f 64 65 20 ..................(assq.errcode.
10340 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 65 72 72 6f 72 2d 63 6f 64 65 73 29 29 29 0a 20 20 emacsql-sqlite-error-codes)))...
10360 20 20 20 20 20 20 20 28 73 69 67 6e 61 6c 20 28 6f 72 20 73 69 67 6e 61 6c 20 27 65 6d 61 63 73 .......(signal.(or.signal.'emacs
10380 71 6c 2d 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 ql-error)..................(list
103a0 20 65 72 72 6d 73 67 20 65 72 72 63 6f 64 65 20 65 78 74 2d 65 72 72 63 6f 64 65 20 65 72 72 73 .errmsg.errcode.ext-errcode.errs
103c0 74 72 29 29 29 29 29 0a 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 28 73 69 67 6e 61 6c 20 tr))))).....(error......(signal.
103e0 27 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 28 63 64 72 20 65 72 72 29 29 29 29 29 0a 0a 28 63 'emacsql-error.(cdr.err)))))..(c
10400 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e l-defmethod.emacsql.((connection
10420 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 6e 2d 63 6f 6e 6e 65 63 74 69 .emacsql-sqlite-builtin-connecti
10440 6f 6e 29 20 73 71 6c 20 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 28 65 6d 61 63 73 71 6c 2d 73 on).sql.&rest.args)...(emacsql-s
10460 65 6e 64 2d 6d 65 73 73 61 67 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 61 70 70 6c 79 20 23 27 end-message.connection.(apply.#'
10480 65 6d 61 63 73 71 6c 2d 63 6f 6d 70 69 6c 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 71 6c 20 61 emacsql-compile.connection.sql.a
104a0 72 67 73 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 rgs)))..(provide.'emacsql-sqlite
104c0 2d 62 75 69 6c 74 69 6e 29 0a 0a 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 -builtin)..;;;.emacsql-sqlite-bu
104e0 69 6c 74 69 6e 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 iltin.el.ends.here..............
10500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
105a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
105c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
105e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10600 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 65 6d 61 63 73 71 6c 2d 70 6b 67 2e 65 6c 00 00 00 00 emacsql-4.3.1/emacsql-pkg.el....
10620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
10680 30 30 30 30 36 31 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 33 32 36 00 20 30 00 00 00 0000610.00000000000.014326..0...
106a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
106c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
106e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10700 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
10720 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
10740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
107a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
107c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
107e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10800 3b 3b 20 47 65 6e 65 72 61 74 65 64 20 70 61 63 6b 61 67 65 20 64 65 73 63 72 69 70 74 69 6f 6e ;;.Generated.package.description
10820 20 66 72 6f 6d 20 65 6d 61 63 73 71 6c 2e 65 6c 20 20 2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63 6f .from.emacsql.el..-*-.no-byte-co
10840 6d 70 69 6c 65 3a 20 74 20 2d 2a 2d 0a 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 65 6d mpile:.t.-*-.(define-package."em
10860 61 63 73 71 6c 22 20 22 34 2e 33 2e 31 22 20 22 48 69 67 68 2d 6c 65 76 65 6c 20 53 51 4c 20 64 acsql"."4.3.1"."High-level.SQL.d
10880 61 74 61 62 61 73 65 20 66 72 6f 6e 74 2d 65 6e 64 22 20 27 28 28 65 6d 61 63 73 20 22 32 36 2e atabase.front-end".'((emacs."26.
108a0 31 22 29 29 20 3a 63 6f 6d 6d 69 74 20 22 63 65 64 30 36 32 38 39 30 30 36 31 62 36 65 34 66 62 1")).:commit."ced062890061b6e4fb
108c0 65 34 64 30 30 63 30 36 31 37 66 37 66 66 38 34 66 66 66 32 35 63 22 20 3a 61 75 74 68 6f 72 73 e4d00c0617f7ff84fff25c".:authors
108e0 20 27 28 28 22 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 22 20 2e 20 22 77 65 6c .'(("Christopher.Wellons"..."wel
10900 6c 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 22 29 29 20 3a 6d 61 69 6e 74 61 69 lons@nullprogram.com")).:maintai
10920 6e 65 72 20 27 28 22 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 22 20 2e 20 22 65 6d 61 63 73 ner.'("Jonas.Bernoulli"..."emacs
10940 2e 65 6d 61 63 73 71 6c 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e 64 65 76 22 29 20 3a .emacsql@jonas.bernoulli.dev").:
10960 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 2f 65 6d url."https://github.com/magit/em
10980 61 63 73 71 6c 22 29 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 acsql").........................
109a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
109c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
109e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10a00 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2e 65 6c 00 00 emacsql-4.3.1/emacsql-mysql.el..
10a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10a60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
10a80 30 30 31 34 31 37 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 37 32 36 00 20 30 00 00 00 0014176.00000000000.014726..0...
10aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
10b20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
10b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10c00 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2e 65 6c 20 2d 2d 2d 20 45 6d 61 63 53 51 4c ;;;.emacsql-mysql.el.---.EmacSQL
10c20 20 62 61 63 6b 2d 65 6e 64 20 66 6f 72 20 4d 79 53 51 4c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c .back-end.for.MySQL..-*-.lexical
10c40 2d 62 69 6e 64 69 6e 67 3a 74 20 2d 2a 2d 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 66 72 65 65 20 -binding:t.-*-..;;.This.is.free.
10c60 61 6e 64 20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f 66 74 77 61 72 65 20 72 65 6c 65 61 73 and.unencumbered.software.releas
10c80 65 64 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 0a 0a 3b 3b 20 41 ed.into.the.public.domain...;;.A
10ca0 75 74 68 6f 72 3a 20 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 20 3c 77 65 6c 6c uthor:.Christopher.Wellons.<well
10cc0 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e ons@nullprogram.com>.;;.Maintain
10ce0 65 72 3a 20 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 20 3c 65 6d 61 63 73 2e 65 6d 61 63 73 er:.Jonas.Bernoulli.<emacs.emacs
10d00 71 6c 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e 64 65 76 3e 0a 0a 3b 3b 20 53 50 44 58 ql@jonas.bernoulli.dev>..;;.SPDX
10d20 2d 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 55 6e 6c 69 63 65 6e 73 65 0a 0a -License-Identifier:.Unlicense..
10d40 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 6c 69 62 72 61 72 79 ;;;.Commentary:..;;.This.library
10d60 20 70 72 6f 76 69 64 65 73 20 61 6e 20 45 6d 61 63 53 51 4c 20 62 61 63 6b 2d 65 6e 64 20 66 6f .provides.an.EmacSQL.back-end.fo
10d80 72 20 4d 79 53 51 4c 2c 20 77 68 69 63 68 20 75 73 65 73 0a 3b 3b 20 74 68 65 20 73 74 61 6e 64 r.MySQL,.which.uses.;;.the.stand
10da0 61 72 64 20 60 6d 73 71 6c 27 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 70 72 6f 67 72 61 6d 2e ard.`msql'.command.line.program.
10dc0 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 65 6d 61 63 73 71 6c 29 0a ..;;;.Code:..(require.'emacsql).
10de0 0a 28 64 65 66 76 61 72 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 65 78 65 63 75 74 61 62 6c .(defvar.emacsql-mysql-executabl
10e00 65 20 22 6d 79 73 71 6c 22 0a 20 20 22 50 61 74 68 20 74 6f 20 74 68 65 20 6d 79 73 71 6c 20 63 e."mysql"..."Path.to.the.mysql.c
10e20 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 65 78 65 63 75 74 61 62 6c 65 2e 22 29 0a 0a 28 64 65 66 76 ommand.line.executable.")..(defv
10e40 61 72 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 73 65 6e 74 69 6e 65 6c 20 22 2d 2d 2d 2d 2d ar.emacsql-mysql-sentinel."-----
10e60 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 ---------\n\n--------------\n\n"
10e80 0a 20 20 22 57 68 61 74 20 4d 79 53 51 4c 20 77 69 6c 6c 20 70 72 69 6e 74 20 77 68 65 6e 20 69 ..."What.MySQL.will.print.when.i
10ea0 74 20 68 61 73 20 63 6f 6d 70 6c 65 74 65 64 20 69 74 73 20 6f 75 74 70 75 74 2e 22 29 0a 0a 28 t.has.completed.its.output.")..(
10ec0 64 65 66 63 6f 6e 73 74 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 72 65 73 65 72 76 65 64 0a defconst.emacsql-mysql-reserved.
10ee0 20 20 28 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 2d 72 65 73 65 72 76 65 64 0a 20 20 20 ..(emacsql-register-reserved....
10f00 27 28 20 41 43 43 45 53 53 49 42 4c 45 20 41 44 44 20 41 4c 4c 20 41 4c 54 45 52 20 41 4e 41 4c '(.ACCESSIBLE.ADD.ALL.ALTER.ANAL
10f20 59 5a 45 20 41 4e 44 20 41 53 20 41 53 43 20 41 53 45 4e 53 49 54 49 56 45 20 42 45 46 4f 52 45 YZE.AND.AS.ASC.ASENSITIVE.BEFORE
10f40 0a 20 20 20 20 20 20 42 45 54 57 45 45 4e 20 42 49 47 49 4e 54 20 42 49 4e 41 52 59 20 42 4c 4f .......BETWEEN.BIGINT.BINARY.BLO
10f60 42 20 42 4f 54 48 20 42 59 20 43 41 4c 4c 20 43 41 53 43 41 44 45 20 43 41 53 45 20 43 48 41 4e B.BOTH.BY.CALL.CASCADE.CASE.CHAN
10f80 47 45 20 43 48 41 52 0a 20 20 20 20 20 20 43 48 41 52 41 43 54 45 52 20 43 48 45 43 4b 20 43 4f GE.CHAR.......CHARACTER.CHECK.CO
10fa0 4c 4c 41 54 45 20 43 4f 4c 55 4d 4e 20 43 4f 4e 44 49 54 49 4f 4e 20 43 4f 4e 53 54 52 41 49 4e LLATE.COLUMN.CONDITION.CONSTRAIN
10fc0 54 20 43 4f 4e 54 49 4e 55 45 0a 20 20 20 20 20 20 43 4f 4e 56 45 52 54 20 43 52 45 41 54 45 20 T.CONTINUE.......CONVERT.CREATE.
10fe0 43 52 4f 53 53 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 20 CROSS.CURRENT_DATE.CURRENT_TIME.
11000 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 0a 20 20 20 20 20 20 43 55 52 52 45 4e 54 5f CURRENT_TIMESTAMP.......CURRENT_
11020 55 53 45 52 20 43 55 52 53 4f 52 20 44 41 54 41 42 41 53 45 20 44 41 54 41 42 41 53 45 53 20 44 USER.CURSOR.DATABASE.DATABASES.D
11040 41 59 5f 48 4f 55 52 20 44 41 59 5f 4d 49 43 52 4f 53 45 43 4f 4e 44 0a 20 20 20 20 20 20 44 41 AY_HOUR.DAY_MICROSECOND.......DA
11060 59 5f 4d 49 4e 55 54 45 20 44 41 59 5f 53 45 43 4f 4e 44 20 44 45 43 20 44 45 43 49 4d 41 4c 20 Y_MINUTE.DAY_SECOND.DEC.DECIMAL.
11080 44 45 43 4c 41 52 45 20 44 45 46 41 55 4c 54 20 44 45 4c 41 59 45 44 20 44 45 4c 45 54 45 0a 20 DECLARE.DEFAULT.DELAYED.DELETE..
110a0 20 20 20 20 20 44 45 53 43 20 44 45 53 43 52 49 42 45 20 44 45 54 45 52 4d 49 4e 49 53 54 49 43 .....DESC.DESCRIBE.DETERMINISTIC
110c0 20 44 49 53 54 49 4e 43 54 20 44 49 53 54 49 4e 43 54 52 4f 57 20 44 49 56 20 44 4f 55 42 4c 45 .DISTINCT.DISTINCTROW.DIV.DOUBLE
110e0 20 44 52 4f 50 0a 20 20 20 20 20 20 44 55 41 4c 20 45 41 43 48 20 45 4c 53 45 20 45 4c 53 45 49 .DROP.......DUAL.EACH.ELSE.ELSEI
11100 46 20 45 4e 43 4c 4f 53 45 44 20 45 53 43 41 50 45 44 20 45 58 49 53 54 53 20 45 58 49 54 20 45 F.ENCLOSED.ESCAPED.EXISTS.EXIT.E
11120 58 50 4c 41 49 4e 20 46 41 4c 53 45 0a 20 20 20 20 20 20 46 45 54 43 48 20 46 4c 4f 41 54 20 46 XPLAIN.FALSE.......FETCH.FLOAT.F
11140 4c 4f 41 54 34 20 46 4c 4f 41 54 38 20 46 4f 52 20 46 4f 52 43 45 20 46 4f 52 45 49 47 4e 20 46 LOAT4.FLOAT8.FOR.FORCE.FOREIGN.F
11160 52 4f 4d 20 46 55 4c 4c 54 45 58 54 20 47 45 4e 45 52 41 4c 0a 20 20 20 20 20 20 47 52 41 4e 54 ROM.FULLTEXT.GENERAL.......GRANT
11180 20 47 52 4f 55 50 20 48 41 56 49 4e 47 20 48 49 47 48 5f 50 52 49 4f 52 49 54 59 20 48 4f 55 52 .GROUP.HAVING.HIGH_PRIORITY.HOUR
111a0 5f 4d 49 43 52 4f 53 45 43 4f 4e 44 20 48 4f 55 52 5f 4d 49 4e 55 54 45 0a 20 20 20 20 20 20 48 _MICROSECOND.HOUR_MINUTE.......H
111c0 4f 55 52 5f 53 45 43 4f 4e 44 20 49 46 20 49 47 4e 4f 52 45 20 49 47 4e 4f 52 45 5f 53 45 52 56 OUR_SECOND.IF.IGNORE.IGNORE_SERV
111e0 45 52 5f 49 44 53 20 49 4e 20 49 4e 44 45 58 20 49 4e 46 49 4c 45 20 49 4e 4e 45 52 0a 20 20 20 ER_IDS.IN.INDEX.INFILE.INNER....
11200 20 20 20 49 4e 4f 55 54 20 49 4e 53 45 4e 53 49 54 49 56 45 20 49 4e 53 45 52 54 20 49 4e 54 20 ...INOUT.INSENSITIVE.INSERT.INT.
11220 49 4e 54 31 20 49 4e 54 32 20 49 4e 54 33 20 49 4e 54 34 20 49 4e 54 38 20 49 4e 54 45 47 45 52 INT1.INT2.INT3.INT4.INT8.INTEGER
11240 0a 20 20 20 20 20 20 49 4e 54 45 52 56 41 4c 20 49 4e 54 4f 20 49 53 20 49 54 45 52 41 54 45 20 .......INTERVAL.INTO.IS.ITERATE.
11260 4a 4f 49 4e 20 4b 45 59 20 4b 45 59 53 20 4b 49 4c 4c 20 4c 45 41 44 49 4e 47 20 4c 45 41 56 45 JOIN.KEY.KEYS.KILL.LEADING.LEAVE
11280 20 4c 45 46 54 0a 20 20 20 20 20 20 4c 49 4b 45 20 4c 49 4d 49 54 20 4c 49 4e 45 41 52 20 4c 49 .LEFT.......LIKE.LIMIT.LINEAR.LI
112a0 4e 45 53 20 4c 4f 41 44 20 4c 4f 43 41 4c 54 49 4d 45 20 4c 4f 43 41 4c 54 49 4d 45 53 54 41 4d NES.LOAD.LOCALTIME.LOCALTIMESTAM
112c0 50 20 4c 4f 43 4b 20 4c 4f 4e 47 0a 20 20 20 20 20 20 4c 4f 4e 47 42 4c 4f 42 20 4c 4f 4e 47 54 P.LOCK.LONG.......LONGBLOB.LONGT
112e0 45 58 54 20 4c 4f 4f 50 20 4c 4f 57 5f 50 52 49 4f 52 49 54 59 20 4d 41 53 54 45 52 5f 48 45 41 EXT.LOOP.LOW_PRIORITY.MASTER_HEA
11300 52 54 42 45 41 54 5f 50 45 52 49 4f 44 0a 20 20 20 20 20 20 4d 41 53 54 45 52 5f 53 53 4c 5f 56 RTBEAT_PERIOD.......MASTER_SSL_V
11320 45 52 49 46 59 5f 53 45 52 56 45 52 5f 43 45 52 54 20 4d 41 54 43 48 20 4d 41 58 56 41 4c 55 45 ERIFY_SERVER_CERT.MATCH.MAXVALUE
11340 20 4d 41 58 56 41 4c 55 45 20 4d 45 44 49 55 4d 42 4c 4f 42 0a 20 20 20 20 20 20 4d 45 44 49 55 .MAXVALUE.MEDIUMBLOB.......MEDIU
11360 4d 49 4e 54 20 4d 45 44 49 55 4d 54 45 58 54 20 4d 49 44 44 4c 45 49 4e 54 20 4d 49 4e 55 54 45 MINT.MEDIUMTEXT.MIDDLEINT.MINUTE
11380 5f 4d 49 43 52 4f 53 45 43 4f 4e 44 20 4d 49 4e 55 54 45 5f 53 45 43 4f 4e 44 0a 20 20 20 20 20 _MICROSECOND.MINUTE_SECOND......
113a0 20 4d 4f 44 20 4d 4f 44 49 46 49 45 53 20 4e 41 54 55 52 41 4c 20 4e 4f 54 20 4e 4f 5f 57 52 49 .MOD.MODIFIES.NATURAL.NOT.NO_WRI
113c0 54 45 5f 54 4f 5f 42 49 4e 4c 4f 47 20 4e 55 4c 4c 20 4e 55 4d 45 52 49 43 20 4f 4e 0a 20 20 20 TE_TO_BINLOG.NULL.NUMERIC.ON....
113e0 20 20 20 4f 50 54 49 4d 49 5a 45 20 4f 50 54 49 4f 4e 20 4f 50 54 49 4f 4e 41 4c 4c 59 20 4f 52 ...OPTIMIZE.OPTION.OPTIONALLY.OR
11400 20 4f 52 44 45 52 20 4f 55 54 20 4f 55 54 45 52 20 4f 55 54 46 49 4c 45 20 50 52 45 43 49 53 49 .ORDER.OUT.OUTER.OUTFILE.PRECISI
11420 4f 4e 0a 20 20 20 20 20 20 50 52 49 4d 41 52 59 20 50 52 4f 43 45 44 55 52 45 20 50 55 52 47 45 ON.......PRIMARY.PROCEDURE.PURGE
11440 20 52 41 4e 47 45 20 52 45 41 44 20 52 45 41 44 53 20 52 45 41 44 5f 57 52 49 54 45 20 52 45 41 .RANGE.READ.READS.READ_WRITE.REA
11460 4c 0a 20 20 20 20 20 20 52 45 46 45 52 45 4e 43 45 53 20 52 45 47 45 58 50 20 52 45 4c 45 41 53 L.......REFERENCES.REGEXP.RELEAS
11480 45 20 52 45 4e 41 4d 45 20 52 45 50 45 41 54 20 52 45 50 4c 41 43 45 20 52 45 51 55 49 52 45 20 E.RENAME.REPEAT.REPLACE.REQUIRE.
114a0 52 45 53 49 47 4e 41 4c 0a 20 20 20 20 20 20 52 45 53 49 47 4e 41 4c 20 52 45 53 54 52 49 43 54 RESIGNAL.......RESIGNAL.RESTRICT
114c0 20 52 45 54 55 52 4e 20 52 45 56 4f 4b 45 20 52 49 47 48 54 20 52 4c 49 4b 45 20 53 43 48 45 4d .RETURN.REVOKE.RIGHT.RLIKE.SCHEM
114e0 41 20 53 43 48 45 4d 41 53 0a 20 20 20 20 20 20 53 45 43 4f 4e 44 5f 4d 49 43 52 4f 53 45 43 4f A.SCHEMAS.......SECOND_MICROSECO
11500 4e 44 20 53 45 4c 45 43 54 20 53 45 4e 53 49 54 49 56 45 20 53 45 50 41 52 41 54 4f 52 20 53 45 ND.SELECT.SENSITIVE.SEPARATOR.SE
11520 54 20 53 48 4f 57 20 53 49 47 4e 41 4c 0a 20 20 20 20 20 20 53 49 47 4e 41 4c 20 53 4c 4f 57 20 T.SHOW.SIGNAL.......SIGNAL.SLOW.
11540 53 4d 41 4c 4c 49 4e 54 20 53 50 41 54 49 41 4c 20 53 50 45 43 49 46 49 43 20 53 51 4c 20 53 51 SMALLINT.SPATIAL.SPECIFIC.SQL.SQ
11560 4c 5f 42 49 47 5f 52 45 53 55 4c 54 0a 20 20 20 20 20 20 53 51 4c 5f 43 41 4c 43 5f 46 4f 55 4e L_BIG_RESULT.......SQL_CALC_FOUN
11580 44 5f 52 4f 57 53 20 53 51 4c 45 58 43 45 50 54 49 4f 4e 20 53 51 4c 5f 53 4d 41 4c 4c 5f 52 45 D_ROWS.SQLEXCEPTION.SQL_SMALL_RE
115a0 53 55 4c 54 20 53 51 4c 53 54 41 54 45 0a 20 20 20 20 20 20 53 51 4c 57 41 52 4e 49 4e 47 20 53 SULT.SQLSTATE.......SQLWARNING.S
115c0 53 4c 20 53 54 41 52 54 49 4e 47 20 53 54 52 41 49 47 48 54 5f 4a 4f 49 4e 20 54 41 42 4c 45 20 SL.STARTING.STRAIGHT_JOIN.TABLE.
115e0 54 45 52 4d 49 4e 41 54 45 44 20 54 48 45 4e 0a 20 20 20 20 20 20 54 49 4e 59 42 4c 4f 42 20 54 TERMINATED.THEN.......TINYBLOB.T
11600 49 4e 59 49 4e 54 20 54 49 4e 59 54 45 58 54 20 54 4f 20 54 52 41 49 4c 49 4e 47 20 54 52 49 47 INYINT.TINYTEXT.TO.TRAILING.TRIG
11620 47 45 52 20 54 52 55 45 20 55 4e 44 4f 20 55 4e 49 4f 4e 0a 20 20 20 20 20 20 55 4e 49 51 55 45 GER.TRUE.UNDO.UNION.......UNIQUE
11640 20 55 4e 4c 4f 43 4b 20 55 4e 53 49 47 4e 45 44 20 55 50 44 41 54 45 20 55 53 41 47 45 20 55 53 .UNLOCK.UNSIGNED.UPDATE.USAGE.US
11660 45 20 55 53 49 4e 47 20 55 54 43 5f 44 41 54 45 20 55 54 43 5f 54 49 4d 45 0a 20 20 20 20 20 20 E.USING.UTC_DATE.UTC_TIME.......
11680 55 54 43 5f 54 49 4d 45 53 54 41 4d 50 20 56 41 4c 55 45 53 20 56 41 52 42 49 4e 41 52 59 20 56 UTC_TIMESTAMP.VALUES.VARBINARY.V
116a0 41 52 43 48 41 52 20 56 41 52 43 48 41 52 41 43 54 45 52 20 56 41 52 59 49 4e 47 20 57 48 45 4e ARCHAR.VARCHARACTER.VARYING.WHEN
116c0 0a 20 20 20 20 20 20 57 48 45 52 45 20 57 48 49 4c 45 20 57 49 54 48 20 57 52 49 54 45 20 58 4f .......WHERE.WHILE.WITH.WRITE.XO
116e0 52 20 59 45 41 52 5f 4d 4f 4e 54 48 20 5a 45 52 4f 46 49 4c 4c 29 29 0a 20 20 22 4c 69 73 74 20 R.YEAR_MONTH.ZEROFILL))..."List.
11700 6f 66 20 61 6c 6c 20 6f 66 20 4d 79 53 51 4c 27 73 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 73 of.all.of.MySQL's.reserved.words
11720 2e 0a 68 74 74 70 3a 2f 2f 64 65 76 2e 6d 79 73 71 6c 2e 63 6f 6d 2f 64 6f 63 2f 72 65 66 6d 61 ..http://dev.mysql.com/doc/refma
11740 6e 2f 35 2e 35 2f 65 6e 2f 72 65 73 65 72 76 65 64 2d 77 6f 72 64 73 2e 68 74 6d 6c 22 29 0a 0a n/5.5/en/reserved-words.html")..
11760 28 64 65 66 63 6c 61 73 73 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 (defclass.emacsql-mysql-connecti
11780 6f 6e 20 28 65 6d 61 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 28 28 64 62 6e 61 on.(emacsql-connection)...((dbna
117a0 6d 65 20 3a 72 65 61 64 65 72 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2d 64 62 6e 61 6d 65 20 3a me.:reader.emacsql-psql-dbname.:
117c0 69 6e 69 74 61 72 67 20 3a 64 62 6e 61 6d 65 29 0a 20 20 20 28 74 79 70 65 73 20 3a 61 6c 6c 6f initarg.:dbname)....(types.:allo
117e0 63 61 74 69 6f 6e 20 3a 63 6c 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 3a 72 65 61 64 65 72 20 cation.:class...........:reader.
11800 65 6d 61 63 73 71 6c 2d 74 79 70 65 73 0a 20 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 66 6f 72 emacsql-types...........:initfor
11820 6d 20 27 28 28 69 6e 74 65 67 65 72 20 22 42 49 47 49 4e 54 22 29 0a 20 20 20 20 20 20 20 20 20 m.'((integer."BIGINT")..........
11840 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6c 6f 61 74 20 22 44 4f 55 42 4c 45 22 29 0a 20 20 .............(float."DOUBLE")...
11860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 62 6a 65 63 74 20 22 4c 4f 4e ....................(object."LON
11880 47 54 45 58 54 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e GTEXT").......................(n
118a0 69 6c 20 22 4c 4f 4e 47 54 45 58 54 22 29 29 29 29 0a 20 20 22 41 20 63 6f 6e 6e 65 63 74 69 6f il."LONGTEXT"))))..."A.connectio
118c0 6e 20 74 6f 20 61 20 4d 79 53 51 4c 20 64 61 74 61 62 61 73 65 2e 22 29 0a 0a 28 63 6c 2d 64 65 n.to.a.MySQL.database.")..(cl-de
118e0 66 75 6e 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 20 28 64 61 74 61 62 61 73 65 20 26 6b 65 79 fun.emacsql-mysql.(database.&key
11900 20 75 73 65 72 20 70 61 73 73 77 6f 72 64 20 68 6f 73 74 20 70 6f 72 74 20 64 65 62 75 67 29 0a .user.password.host.port.debug).
11920 20 20 22 43 6f 6e 6e 65 63 74 20 74 6f 20 61 20 4d 79 53 51 4c 20 73 65 72 76 65 72 20 75 73 69 .."Connect.to.a.MySQL.server.usi
11940 6e 67 20 74 68 65 20 6d 79 73 71 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 70 72 6f 67 72 61 ng.the.mysql.command.line.progra
11960 6d 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 6d 79 73 71 6c 20 28 6f 72 20 28 65 78 65 63 75 74 61 m."...(let*.((mysql.(or.(executa
11980 62 6c 65 2d 66 69 6e 64 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 65 78 65 63 75 74 61 62 6c ble-find.emacsql-mysql-executabl
119a0 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 4e e).....................(error."N
119c0 6f 20 6d 79 73 71 6c 20 62 69 6e 61 72 79 20 61 76 61 69 6c 61 62 6c 65 2c 20 61 62 6f 72 74 69 o.mysql.binary.available,.aborti
119e0 6e 67 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6d 6d 61 6e 64 20 28 6c 69 73 74 20 64 ng")))..........(command.(list.d
11a00 61 74 61 62 61 73 65 20 22 2d 2d 73 6b 69 70 2d 70 61 67 65 72 22 20 22 2d 72 66 42 4e 4c 22 20 atabase."--skip-pager"."-rfBNL".
11a20 6d 79 73 71 6c 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 75 73 65 72 20 20 20 20 20 28 70 75 73 mysql))).....(when.user.....(pus
11a40 68 20 28 66 6f 72 6d 61 74 20 22 2d 2d 75 73 65 72 3d 25 73 22 20 75 73 65 72 29 20 63 6f 6d 6d h.(format."--user=%s".user).comm
11a60 61 6e 64 29 29 0a 20 20 20 20 28 77 68 65 6e 20 70 61 73 73 77 6f 72 64 20 28 70 75 73 68 20 28 and)).....(when.password.(push.(
11a80 66 6f 72 6d 61 74 20 22 2d 2d 70 61 73 73 77 6f 72 64 3d 25 73 22 20 70 61 73 73 77 6f 72 64 29 format."--password=%s".password)
11aa0 20 63 6f 6d 6d 61 6e 64 29 29 0a 20 20 20 20 28 77 68 65 6e 20 68 6f 73 74 20 20 20 20 20 28 70 .command)).....(when.host.....(p
11ac0 75 73 68 20 28 66 6f 72 6d 61 74 20 22 2d 2d 68 6f 73 74 3d 25 73 22 20 68 6f 73 74 29 20 63 6f ush.(format."--host=%s".host).co
11ae0 6d 6d 61 6e 64 29 29 0a 20 20 20 20 28 77 68 65 6e 20 70 6f 72 74 20 20 20 20 20 28 70 75 73 68 mmand)).....(when.port.....(push
11b00 20 28 66 6f 72 6d 61 74 20 22 2d 2d 70 6f 72 74 3d 25 73 22 20 70 6f 72 74 29 20 63 6f 6d 6d 61 .(format."--port=%s".port).comma
11b20 6e 64 29 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 63 65 73 73 2d 63 6f 6e 6e 65 63 74 nd)).....(let*.((process-connect
11b40 69 6f 6e 2d 74 79 70 65 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 20 28 ion-type.t)............(buffer.(
11b60 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 22 20 2a 65 6d 61 63 73 71 6c 2d 6d generate-new-buffer.".*emacsql-m
11b80 79 73 71 6c 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 6d 61 6e 64 20 28 6d 61 ysql*"))............(command.(ma
11ba0 70 63 6f 6e 63 61 74 20 23 27 73 68 65 6c 6c 2d 71 75 6f 74 65 2d 61 72 67 75 6d 65 6e 74 20 28 pconcat.#'shell-quote-argument.(
11bc0 6e 72 65 76 65 72 73 65 20 63 6f 6d 6d 61 6e 64 29 20 22 20 22 29 29 0a 20 20 20 20 20 20 20 20 nreverse.command).".")).........
11be0 20 20 20 28 70 72 6f 63 65 73 73 20 28 73 74 61 72 74 2d 70 72 6f 63 65 73 73 2d 73 68 65 6c 6c ...(process.(start-process-shell
11c00 2d 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 65 -command......................"e
11c20 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 22 20 62 75 66 66 65 72 20 28 63 6f 6e 63 61 74 20 22 73 74 macsql-mysql".buffer.(concat."st
11c40 74 79 20 72 61 77 20 26 26 22 20 63 6f 6d 6d 61 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ty.raw.&&".command)))...........
11c60 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 6d 61 6b 65 2d 69 6e 73 74 61 6e 63 65 20 27 65 6d 61 .(connection.(make-instance.'ema
11c80 63 73 71 6c 2d 6d 79 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 csql-mysql-connection...........
11ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 61 6e ............................:han
11cc0 64 6c 65 20 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 dle.process.....................
11ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 62 6e 61 6d 65 20 64 61 74 61 62 61 ..................:dbname.databa
11d00 73 65 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 73 65 6e 74 69 6e 65 se))).......(set-process-sentine
11d20 6c 20 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.process.......................
11d40 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 63 20 5f 29 20 28 6b 69 6c 6c 2d 62 75 66 ......(lambda.(proc._).(kill-buf
11d60 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 29 29 29 29 0a 20 20 20 fer.(process-buffer.proc))))....
11d80 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 71 75 65 72 79 2d 6f 6e 2d 65 78 69 74 2d 66 6c ...(set-process-query-on-exit-fl
11da0 61 67 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 20 6e 69 6c 29 ag.(oref.connection.handle).nil)
11dc0 0a 20 20 20 20 20 20 28 77 68 65 6e 20 64 65 62 75 67 20 28 65 6d 61 63 73 71 6c 2d 65 6e 61 62 .......(when.debug.(emacsql-enab
11de0 6c 65 2d 64 65 62 75 67 67 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 le-debugging.connection)).......
11e00 28 65 6d 61 63 73 71 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 (emacsql.connection.............
11e20 20 20 20 5b 3a 73 65 74 2d 73 65 73 73 69 6f 6e 20 28 3d 20 73 71 6c 2d 6d 6f 64 65 20 27 4e 4f ...[:set-session.(=.sql-mode.'NO
11e40 5f 42 41 43 4b 53 4c 41 53 48 5f 45 53 43 41 50 45 53 5c 2c 41 4e 53 49 5f 51 55 4f 54 45 53 29 _BACKSLASH_ESCAPES\,ANSI_QUOTES)
11e60 5d 29 0a 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 ]).......(emacsql.connection....
11e80 20 20 20 20 20 20 20 20 20 20 20 20 5b 3a 73 65 74 2d 74 72 61 6e 73 61 63 74 69 6f 6e 2d 69 73 ............[:set-transaction-is
11ea0 6f 6c 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 3a 73 65 72 69 61 6c 69 7a 61 62 6c 65 5d 29 0a 20 20 olation-level.:serializable])...
11ec0 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e ....(emacsql-register.connection
11ee0 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 63 6c 6f 73 ))))..(cl-defmethod.emacsql-clos
11f00 65 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 63 6f 6e e.((connection.emacsql-mysql-con
11f20 6e 65 63 74 69 6f 6e 29 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 63 65 73 73 20 28 6f 72 65 66 nection))...(let.((process.(oref
11f40 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 .connection.handle))).....(when.
11f60 28 70 72 6f 63 65 73 73 2d 6c 69 76 65 2d 70 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 28 (process-live-p.process).......(
11f80 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f 66 20 70 72 6f 63 65 73 73 29 29 29 29 0a 0a 28 63 process-send-eof.process))))..(c
11fa0 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 73 65 6e 64 2d 6d 65 73 73 61 67 65 l-defmethod.emacsql-send-message
11fc0 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 63 6f 6e 6e .((connection.emacsql-mysql-conn
11fe0 65 63 74 69 6f 6e 29 20 6d 65 73 73 61 67 65 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 63 65 73 ection).message)...(let.((proces
12000 73 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 29 29 0a 20 20 20 s.(oref.connection.handle)))....
12020 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 20 6d 65 .(process-send-string.process.me
12040 73 73 61 67 65 29 0a 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 ssage).....(process-send-string.
12060 70 72 6f 63 65 73 73 20 22 5c 5c 63 5c 5c 70 5c 6e 22 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 process."\\c\\p\n")))..(cl-defme
12080 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 77 61 69 74 69 6e 67 2d 70 20 28 28 63 6f 6e 6e 65 63 74 thod.emacsql-waiting-p.((connect
120a0 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 ion.emacsql-mysql-connection))..
120c0 20 28 6c 65 74 20 28 28 6c 65 6e 67 74 68 20 28 6c 65 6e 67 74 68 20 65 6d 61 63 73 71 6c 2d 6d .(let.((length.(length.emacsql-m
120e0 79 73 71 6c 2d 73 65 6e 74 69 6e 65 6c 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 ysql-sentinel))).....(with-curre
12100 6e 74 2d 62 75 66 66 65 72 20 28 65 6d 61 63 73 71 6c 2d 62 75 66 66 65 72 20 63 6f 6e 6e 65 63 nt-buffer.(emacsql-buffer.connec
12120 74 69 6f 6e 29 0a 20 20 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 28 62 75 66 66 65 72 2d 73 69 7a tion).......(and.(>=.(buffer-siz
12140 65 29 20 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 67 6f e).length)............(progn.(go
12160 74 6f 2d 63 68 61 72 20 28 2d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 6c 65 6e 67 74 68 29 29 0a to-char.(-.(point-max).length)).
12180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 65 6d ..................(looking-at.em
121a0 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 73 65 6e 74 69 6e 65 6c 29 29 29 29 29 29 0a 0a 28 63 6c 2d acsql-mysql-sentinel))))))..(cl-
121c0 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 70 61 72 73 65 20 28 28 63 6f 6e 6e 65 63 defmethod.emacsql-parse.((connec
121e0 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a tion.emacsql-mysql-connection)).
12200 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 65 6d 61 63 73 71 6c 2d ..(with-current-buffer.(emacsql-
12220 62 75 66 66 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 28 6c 65 74 20 28 28 73 74 buffer.connection).....(let.((st
12240 61 6e 64 61 72 64 2d 69 6e 70 75 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a andard-input.(current-buffer))).
12260 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 ......(goto-char.(point-min))...
12280 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 45 52 52 4f 52 22 29 0a 20 ....(when.(looking-at."ERROR")..
122a0 20 20 20 20 20 20 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 3a 20 22 29 0a 20 20 20 .......(search-forward.":.")....
122c0 20 20 20 20 20 28 73 69 67 6e 61 6c 20 27 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 0a 20 20 20 20 .....(signal.'emacsql-error.....
122e0 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 ............(list.(buffer-substr
12300 69 6e 67 20 28 70 6f 69 6e 74 29 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 ing.(point).(line-end-position))
12320 29 29 29 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 75 6e 74 69 6c 20 28 6c 6f 6f 6b 69 6e ))).......(cl-loop.until.(lookin
12340 67 2d 61 74 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2d 73 65 6e 74 69 6e 65 6c 29 0a 20 20 20 g-at.emacsql-mysql-sentinel)....
12360 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 72 65 61 64 29 20 69 6e 74 6f 20 ............collect.(read).into.
12380 72 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 row................when.(looking
123a0 2d 61 74 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 -at."\n")................collect
123c0 20 72 6f 77 20 69 6e 74 6f 20 72 6f 77 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e .row.into.rows................an
123e0 64 20 64 6f 20 28 73 65 74 71 20 72 6f 77 20 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 d.do.(setq.row.())..............
12400 20 20 61 6e 64 20 64 6f 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 20 20 20 20 20 ..and.do.(forward-char).........
12420 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 28 63 6c 2d 72 65 74 75 72 6e 20 72 6f 77 73 29 29 .......finally.(cl-return.rows))
12440 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 29 0a 0a 3b )))..(provide.'emacsql-mysql)..;
12460 3b 3b 20 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 ;;.emacsql-mysql.el.ends.here...
12480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
124a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
124c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
124e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
125a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
125c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
125e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12600 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 65 6d 61 63 73 71 6c 2e 65 6c 00 00 00 00 00 00 00 00 emacsql-4.3.1/emacsql.el........
12620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
12680 30 30 33 34 33 33 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 35 36 34 00 20 30 00 00 00 0034337.00000000000.013564..0...
126a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
126c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
126e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12700 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
12720 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
12740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
127a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
127c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
127e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12800 3b 3b 3b 20 65 6d 61 63 73 71 6c 2e 65 6c 20 2d 2d 2d 20 48 69 67 68 2d 6c 65 76 65 6c 20 53 51 ;;;.emacsql.el.---.High-level.SQ
12820 4c 20 64 61 74 61 62 61 73 65 20 66 72 6f 6e 74 2d 65 6e 64 20 20 2d 2a 2d 20 6c 65 78 69 63 61 L.database.front-end..-*-.lexica
12840 6c 2d 62 69 6e 64 69 6e 67 3a 74 20 2d 2a 2d 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 66 72 65 65 l-binding:t.-*-..;;.This.is.free
12860 20 61 6e 64 20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f 66 74 77 61 72 65 20 72 65 6c 65 61 .and.unencumbered.software.relea
12880 73 65 64 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 0a 0a 3b 3b 20 sed.into.the.public.domain...;;.
128a0 41 75 74 68 6f 72 3a 20 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 20 3c 77 65 6c Author:.Christopher.Wellons.<wel
128c0 6c 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 lons@nullprogram.com>.;;.Maintai
128e0 6e 65 72 3a 20 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 20 3c 65 6d 61 63 73 2e 65 6d 61 63 ner:.Jonas.Bernoulli.<emacs.emac
12900 73 71 6c 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e 64 65 76 3e 0a 3b 3b 20 48 6f 6d 65 sql@jonas.bernoulli.dev>.;;.Home
12920 70 61 67 65 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74 2f 65 page:.https://github.com/magit/e
12940 6d 61 63 73 71 6c 0a 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 56 65 72 73 69 6f 6e 3a 20 34 2e 33 2e macsql..;;.Package-Version:.4.3.
12960 31 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28 28 65 6d 61 63 73 20 22 1.;;.Package-Requires:.((emacs."
12980 32 36 2e 31 22 29 29 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 26.1"))..;;.SPDX-License-Identif
129a0 69 65 72 3a 20 55 6e 6c 69 63 65 6e 73 65 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a ier:.Unlicense..;;;.Commentary:.
129c0 0a 3b 3b 20 45 6d 61 63 53 51 4c 20 69 73 20 61 20 68 69 67 68 2d 6c 65 76 65 6c 20 45 6d 61 63 .;;.EmacSQL.is.a.high-level.Emac
129e0 73 20 4c 69 73 70 20 66 72 6f 6e 74 2d 65 6e 64 20 66 6f 72 20 53 51 4c 69 74 65 2e 0a 0a 3b 3b s.Lisp.front-end.for.SQLite...;;
12a00 20 50 6f 73 74 67 72 65 53 51 4c 20 61 6e 64 20 4d 79 53 51 4c 20 61 72 65 20 61 6c 73 6f 20 73 .PostgreSQL.and.MySQL.are.also.s
12a20 75 70 70 6f 72 74 65 64 2c 20 62 75 74 20 75 73 65 20 6f 66 20 74 68 65 73 65 20 63 6f 6e 6e 65 upported,.but.use.of.these.conne
12a40 63 74 6f 72 73 0a 3b 3b 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 0a 0a 3b 3b ctors.;;.is.not.recommended...;;
12a60 20 53 65 65 20 52 45 41 44 4d 45 2e 6d 64 20 66 6f 72 20 6d 75 63 68 20 6d 6f 72 65 20 63 6f 6d .See.README.md.for.much.more.com
12a80 70 6c 65 74 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a plete.documentation...;;;.Code:.
12aa0 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d .(require.'cl-lib).(require.'cl-
12ac0 67 65 6e 65 72 69 63 29 0a 28 72 65 71 75 69 72 65 20 27 65 69 65 69 6f 29 0a 0a 28 72 65 71 75 generic).(require.'eieio)..(requ
12ae0 69 72 65 20 27 65 6d 61 63 73 71 6c 2d 63 6f 6d 70 69 6c 65 72 29 0a 0a 28 64 65 66 67 72 6f 75 ire.'emacsql-compiler)..(defgrou
12b00 70 20 65 6d 61 63 73 71 6c 20 6e 69 6c 0a 20 20 22 54 68 65 20 45 6d 61 63 53 51 4c 20 53 51 4c p.emacsql.nil..."The.EmacSQL.SQL
12b20 20 64 61 74 61 62 61 73 65 20 66 72 6f 6e 74 2d 65 6e 64 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 .database.front-end."...:group.'
12b40 63 6f 6d 6d 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 65 6d 61 63 73 71 6c 2d 76 65 72 73 69 6f 6e comm)..(defconst.emacsql-version
12b60 20 22 34 2e 33 2e 31 22 29 0a 0a 28 64 65 66 76 61 72 20 65 6d 61 63 73 71 6c 2d 67 6c 6f 62 61 ."4.3.1")..(defvar.emacsql-globa
12b80 6c 2d 74 69 6d 65 6f 75 74 20 33 30 0a 20 20 22 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f l-timeout.30..."Maximum.number.o
12ba0 66 20 73 65 63 6f 6e 64 73 20 74 6f 20 77 61 69 74 20 62 65 66 6f 72 65 20 62 61 69 6c 69 6e 67 f.seconds.to.wait.before.bailing
12bc0 20 6f 75 74 20 6f 6e 20 61 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 0a 49 66 20 6e 69 6c 2c 20 77 .out.on.a.SQL.command..If.nil,.w
12be0 61 69 74 20 66 6f 72 65 76 65 72 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 64 20 62 79 20 74 68 ait.forever...This.is.used.by.th
12c00 65 20 60 6d 79 73 71 6c 27 2c 20 60 70 67 27 20 61 6e 64 20 60 70 73 71 6c 27 2e 20 20 49 74 0a e.`mysql',.`pg'.and.`psql'...It.
12c20 69 73 20 6e 6f 74 20 62 65 69 6e 67 20 75 73 65 64 20 62 79 20 74 68 65 20 60 73 71 6c 69 74 65 is.not.being.used.by.the.`sqlite
12c40 2d 62 75 69 6c 74 69 6e 27 20 61 6e 64 20 60 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 27 20 62 61 -builtin'.and.`sqlite-module'.ba
12c60 63 6b 2d 65 6e 64 73 2c 0a 77 68 69 63 68 20 72 65 73 70 65 63 74 20 60 65 6d 61 63 73 71 6c 2d ck-ends,.which.respect.`emacsql-
12c80 73 71 6c 69 74 65 2d 62 75 73 79 2d 74 69 6d 65 6f 75 74 27 20 69 6e 73 74 65 61 64 2e 22 29 0a sqlite-busy-timeout'.instead.").
12ca0 0a 3b 3b 3b 20 44 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 0a 28 64 65 66 63 6c .;;;.Database.connection..(defcl
12cc0 61 73 73 20 65 6d 61 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 29 0a 20 20 28 28 68 61 ass.emacsql-connection.()...((ha
12ce0 6e 64 6c 65 20 3a 69 6e 69 74 61 72 67 20 3a 68 61 6e 64 6c 65 0a 20 20 20 20 20 20 20 20 20 20 ndle.:initarg.:handle...........
12d00 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 49 6e 74 65 72 6e 61 6c 20 63 6f 6e 6e 65 63 .:documentation."Internal.connec
12d20 74 69 6f 6e 20 68 61 6e 64 6c 65 72 2e 0a 54 68 65 20 76 61 6c 75 65 20 69 73 20 61 20 72 65 63 tion.handler..The.value.is.a.rec
12d40 6f 72 64 2d 6c 69 6b 65 20 6f 62 6a 65 63 74 20 61 6e 64 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 ord-like.object.and.should.not.b
12d60 65 20 61 63 63 65 73 73 65 64 0a 64 69 72 65 63 74 6c 79 2e 20 20 44 65 70 65 6e 64 69 6e 67 20 e.accessed.directly...Depending.
12d80 6f 6e 20 74 68 65 20 63 6f 6e 63 72 65 74 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 on.the.concrete.implementation,.
12da0 60 74 79 70 65 2d 6f 66 27 0a 6d 61 79 20 72 65 74 75 72 6e 20 60 70 72 6f 63 65 73 73 27 2c 20 `type-of'.may.return.`process',.
12dc0 60 75 73 65 72 2d 70 74 72 27 20 6f 72 20 60 73 71 6c 69 74 65 27 20 66 6f 72 20 74 68 69 73 20 `user-ptr'.or.`sqlite'.for.this.
12de0 76 61 6c 75 65 2e 22 29 0a 20 20 20 28 6c 6f 67 2d 62 75 66 66 65 72 20 3a 74 79 70 65 20 28 6f value.")....(log-buffer.:type.(o
12e00 72 20 6e 75 6c 6c 20 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 r.null.buffer)................:i
12e20 6e 69 74 61 72 67 20 3a 6c 6f 67 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 nitarg.:log-buffer..............
12e40 20 20 3a 69 6e 69 74 66 6f 72 6d 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a ..:initform.nil................:
12e60 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 4f 75 74 70 75 74 20 6c 6f 67 20 28 64 65 62 75 67 documentation."Output.log.(debug
12e80 29 2e 22 29 0a 20 20 20 28 66 69 6e 61 6c 69 7a 65 72 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f ).")....(finalizer.:documentatio
12ea0 6e 20 22 4f 62 6a 65 63 74 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 60 6d 61 6b 65 2d 66 69 n."Object.returned.from.`make-fi
12ec0 6e 61 6c 69 7a 65 72 27 2e 22 29 0a 20 20 20 28 74 79 70 65 73 20 3a 61 6c 6c 6f 63 61 74 69 6f nalizer'.")....(types.:allocatio
12ee0 6e 20 3a 63 6c 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 66 6f 72 6d 20 6e 69 6c n.:class...........:initform.nil
12f00 0a 20 20 20 20 20 20 20 20 20 20 3a 72 65 61 64 65 72 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 73 ...........:reader.emacsql-types
12f20 0a 20 20 20 20 20 20 20 20 20 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 4d 61 70 73 20 ...........:documentation."Maps.
12f40 45 6d 61 63 53 51 4c 20 74 79 70 65 73 20 74 6f 20 53 51 4c 20 74 79 70 65 73 2e 22 29 29 0a 20 EmacSQL.types.to.SQL.types."))..
12f60 20 22 41 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20 53 51 4c 20 64 61 74 61 62 61 73 65 ."A.connection.to.a.SQL.database
12f80 2e 22 0a 20 20 3a 61 62 73 74 72 61 63 74 20 74 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 ."...:abstract.t)..(cl-defgeneri
12fa0 63 20 65 6d 61 63 73 71 6c 2d 63 6c 6f 73 65 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 22 c.emacsql-close.(connection)..."
12fc0 43 6c 6f 73 65 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 61 6e 64 20 66 72 65 65 20 61 6c 6c 20 72 65 Close.CONNECTION.and.free.all.re
12fe0 73 6f 75 72 63 65 73 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 65 6d 61 63 73 sources.")..(cl-defgeneric.emacs
13000 71 6c 2d 72 65 63 6f 6e 6e 65 63 74 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 22 52 65 2d ql-reconnect.(connection)..."Re-
13020 65 73 74 61 62 6c 69 73 68 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 77 69 74 68 20 74 68 65 20 73 61 establish.CONNECTION.with.the.sa
13040 6d 65 20 70 61 72 61 6d 65 74 65 72 73 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 me.parameters.")..(cl-defmethod.
13060 65 6d 61 63 73 71 6c 2d 6c 69 76 65 2d 70 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 emacsql-live-p.((connection.emac
13080 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e sql-connection))..."Return.non-n
130a0 69 6c 20 69 66 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 69 73 20 73 74 69 6c 6c 20 61 6c 69 76 65 20 il.if.CONNECTION.is.still.alive.
130c0 61 6e 64 20 72 65 61 64 79 2e 22 0a 20 20 28 61 6e 64 20 28 70 72 6f 63 65 73 73 2d 6c 69 76 65 and.ready."...(and.(process-live
130e0 2d 70 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 29 20 74 29 29 -p.(oref.connection.handle)).t))
13100 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 73 20 28 ..(cl-defgeneric.emacsql-types.(
13120 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 22 52 65 74 75 72 6e 20 61 6e 20 61 6c 69 73 74 20 6d connection)..."Return.an.alist.m
13140 61 70 70 69 6e 67 20 45 6d 61 63 53 51 4c 20 74 79 70 65 73 20 74 6f 20 64 61 74 61 62 61 73 65 apping.EmacSQL.types.to.database
13160 20 74 79 70 65 73 2e 0a 54 68 69 73 20 77 69 6c 6c 20 6d 61 73 6b 20 60 65 6d 61 63 73 71 6c 2d .types..This.will.mask.`emacsql-
13180 74 79 70 65 2d 6d 61 70 27 20 64 75 72 69 6e 67 20 65 78 70 72 65 73 73 69 6f 6e 20 63 6f 6d 70 type-map'.during.expression.comp
131a0 69 6c 61 74 69 6f 6e 2e 0a 54 68 69 73 20 61 6c 69 73 74 20 73 68 6f 75 6c 64 20 68 61 76 65 20 ilation..This.alist.should.have.
131c0 66 6f 75 72 20 6b 65 79 20 73 79 6d 62 6f 6c 73 3a 20 69 6e 74 65 67 65 72 2c 20 66 6c 6f 61 74 four.key.symbols:.integer,.float
131e0 2c 20 6f 62 6a 65 63 74 2c 0a 6e 69 6c 20 28 64 65 66 61 75 6c 74 20 74 79 70 65 29 2e 20 20 54 ,.object,.nil.(default.type)...T
13200 68 65 20 76 61 6c 75 65 73 20 61 72 65 20 73 74 72 69 6e 67 73 20 74 6f 20 62 65 20 69 6e 73 65 he.values.are.strings.to.be.inse
13220 72 74 65 64 20 69 6e 74 6f 0a 61 20 53 51 4c 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 29 0a 0a 28 rted.into.a.SQL.expression.")..(
13240 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 62 75 66 66 65 72 20 28 28 63 6f cl-defmethod.emacsql-buffer.((co
13260 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 nnection.emacsql-connection))...
13280 22 47 65 74 20 70 72 6f 63 65 73 73 20 62 75 66 66 65 72 20 66 6f 72 20 43 4f 4e 4e 45 43 54 49 "Get.process.buffer.for.CONNECTI
132a0 4f 4e 2e 22 0a 20 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 28 6f 72 65 66 20 63 6f 6e ON."...(process-buffer.(oref.con
132c0 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 nection.handle)))..(cl-defmethod
132e0 20 65 6d 61 63 73 71 6c 2d 65 6e 61 62 6c 65 2d 64 65 62 75 67 67 69 6e 67 20 28 28 63 6f 6e 6e .emacsql-enable-debugging.((conn
13300 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 22 45 ection.emacsql-connection))..."E
13320 6e 61 62 6c 65 20 64 65 62 75 67 67 69 6e 67 20 6f 6e 20 43 4f 4e 4e 45 43 54 49 4f 4e 2e 22 0a nable.debugging.on.CONNECTION.".
13340 20 20 28 75 6e 6c 65 73 73 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 28 6f 72 65 66 20 63 ..(unless.(buffer-live-p.(oref.c
13360 6f 6e 6e 65 63 74 69 6f 6e 20 6c 6f 67 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 28 6f 73 65 74 onnection.log-buffer)).....(oset
13380 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6c 6f 67 2d 62 75 66 66 65 72 20 28 67 65 6e 65 72 61 74 65 .connection.log-buffer.(generate
133a0 2d 6e 65 77 2d 62 75 66 66 65 72 20 22 20 2a 65 6d 61 63 73 71 6c 2d 6c 6f 67 2a 22 29 29 29 29 -new-buffer.".*emacsql-log*"))))
133c0 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 6c 6f 67 20 28 28 63 6f ..(cl-defmethod.emacsql-log.((co
133e0 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 6d 65 73 nnection.emacsql-connection).mes
13400 73 61 67 65 29 0a 20 20 22 4c 6f 67 20 4d 45 53 53 41 47 45 20 69 6e 74 6f 20 43 4f 4e 4e 45 43 sage)..."Log.MESSAGE.into.CONNEC
13420 54 49 4f 4e 27 73 20 6c 6f 67 2e 0a 4d 45 53 53 41 47 45 20 73 68 6f 75 6c 64 20 6e 6f 74 20 68 TION's.log..MESSAGE.should.not.h
13440 61 76 65 20 61 20 6e 65 77 6c 69 6e 65 20 6f 6e 20 74 68 65 20 65 6e 64 2e 22 0a 20 20 28 6c 65 ave.a.newline.on.the.end."...(le
13460 74 20 28 28 62 75 66 66 65 72 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6c 6f 67 2d t.((buffer.(oref.connection.log-
13480 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 62 75 66 66 65 72 0a 20 20 20 20 20 buffer))).....(when.buffer......
134a0 20 28 75 6e 6c 65 73 73 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 62 75 66 66 65 72 29 0a .(unless.(buffer-live-p.buffer).
134c0 20 20 20 20 20 20 20 20 28 73 65 74 71 20 62 75 66 66 65 72 20 28 65 6d 61 63 73 71 6c 2d 65 6e ........(setq.buffer.(emacsql-en
134e0 61 62 6c 65 2d 64 65 62 75 67 67 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 0a 20 20 20 able-debugging.connection)))....
13500 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 0a 20 ...(with-current-buffer.buffer..
13520 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 .......(goto-char.(point-max))..
13540 20 20 20 20 20 20 20 28 70 72 69 6e 63 20 28 63 6f 6e 63 61 74 20 6d 65 73 73 61 67 65 20 22 5c .......(princ.(concat.message."\
13560 6e 22 29 20 62 75 66 66 65 72 29 29 29 29 29 0a 0a 3b 3b 3b 20 53 65 6e 64 69 6e 67 20 61 6e 64 n").buffer)))))..;;;.Sending.and
13580 20 72 65 63 65 69 76 69 6e 67 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 65 6d 61 63 73 .receiving..(cl-defgeneric.emacs
135a0 71 6c 2d 73 65 6e 64 2d 6d 65 73 73 61 67 65 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 73 73 ql-send-message.(connection.mess
135c0 61 67 65 29 0a 20 20 22 53 65 6e 64 20 4d 45 53 53 41 47 45 20 74 6f 20 43 4f 4e 4e 45 43 54 49 age)..."Send.MESSAGE.to.CONNECTI
135e0 4f 4e 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 73 65 6e ON.")..(cl-defmethod.emacsql-sen
13600 64 2d 6d 65 73 73 61 67 65 20 3a 62 65 66 6f 72 65 0a 20 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e d-message.:before...((connection
13620 20 65 6d 61 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 6d 65 73 73 61 67 65 29 0a 20 20 .emacsql-connection).message)...
13640 28 65 6d 61 63 73 71 6c 2d 6c 6f 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 73 73 61 67 65 29 (emacsql-log.connection.message)
13660 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 63 6c 65 61 72 20 28 )..(cl-defmethod.emacsql-clear.(
13680 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 (connection.emacsql-connection))
136a0 0a 20 20 22 43 6c 65 61 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 75 66 66 65 72 20 ..."Clear.the.connection.buffer.
136c0 66 6f 72 20 43 4f 4e 4e 45 43 54 49 4f 4e 2d 53 50 45 43 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 for.CONNECTION-SPEC."...(let.((b
136e0 75 66 66 65 72 20 28 65 6d 61 63 73 71 6c 2d 62 75 66 66 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e uffer.(emacsql-buffer.connection
13700 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 62 75 66 66 65 72 20 28 62 75 66 66 65 ))).....(when.(and.buffer.(buffe
13720 72 2d 6c 69 76 65 2d 70 20 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 r-live-p.buffer)).......(with-cu
13740 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 65 72 61 rrent-buffer.buffer.........(era
13760 73 65 2d 62 75 66 66 65 72 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 65 se-buffer)))))..(cl-defgeneric.e
13780 6d 61 63 73 71 6c 2d 77 61 69 74 69 6e 67 2d 70 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 macsql-waiting-p.(connection)...
137a0 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 69 73 "Return.non-nil.if.CONNECTION.is
137c0 20 72 65 61 64 79 20 66 6f 72 20 6d 6f 72 65 20 69 6e 70 75 74 2e 22 29 0a 0a 28 63 6c 2d 64 65 .ready.for.more.input.")..(cl-de
137e0 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 77 61 69 74 20 28 28 63 6f 6e 6e 65 63 74 69 6f fmethod.emacsql-wait.((connectio
13800 6e 20 65 6d 61 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 26 6f 70 74 69 6f 6e 61 6c 20 n.emacsql-connection).&optional.
13820 74 69 6d 65 6f 75 74 29 0a 20 20 22 42 6c 6f 63 6b 20 75 6e 74 69 6c 20 43 4f 4e 4e 45 43 54 49 timeout)..."Block.until.CONNECTI
13840 4f 4e 20 69 73 20 77 61 69 74 69 6e 67 20 66 6f 72 20 66 75 72 74 68 65 72 20 69 6e 70 75 74 2e ON.is.waiting.for.further.input.
13860 22 0a 20 20 28 6c 65 74 2a 20 28 28 72 65 61 6c 2d 74 69 6d 65 6f 75 74 20 28 6f 72 20 74 69 6d "...(let*.((real-timeout.(or.tim
13880 65 6f 75 74 20 65 6d 61 63 73 71 6c 2d 67 6c 6f 62 61 6c 2d 74 69 6d 65 6f 75 74 29 29 0a 20 20 eout.emacsql-global-timeout))...
138a0 20 20 20 20 20 20 20 28 65 6e 64 20 28 61 6e 64 20 72 65 61 6c 2d 74 69 6d 65 6f 75 74 20 28 2b .......(end.(and.real-timeout.(+
138c0 20 28 66 6c 6f 61 74 2d 74 69 6d 65 29 20 72 65 61 6c 2d 74 69 6d 65 6f 75 74 29 29 29 29 0a 20 .(float-time).real-timeout))))..
138e0 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 6f 72 20 28 6e 75 6c 6c 20 72 65 61 6c 2d 74 69 ...(while.(and.(or.(null.real-ti
13900 6d 65 6f 75 74 29 20 28 3c 20 28 66 6c 6f 61 74 2d 74 69 6d 65 29 20 65 6e 64 29 29 0a 20 20 20 meout).(<.(float-time).end))....
13920 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 65 6d 61 63 73 71 6c 2d 77 61 69 74 69 .............(not.(emacsql-waiti
13940 6e 67 2d 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 6d ng-p.connection))).......(save-m
13960 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 28 61 63 63 65 70 74 2d 70 72 6f 63 65 73 atch-data.........(accept-proces
13980 73 2d 6f 75 74 70 75 74 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 s-output.(oref.connection.handle
139a0 29 20 72 65 61 6c 2d 74 69 6d 65 6f 75 74 29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 ).real-timeout))).....(unless.(e
139c0 6d 61 63 73 71 6c 2d 77 61 69 74 69 6e 67 2d 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 macsql-waiting-p.connection)....
139e0 20 20 20 28 73 69 67 6e 61 6c 20 27 65 6d 61 63 73 71 6c 2d 74 69 6d 65 6f 75 74 20 28 6c 69 73 ...(signal.'emacsql-timeout.(lis
13a00 74 20 22 51 75 65 72 79 20 74 69 6d 65 64 20 6f 75 74 22 20 72 65 61 6c 2d 74 69 6d 65 6f 75 74 t."Query.timed.out".real-timeout
13a20 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 65 6d 61 63 73 71 6c 2d 70 61 )))))..(cl-defgeneric.emacsql-pa
13a40 72 73 65 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 72 rse.(connection)..."Return.the.r
13a60 65 73 75 6c 74 73 20 6f 66 20 70 61 72 73 69 6e 67 20 74 68 65 20 6c 61 74 65 73 74 20 6f 75 74 esults.of.parsing.the.latest.out
13a80 70 75 74 20 6f 72 20 73 69 67 6e 61 6c 20 61 6e 20 65 72 72 6f 72 2e 22 29 0a 0a 28 64 65 66 75 put.or.signal.an.error.")..(defu
13aa0 6e 20 65 6d 61 63 73 71 6c 2d 63 6f 6d 70 69 6c 65 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 71 n.emacsql-compile.(connection.sq
13ac0 6c 20 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 22 43 6f 6d 70 69 6c 65 20 73 2d 65 78 70 72 65 l.&rest.args)..."Compile.s-expre
13ae0 73 73 69 6f 6e 20 53 51 4c 20 66 6f 72 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 69 6e 74 6f 20 61 20 ssion.SQL.for.CONNECTION.into.a.
13b00 73 74 72 69 6e 67 2e 22 0a 20 20 28 6c 65 74 20 28 28 65 6d 61 63 73 71 6c 2d 74 79 70 65 2d 6d string."...(let.((emacsql-type-m
13b20 61 70 20 28 6f 72 20 28 61 6e 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 65 6d 61 63 73 71 6c 2d ap.(or.(and.connection.(emacsql-
13b40 74 79 70 65 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 types.connection))..............
13b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 2d 6d 61 .................emacsql-type-ma
13b80 70 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 28 61 70 70 6c 79 20 23 27 65 6d 61 63 73 71 p))).....(concat.(apply.#'emacsq
13ba0 6c 2d 66 6f 72 6d 61 74 20 28 65 6d 61 63 73 71 6c 2d 70 72 65 70 61 72 65 20 73 71 6c 29 20 61 l-format.(emacsql-prepare.sql).a
13bc0 72 67 73 29 20 22 3b 22 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 65 6d 61 63 rgs).";")))..(cl-defgeneric.emac
13be0 73 71 6c 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 71 6c 20 26 72 65 73 74 20 61 72 67 73 29 0a sql.(connection.sql.&rest.args).
13c00 20 20 22 53 65 6e 64 20 53 51 4c 20 73 2d 65 78 70 72 65 73 73 69 6f 6e 20 74 6f 20 43 4f 4e 4e .."Send.SQL.s-expression.to.CONN
13c20 45 43 54 49 4f 4e 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20 72 65 73 75 6c 74 73 2e 22 29 ECTION.and.return.the.results.")
13c40 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 20 28 28 63 6f 6e 6e 65 63 ..(cl-defmethod.emacsql.((connec
13c60 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 73 71 6c 20 26 72 65 tion.emacsql-connection).sql.&re
13c80 73 74 20 61 72 67 73 29 0a 20 20 28 6c 65 74 20 28 28 73 71 6c 2d 73 74 72 69 6e 67 20 28 61 70 st.args)...(let.((sql-string.(ap
13ca0 70 6c 79 20 23 27 65 6d 61 63 73 71 6c 2d 63 6f 6d 70 69 6c 65 20 63 6f 6e 6e 65 63 74 69 6f 6e ply.#'emacsql-compile.connection
13cc0 20 73 71 6c 20 61 72 67 73 29 29 29 0a 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 63 6c 65 61 72 20 .sql.args))).....(emacsql-clear.
13ce0 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 73 65 6e 64 2d 6d 65 connection).....(emacsql-send-me
13d00 73 73 61 67 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 71 6c 2d 73 74 72 69 6e 67 29 0a 20 20 20 ssage.connection.sql-string)....
13d20 20 28 65 6d 61 63 73 71 6c 2d 77 61 69 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 28 .(emacsql-wait.connection).....(
13d40 65 6d 61 63 73 71 6c 2d 70 61 72 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 0a 0a 3b 3b 3b emacsql-parse.connection)))..;;;
13d60 20 48 65 6c 70 65 72 20 6d 69 78 69 6e 20 63 6c 61 73 73 0a 0a 28 64 65 66 63 6c 61 73 73 20 65 .Helper.mixin.class..(defclass.e
13d80 6d 61 63 73 71 6c 2d 70 72 6f 74 6f 63 6f 6c 2d 6d 69 78 69 6e 20 28 29 20 28 29 0a 20 20 22 41 macsql-protocol-mixin.().()..."A
13da0 20 6d 69 78 69 6e 20 66 6f 72 20 62 61 63 6b 2d 65 6e 64 73 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 .mixin.for.back-ends.following.t
13dc0 68 65 20 45 6d 61 63 53 51 4c 20 70 72 6f 74 6f 63 6f 6c 2e 0a 54 68 65 20 62 61 63 6b 2d 65 6e he.EmacSQL.protocol..The.back-en
13de0 64 20 70 72 6f 6d 70 74 20 6d 75 73 74 20 62 65 20 61 20 73 69 6e 67 6c 65 20 5c 22 5d 5c 22 20 d.prompt.must.be.a.single.\"]\".
13e00 63 68 61 72 61 63 74 65 72 2e 20 20 54 68 69 73 20 70 72 6f 6d 70 74 0a 76 61 6c 75 65 20 77 61 character...This.prompt.value.wa
13e20 73 20 63 68 6f 73 65 6e 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20 75 6e 72 65 61 64 61 62 6c s.chosen.because.it.is.unreadabl
13e40 65 2e 20 20 4f 75 74 70 75 74 20 6d 75 73 74 20 68 61 76 65 0a 65 78 61 63 74 6c 79 20 6f 6e 65 e...Output.must.have.exactly.one
13e60 20 72 6f 77 20 70 65 72 20 6c 69 6e 65 2c 20 66 69 65 6c 64 73 20 73 65 70 61 72 61 74 65 64 20 .row.per.line,.fields.separated.
13e80 62 79 20 77 68 69 74 65 73 70 61 63 65 2e 20 20 4e 55 4c 4c 0a 6d 75 73 74 20 64 69 73 70 6c 61 by.whitespace...NULL.must.displa
13ea0 79 20 61 73 20 5c 22 6e 69 6c 5c 22 2e 22 0a 20 20 3a 61 62 73 74 72 61 63 74 20 74 29 0a 0a 28 y.as.\"nil\"."...:abstract.t)..(
13ec0 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 77 61 69 74 69 6e 67 2d 70 20 28 cl-defmethod.emacsql-waiting-p.(
13ee0 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 70 72 6f 74 6f 63 6f 6c 2d 6d 69 78 (connection.emacsql-protocol-mix
13f00 69 6e 29 29 0a 20 20 22 52 65 74 75 72 6e 20 74 20 69 66 20 74 68 65 20 65 6e 64 20 6f 66 20 74 in))..."Return.t.if.the.end.of.t
13f20 68 65 20 62 75 66 66 65 72 20 68 61 73 20 61 20 70 72 6f 70 65 72 6c 79 2d 66 6f 72 6d 61 74 74 he.buffer.has.a.properly-formatt
13f40 65 64 20 70 72 6f 6d 70 74 2e 0a 41 6c 73 6f 20 72 65 74 75 72 6e 20 74 20 69 66 20 74 68 65 20 ed.prompt..Also.return.t.if.the.
13f60 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 75 66 66 65 72 20 68 61 73 20 62 65 65 6e 20 6b 69 6c 6c 65 connection.buffer.has.been.kille
13f80 64 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 75 66 66 65 72 20 28 65 6d 61 63 73 71 6c 2d 62 75 66 d."...(let.((buffer.(emacsql-buf
13fa0 66 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 28 6f 72 20 28 6e 6f 74 20 28 fer.connection))).....(or.(not.(
13fc0 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 28 buffer-live-p.buffer)).........(
13fe0 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20 20 with-current-buffer.buffer......
14000 20 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 28 62 75 66 66 65 72 2d 73 69 7a 65 29 20 32 29 0a 20 .....(and.(>=.(buffer-size).2)..
14020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 3d 20 22 23 5c 6e 22 0a 20 20 20 ..............(string=."#\n"....
14040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 .....................(buffer-sub
14060 73 74 72 69 6e 67 20 28 2d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 32 29 20 28 70 6f 69 6e 74 2d string.(-.(point-max).2).(point-
14080 6d 61 78 29 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 max))))))))..(cl-defmethod.emacs
140a0 71 6c 2d 68 61 6e 64 6c 65 20 28 28 5f 20 65 6d 61 63 73 71 6c 2d 70 72 6f 74 6f 63 6f 6c 2d 6d ql-handle.((_.emacsql-protocol-m
140c0 69 78 69 6e 29 20 63 6f 64 65 20 6d 65 73 73 61 67 65 29 0a 20 20 22 53 69 67 6e 61 6c 20 61 20 ixin).code.message)..."Signal.a.
140e0 73 70 65 63 69 66 69 63 20 63 6f 6e 64 69 74 69 6f 6e 20 66 6f 72 20 43 4f 44 45 20 66 72 6f 6d specific.condition.for.CODE.from
14100 20 43 4f 4e 4e 45 43 54 49 4f 4e 2e 0a 53 75 62 63 6c 61 73 73 65 73 20 73 68 6f 75 6c 64 20 6f .CONNECTION..Subclasses.should.o
14120 76 65 72 72 69 64 65 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 verride.this.method.in.order.to.
14140 70 72 6f 76 69 64 65 20 6d 6f 72 65 0a 73 70 65 63 69 66 69 63 20 65 72 72 6f 72 20 63 6f 6e 64 provide.more.specific.error.cond
14160 69 74 69 6f 6e 73 2e 22 0a 20 20 28 73 69 67 6e 61 6c 20 27 65 6d 61 63 73 71 6c 2d 65 72 72 6f itions."...(signal.'emacsql-erro
14180 72 20 28 6c 69 73 74 20 6d 65 73 73 61 67 65 20 63 6f 64 65 29 29 29 0a 0a 28 63 6c 2d 64 65 66 r.(list.message.code)))..(cl-def
141a0 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 70 61 72 73 65 20 28 28 63 6f 6e 6e 65 63 74 69 6f method.emacsql-parse.((connectio
141c0 6e 20 65 6d 61 63 73 71 6c 2d 70 72 6f 74 6f 63 6f 6c 2d 6d 69 78 69 6e 29 29 0a 20 20 22 50 61 n.emacsql-protocol-mixin))..."Pa
141e0 72 73 65 20 77 65 6c 6c 2d 66 6f 72 6d 65 64 20 6f 75 74 70 75 74 20 69 6e 74 6f 20 61 6e 20 73 rse.well-formed.output.into.an.s
14200 2d 65 78 70 72 65 73 73 69 6f 6e 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 -expression."...(with-current-bu
14220 66 66 65 72 20 28 65 6d 61 63 73 71 6c 2d 62 75 66 66 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 ffer.(emacsql-buffer.connection)
14240 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 .....(goto-char.(point-min))....
14260 20 28 6c 65 74 2a 20 28 28 73 74 61 6e 64 61 72 64 2d 69 6e 70 75 74 20 28 63 75 72 72 65 6e 74 .(let*.((standard-input.(current
14280 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 20 28 72 65 61 -buffer))............(value.(rea
142a0 64 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 65 71 20 76 61 6c 75 65 20 27 65 72 72 6f 72 29 d))).......(if.(eq.value.'error)
142c0 0a 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 68 61 6e 64 6c 65 20 63 6f 6e 6e 65 ...........(emacsql-handle.conne
142e0 63 74 69 6f 6e 20 28 72 65 61 64 29 20 28 72 65 61 64 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 ction.(read).(read)).........(pr
14300 6f 67 31 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 og1.value...........(unless.(eq.
14320 28 72 65 61 64 29 20 27 73 75 63 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d (read).'success).............(em
14340 61 63 73 71 6c 2d 68 61 6e 64 6c 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 72 65 61 64 29 20 28 acsql-handle.connection.(read).(
14360 72 65 61 64 29 29 29 29 29 29 29 29 0a 0a 3b 3b 3b 20 41 75 74 6f 6d 61 74 69 63 20 63 6f 6e 6e read))))))))..;;;.Automatic.conn
14380 65 63 74 69 6f 6e 20 63 6c 65 61 6e 75 70 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 72 ection.cleanup..(defun.emacsql-r
143a0 65 67 69 73 74 65 72 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 22 52 65 67 69 73 74 65 72 egister.(connection)..."Register
143c0 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 66 6f 72 20 61 75 74 6f 6d 61 74 69 63 20 63 6c 65 61 6e 75 .CONNECTION.for.automatic.cleanu
143e0 70 20 61 6e 64 20 72 65 74 75 72 6e 20 43 4f 4e 4e 45 43 54 49 4f 4e 2e 22 0a 20 20 28 70 72 6f p.and.return.CONNECTION."...(pro
14400 67 31 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 28 6f 73 65 74 20 63 6f 6e 6e 65 63 74 69 g1.connection.....(oset.connecti
14420 6f 6e 20 66 69 6e 61 6c 69 7a 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 66 69 6e on.finalizer...........(make-fin
14440 61 6c 69 7a 65 72 20 28 6c 61 6d 62 64 61 20 28 29 20 28 65 6d 61 63 73 71 6c 2d 63 6c 6f 73 65 alizer.(lambda.().(emacsql-close
14460 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 29 29 29 0a 0a 3b 3b 3b 20 55 73 65 66 75 6c 20 6d 61 .connection))))))..;;;.Useful.ma
14480 63 72 6f 73 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 63 6f 6e cros..(defmacro.emacsql-with-con
144a0 6e 65 63 74 69 6f 6e 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 2d 73 70 65 63 20 26 72 65 73 74 20 62 nection.(connection-spec.&rest.b
144c0 6f 64 79 29 0a 20 20 22 4f 70 65 6e 20 61 6e 20 45 6d 61 63 53 51 4c 20 63 6f 6e 6e 65 63 74 69 ody)..."Open.an.EmacSQL.connecti
144e0 6f 6e 2c 20 65 76 61 6c 75 61 74 65 20 42 4f 44 59 2c 20 61 6e 64 20 63 6c 6f 73 65 20 74 68 65 on,.evaluate.BODY,.and.close.the
14500 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 43 4f 4e 4e 45 43 54 49 4f 4e 2d 53 50 45 43 20 65 73 74 .connection..CONNECTION-SPEC.est
14520 61 62 6c 69 73 68 65 73 20 61 20 73 69 6e 67 6c 65 20 62 69 6e 64 69 6e 67 2e 0a 0a 20 20 28 65 ablishes.a.single.binding.....(e
14540 6d 61 63 73 71 6c 2d 77 69 74 68 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 64 62 20 28 65 6d 61 63 macsql-with-connection.(db.(emac
14560 73 71 6c 2d 73 71 6c 69 74 65 20 5c 22 63 6f 6d 70 61 6e 79 2e 64 62 5c 22 29 29 0a 20 20 20 20 sql-sqlite.\"company.db\")).....
14580 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 63 72 65 61 74 65 2d 74 61 62 6c 65 20 66 6f 6f 20 5b (emacsql.db.[:create-table.foo.[
145a0 78 5d 5d 29 0a 20 20 20 20 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 69 6e 73 65 72 74 20 3a 69 x]]).....(emacsql.db.[:insert.:i
145c0 6e 74 6f 20 66 6f 6f 20 3a 76 61 6c 75 65 73 20 28 5b 31 5d 20 5b 32 5d 20 5b 33 5d 29 5d 29 0a nto.foo.:values.([1].[2].[3])]).
145e0 20 20 20 20 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 73 65 6c 65 63 74 20 2a 20 3a 66 72 6f 6d ....(emacsql.db.[:select.*.:from
14600 20 66 6f 6f 5d 29 29 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a .foo]))"...(declare.(indent.1)).
14620 20 20 60 28 6c 65 74 20 28 28 2c 28 63 61 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 2d 73 70 65 63 29 ..`(let.((,(car.connection-spec)
14640 20 2c 28 63 61 64 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 2d 73 70 65 63 29 29 29 0a 20 20 20 20 20 .,(cadr.connection-spec)))......
14660 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 (unwind-protect..........(progn.
14680 2c 40 62 6f 64 79 29 0a 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 63 6c 6f 73 65 20 2c 28 ,@body)........(emacsql-close.,(
146a0 63 61 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 2d 73 70 65 63 29 29 29 29 29 0a 0a 28 64 65 66 76 61 car.connection-spec)))))..(defva
146c0 72 20 65 6d 61 63 73 71 6c 2d 2d 74 72 61 6e 73 61 63 74 69 6f 6e 2d 6c 65 76 65 6c 20 30 0a 20 r.emacsql--transaction-level.0..
146e0 20 22 4b 65 65 70 73 20 74 72 61 63 6b 20 6f 66 20 6e 65 73 74 65 64 20 74 72 61 6e 73 61 63 74 ."Keeps.track.of.nested.transact
14700 69 6f 6e 73 20 69 6e 20 60 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 74 72 61 6e 73 61 63 74 69 6f ions.in.`emacsql-with-transactio
14720 6e 27 2e 22 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 74 72 n'.")..(defmacro.emacsql-with-tr
14740 61 6e 73 61 63 74 69 6f 6e 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 26 72 65 73 74 20 62 6f 64 79 ansaction.(connection.&rest.body
14760 29 0a 20 20 22 45 76 61 6c 75 61 74 65 20 42 4f 44 59 20 69 6e 73 69 64 65 20 61 20 73 69 6e 67 )..."Evaluate.BODY.inside.a.sing
14780 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 69 73 73 75 69 6e 67 20 61 20 72 6f 6c 6c 62 61 le.transaction,.issuing.a.rollba
147a0 63 6b 20 6f 6e 20 65 72 72 6f 72 2e 0a 54 68 69 73 20 6d 61 63 72 6f 20 63 61 6e 20 62 65 20 6e ck.on.error..This.macro.can.be.n
147c0 65 73 74 65 64 20 69 6e 64 65 66 69 6e 69 74 65 6c 79 2c 20 77 72 61 70 70 69 6e 67 20 65 76 65 ested.indefinitely,.wrapping.eve
147e0 72 79 74 68 69 6e 67 20 69 6e 20 61 0a 73 69 6e 67 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 rything.in.a.single.transaction.
14800 61 74 20 74 68 65 20 6c 6f 77 65 73 74 20 6c 65 76 65 6c 2e 0a 0a 57 61 72 6e 69 6e 67 3a 20 42 at.the.lowest.level...Warning:.B
14820 4f 44 59 20 73 68 6f 75 6c 64 20 2a 6e 6f 74 2a 20 68 61 76 65 20 61 6e 79 20 73 69 64 65 20 65 ODY.should.*not*.have.any.side.e
14840 66 66 65 63 74 73 20 62 65 73 69 64 65 73 20 6d 61 6b 69 6e 67 0a 63 68 61 6e 67 65 73 20 74 6f ffects.besides.making.changes.to
14860 20 74 68 65 20 64 61 74 61 62 61 73 65 20 62 65 68 69 6e 64 20 43 4f 4e 4e 45 43 54 49 4f 4e 2e .the.database.behind.CONNECTION.
14880 20 20 42 6f 64 79 20 6d 61 79 20 62 65 20 65 76 61 6c 75 61 74 65 64 0a 6d 75 6c 74 69 70 6c 65 ..Body.may.be.evaluated.multiple
148a0 20 74 69 6d 65 73 20 62 65 66 6f 72 65 20 74 68 65 20 63 68 61 6e 67 65 73 20 61 72 65 20 63 6f .times.before.the.changes.are.co
148c0 6d 6d 69 74 74 65 64 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 mmitted."...(declare.(indent.1))
148e0 0a 20 20 60 28 6c 65 74 20 28 28 65 6d 61 63 73 71 6c 2d 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 2c ...`(let.((emacsql--connection.,
14900 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 2d 63 connection)..........(emacsql--c
14920 6f 6d 70 6c 65 74 65 64 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d ompleted.nil)..........(emacsql-
14940 2d 74 72 61 6e 73 61 63 74 69 6f 6e 2d 6c 65 76 65 6c 20 28 31 2b 20 65 6d 61 63 73 71 6c 2d 2d -transaction-level.(1+.emacsql--
14960 74 72 61 6e 73 61 63 74 69 6f 6e 2d 6c 65 76 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 6d transaction-level))..........(em
14980 61 63 73 71 6c 2d 2d 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f acsql--result))......(unwind-pro
149a0 74 65 63 74 0a 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 65 6d 61 63 73 71 tect..........(while.(not.emacsq
149c0 6c 2d 2d 63 6f 6d 70 6c 65 74 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 l--completed)............(condit
149e0 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f ion-case.nil................(pro
14a00 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3d 20 31 20 65 gn..................(when.(=.1.e
14a20 6d 61 63 73 71 6c 2d 2d 74 72 61 6e 73 61 63 74 69 6f 6e 2d 6c 65 76 65 6c 29 0a 20 20 20 20 20 macsql--transaction-level)......
14a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 20 65 6d 61 63 73 71 6c 2d 2d ..............(emacsql.emacsql--
14a60 63 6f 6e 6e 65 63 74 69 6f 6e 20 5b 3a 62 65 67 69 6e 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 connection.[:begin]))...........
14a80 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 70 72 6f 67 6e 20 2c 40 62 6f .......(let.((result.(progn.,@bo
14aa0 64 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 dy)))....................(setq.e
14ac0 6d 61 63 73 71 6c 2d 2d 72 65 73 75 6c 74 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 macsql--result.result)..........
14ae0 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3d 20 31 20 65 6d 61 63 73 71 6c 2d 2d 74 72 ..........(when.(=.1.emacsql--tr
14b00 61 6e 73 61 63 74 69 6f 6e 2d 6c 65 76 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ansaction-level)................
14b20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 20 65 6d 61 63 73 71 6c 2d 2d 63 6f 6e 6e 65 63 74 69 ......(emacsql.emacsql--connecti
14b40 6f 6e 20 5b 3a 63 6f 6d 6d 69 74 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 on.[:commit]))..................
14b60 20 20 28 73 65 74 71 20 65 6d 61 63 73 71 6c 2d 2d 63 6f 6d 70 6c 65 74 65 64 20 74 29 29 29 0a ..(setq.emacsql--completed.t))).
14b80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 6c 6f 63 6b 65 64 20 28 65 6d .............(emacsql-locked.(em
14ba0 61 63 73 71 6c 20 65 6d 61 63 73 71 6c 2d 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 5b 3a 72 6f 6c 6c acsql.emacsql--connection.[:roll
14bc0 62 61 63 6b 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 back])..........................
14be0 20 20 20 20 28 73 6c 65 65 70 2d 66 6f 72 20 30 2e 30 35 29 29 29 29 0a 20 20 20 20 20 20 20 28 ....(sleep-for.0.05))))........(
14c00 77 68 65 6e 20 28 61 6e 64 20 28 3d 20 31 20 65 6d 61 63 73 71 6c 2d 2d 74 72 61 6e 73 61 63 74 when.(and.(=.1.emacsql--transact
14c20 69 6f 6e 2d 6c 65 76 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f ion-level)...................(no
14c40 74 20 65 6d 61 63 73 71 6c 2d 2d 63 6f 6d 70 6c 65 74 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 t.emacsql--completed))..........
14c60 28 65 6d 61 63 73 71 6c 20 65 6d 61 63 73 71 6c 2d 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 5b 3a 72 (emacsql.emacsql--connection.[:r
14c80 6f 6c 6c 62 61 63 6b 5d 29 29 29 0a 20 20 20 20 20 65 6d 61 63 73 71 6c 2d 2d 72 65 73 75 6c 74 ollback])))......emacsql--result
14ca0 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 6d 61 63 73 71 6c 2d 74 68 72 65 61 64 20 28 63 6f ))..(defmacro.emacsql-thread.(co
14cc0 6e 6e 65 63 74 69 6f 6e 20 26 72 65 73 74 20 73 74 61 74 65 6d 65 6e 74 73 29 0a 20 20 22 54 68 nnection.&rest.statements)..."Th
14ce0 72 65 61 64 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 74 68 72 6f 75 67 68 20 53 54 41 54 45 4d 45 4e read.CONNECTION.through.STATEMEN
14d00 54 53 2e 0a 41 20 73 74 61 74 65 6d 65 6e 74 20 63 61 6e 20 62 65 20 61 20 6c 69 73 74 2c 20 63 TS..A.statement.can.be.a.list,.c
14d20 6f 6e 74 61 69 6e 69 6e 67 20 61 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68 20 69 74 73 20 61 ontaining.a.statement.with.its.a
14d40 72 67 75 6d 65 6e 74 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 rguments."...(declare.(indent.1)
14d60 29 0a 20 20 60 28 6c 65 74 20 28 28 65 6d 61 63 73 71 6c 2d 2d 63 6f 6e 6e 20 2c 63 6f 6e 6e 65 )...`(let.((emacsql--conn.,conne
14d80 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 74 72 61 6e 73 ction))......(emacsql-with-trans
14da0 61 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 2d 63 6f 6e 6e 0a 20 20 20 20 20 20 20 2c 40 28 63 action.emacsql--conn........,@(c
14dc0 6c 2d 6c 6f 6f 70 20 66 6f 72 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 73 74 61 74 65 6d 65 6e l-loop.for.statement.in.statemen
14de0 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 28 76 65 63 74 6f ts...................when.(vecto
14e00 72 70 20 73 74 61 74 65 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rp.statement)...................
14e20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 27 65 6d 61 63 73 71 6c 20 27 65 6d 61 63 73 71 6c 2d collect.(list.'emacsql.'emacsql-
14e40 2d 63 6f 6e 6e 20 73 74 61 74 65 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -conn.statement)................
14e60 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 ...else...................collec
14e80 74 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 27 65 6d 61 63 73 71 6c 20 27 65 6d 61 63 73 71 t.(append.(list.'emacsql.'emacsq
14ea0 6c 2d 2d 63 6f 6e 6e 29 20 73 74 61 74 65 6d 65 6e 74 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 l--conn).statement)))))..(defmac
14ec0 72 6f 20 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 62 69 6e 64 20 28 63 6f 6e 6e 65 63 74 69 6f 6e ro.emacsql-with-bind.(connection
14ee0 20 73 71 6c 2d 61 6e 64 2d 61 72 67 73 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 46 6f 72 .sql-and-args.&rest.body)..."For
14f00 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f 77 20 62 69 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e .each.result.row.bind.the.column
14f20 20 6e 61 6d 65 73 20 66 6f 72 20 65 61 63 68 20 72 65 74 75 72 6e 65 64 20 72 6f 77 2e 0a 52 65 .names.for.each.returned.row..Re
14f40 74 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 6c 61 73 74 20 65 76 61 turns.the.result.of.the.last.eva
14f60 6c 75 61 74 65 64 20 42 4f 44 59 2e 0a 0a 41 6c 6c 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73 20 6d luated.BODY...All.column.names.m
14f80 75 73 74 20 62 65 20 70 72 6f 76 69 64 65 64 20 69 6e 20 74 68 65 20 71 75 65 72 79 20 28 24 20 ust.be.provided.in.the.query.($.
14fa0 61 6e 64 20 2a 20 61 72 65 20 6e 6f 74 0a 61 6c 6c 6f 77 65 64 29 2e 20 20 48 69 6e 74 3a 20 61 and.*.are.not.allowed)...Hint:.a
14fc0 6c 6c 20 6f 66 20 74 68 65 20 62 6f 75 6e 64 20 69 64 65 6e 74 69 66 69 65 72 73 20 6d 75 73 74 ll.of.the.bound.identifiers.must
14fe0 20 62 65 20 6b 6e 6f 77 6e 20 61 74 0a 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 20 20 46 6f 72 20 .be.known.at.compile.time...For.
15000 65 78 61 6d 70 6c 65 2c 20 69 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 62 65 6c 6f 77 example,.in.the.expression.below
15020 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 0a 60 6e 61 6d 65 27 20 61 6e 64 20 60 70 68 6f 6e 65 .the.variables.`name'.and.`phone
15040 27 20 77 69 6c 6c 20 62 65 20 62 6f 75 6e 64 20 66 6f 72 20 74 68 65 20 62 6f 64 79 2e 0a 0a 20 '.will.be.bound.for.the.body....
15060 20 28 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 62 69 6e 64 20 64 62 20 5b 3a 73 65 6c 65 63 74 20 .(emacsql-with-bind.db.[:select.
15080 5b 6e 61 6d 65 20 70 68 6f 6e 65 5d 20 3a 66 72 6f 6d 20 70 65 6f 70 6c 65 5d 0a 20 20 20 20 28 [name.phone].:from.people].....(
150a0 6d 65 73 73 61 67 65 20 5c 22 46 6f 75 6e 64 20 25 73 20 77 69 74 68 20 25 73 5c 22 20 6e 61 6d message.\"Found.%s.with.%s\".nam
150c0 65 20 70 68 6f 6e 65 29 29 0a 0a 20 20 28 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 62 69 6e 64 20 e.phone))....(emacsql-with-bind.
150e0 64 62 20 28 5b 3a 73 65 6c 65 63 74 20 5b 6e 61 6d 65 20 70 68 6f 6e 65 5d 0a 20 20 20 20 20 20 db.([:select.[name.phone].......
15100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 72 6f 6d 20 70 65 6f 70 6c 65 ....................:from.people
15120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 77 68 65 72 ...........................:wher
15140 65 20 28 3d 20 6e 61 6d 65 20 24 31 29 5d 20 6d 79 2d 6e 61 6d 65 29 0a 20 20 20 20 28 6d 65 73 e.(=.name.$1)].my-name).....(mes
15160 73 61 67 65 20 5c 22 46 6f 75 6e 64 20 25 73 20 77 69 74 68 20 25 73 5c 22 20 6e 61 6d 65 20 70 sage.\"Found.%s.with.%s\".name.p
15180 68 6f 6e 65 29 29 0a 0a 45 61 63 68 20 63 6f 6c 75 6d 6e 20 6d 75 73 74 20 62 65 20 61 20 70 6c hone))..Each.column.must.be.a.pl
151a0 61 69 6e 20 73 79 6d 62 6f 6c 2c 20 6e 6f 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 6c 6c 6f 77 ain.symbol,.no.expressions.allow
151c0 65 64 20 68 65 72 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 32 29 29 ed.here."...(declare.(indent.2))
151e0 0a 20 20 28 6c 65 74 20 28 28 73 71 6c 20 28 69 66 20 28 76 65 63 74 6f 72 70 20 73 71 6c 2d 61 ...(let.((sql.(if.(vectorp.sql-a
15200 6e 64 2d 61 72 67 73 29 20 73 71 6c 2d 61 6e 64 2d 61 72 67 73 20 28 63 61 72 20 73 71 6c 2d 61 nd-args).sql-and-args.(car.sql-a
15220 6e 64 2d 61 72 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 72 67 73 20 28 61 6e 64 20 28 6e nd-args))).........(args.(and.(n
15240 6f 74 20 28 76 65 63 74 6f 72 70 20 73 71 6c 2d 61 6e 64 2d 61 72 67 73 29 29 20 28 63 64 72 20 ot.(vectorp.sql-and-args)).(cdr.
15260 73 71 6c 2d 61 6e 64 2d 61 72 67 73 29 29 29 29 0a 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 sql-and-args)))).....(cl-assert.
15280 28 65 71 20 3a 73 65 6c 65 63 74 20 28 65 6c 74 20 73 71 6c 20 30 29 29 29 0a 20 20 20 20 28 6c (eq.:select.(elt.sql.0))).....(l
152a0 65 74 20 28 28 76 61 72 73 20 28 65 6c 74 20 73 71 6c 20 31 29 29 29 0a 20 20 20 20 20 20 28 77 et.((vars.(elt.sql.1))).......(w
152c0 68 65 6e 20 28 65 71 20 76 61 72 73 20 27 2a 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 hen.(eq.vars.'*).........(error.
152e0 22 4d 75 73 74 20 65 78 70 6c 69 63 69 74 6c 79 20 6c 69 73 74 20 63 6f 6c 75 6d 6e 73 20 69 6e "Must.explicitly.list.columns.in
15300 20 60 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 62 69 6e 64 27 22 29 29 0a 20 20 20 20 20 20 28 63 .`emacsql-with-bind'")).......(c
15320 6c 2d 61 73 73 65 72 74 20 28 63 6c 2d 65 76 65 72 79 20 23 27 73 79 6d 62 6f 6c 70 20 76 61 72 l-assert.(cl-every.#'symbolp.var
15340 73 29 29 0a 20 20 20 20 20 20 60 28 6c 65 74 20 28 28 65 6d 61 63 73 71 6c 2d 2d 72 65 73 75 6c s)).......`(let.((emacsql--resul
15360 74 73 20 28 65 6d 61 63 73 71 6c 20 2c 63 6f 6e 6e 65 63 74 69 6f 6e 20 2c 73 71 6c 20 2c 40 61 ts.(emacsql.,connection.,sql.,@a
15380 72 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 2d 66 69 6e rgs))..............(emacsql--fin
153a0 61 6c 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 65 6d 61 63 73 al.nil))..........(dolist.(emacs
153c0 71 6c 2d 2d 72 65 73 75 6c 74 20 65 6d 61 63 73 71 6c 2d 2d 72 65 73 75 6c 74 73 20 65 6d 61 63 ql--result.emacsql--results.emac
153e0 73 71 6c 2d 2d 66 69 6e 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 6d 61 sql--final)............(setq.ema
15400 63 73 71 6c 2d 2d 66 69 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c csql--final..................(cl
15420 2d 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 6e 64 20 2c 28 63 6c 2d 63 6f 65 72 63 65 20 -destructuring-bind.,(cl-coerce.
15440 76 61 72 73 20 27 6c 69 73 74 29 20 65 6d 61 63 73 71 6c 2d 2d 72 65 73 75 6c 74 0a 20 20 20 20 vars.'list).emacsql--result.....
15460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 62 6f 64 79 29 29 29 29 29 29 29 0a 0a 3b 3b ...............,@body)))))))..;;
15480 3b 20 55 73 65 72 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 28 64 ;.User.interaction.functions..(d
154a0 65 66 76 61 72 20 65 6d 61 63 73 71 6c 2d 73 68 6f 77 2d 62 75 66 66 65 72 2d 6e 61 6d 65 20 22 efvar.emacsql-show-buffer-name."
154c0 2a 65 6d 61 63 73 71 6c 2d 73 68 6f 77 2a 22 0a 20 20 22 4e 61 6d 65 20 6f 66 20 74 68 65 20 62 *emacsql-show*"..."Name.of.the.b
154e0 75 66 66 65 72 20 66 6f 72 20 64 69 73 70 6c 61 79 69 6e 67 20 69 6e 74 65 72 6d 65 64 69 61 74 uffer.for.displaying.intermediat
15500 65 20 53 51 4c 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 69 6e 64 65 6e 74 e.SQL.")..(defun.emacsql--indent
15520 20 28 29 0a 20 20 22 49 6e 64 65 6e 74 20 61 6e 64 20 77 72 61 70 20 74 68 65 20 53 51 4c 20 65 .()..."Indent.and.wrap.the.SQL.e
15540 78 70 72 65 73 73 69 6f 6e 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e xpression.in.the.current.buffer.
15560 22 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 "...(save-excursion.....(goto-ch
15580 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d ar.(point-min)).....(let.((case-
155a0 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 fold-search.nil)).......(while.(
155c0 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 2d 72 65 67 65 78 70 20 22 20 5b 41 2d 5a 5d 2b 22 20 search-forward-regexp.".[A-Z]+".
155e0 6e 69 6c 20 3a 6e 6f 2d 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 nil.:no-error).........(when.(>.
15600 28 63 75 72 72 65 6e 74 2d 63 6f 6c 75 6d 6e 29 20 28 2a 20 66 69 6c 6c 2d 63 6f 6c 75 6d 6e 20 (current-column).(*.fill-column.
15620 30 2e 38 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 77 61 72 64 2d 77 6f 72 64 29 0a 0.8))...........(backward-word).
15640 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 20 20 20 20 22 29 29 29 29 29 29 ..........(insert."\n...."))))))
15660 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 73 68 6f 77 2d 73 71 6c 20 28 73 74 72 69 6e ..(defun.emacsql-show-sql.(strin
15680 67 29 0a 20 20 22 46 6f 6e 74 69 66 79 20 61 6e 64 20 64 69 73 70 6c 61 79 20 74 68 65 20 53 51 g)..."Fontify.and.display.the.SQ
156a0 4c 20 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 20 53 54 52 49 4e 47 2e 22 0a 20 20 28 6c 65 74 20 L.expression.in.STRING."...(let.
156c0 28 28 66 6f 6e 74 69 66 69 65 64 0a 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d ((fontified..........(with-temp-
156e0 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 73 74 72 69 6e 67 buffer............(insert.string
15700 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 71 6c 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 )............(sql-mode).........
15720 20 20 20 28 77 69 74 68 2d 6e 6f 2d 77 61 72 6e 69 6e 67 73 20 3b 3b 20 61 75 74 6f 6c 6f 61 64 ...(with-no-warnings.;;.autoload
15740 65 64 20 62 79 20 70 72 65 76 69 6f 75 73 20 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 ed.by.previous.line.............
15760 20 28 73 71 6c 2d 68 69 67 68 6c 69 67 68 74 2d 73 71 6c 69 74 65 2d 6b 65 79 77 6f 72 64 73 29 .(sql-highlight-sqlite-keywords)
15780 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 65 6e 73 75 72 65 29 0a )............(font-lock-ensure).
157a0 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 2d 69 6e 64 65 6e 74 29 0a 20 20 20 ...........(emacsql--indent)....
157c0 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 20 20 20 28 ........(buffer-string)))).....(
157e0 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d with-current-buffer.(get-buffer-
15800 63 72 65 61 74 65 20 65 6d 61 63 73 71 6c 2d 73 68 6f 77 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 create.emacsql-show-buffer-name)
15820 0a 20 20 20 20 20 20 28 69 66 20 28 3c 20 28 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 29 20 66 69 .......(if.(<.(length.string).fi
15840 6c 6c 2d 63 6f 6c 75 6d 6e 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 ll-column)...........(message."%
15860 73 22 20 66 6f 6e 74 69 66 69 65 64 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 75 66 s".fontified).........(let.((buf
15880 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 fer-read-only.nil))...........(e
158a0 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 66 rase-buffer)...........(insert.f
158c0 6f 6e 74 69 66 69 65 64 29 29 0a 20 20 20 20 20 20 20 20 28 73 70 65 63 69 61 6c 2d 6d 6f 64 65 ontified)).........(special-mode
158e0 29 0a 20 20 20 20 20 20 20 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 29 0a 20 20 20 ).........(visual-line-mode)....
15900 20 20 20 20 20 28 70 6f 70 2d 74 6f 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 .....(pop-to-buffer.(current-buf
15920 66 65 72 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 66 6c 61 74 74 65 fer))))))..(defun.emacsql-flatte
15940 6e 2d 73 71 6c 20 28 73 71 6c 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 61 20 73 2d 65 78 70 72 65 n-sql.(sql)..."Convert.a.s-expre
15960 73 73 69 6f 6e 20 53 51 4c 20 69 6e 74 6f 20 61 20 66 6c 61 74 20 73 74 72 69 6e 67 20 66 6f 72 ssion.SQL.into.a.flat.string.for
15980 20 64 69 73 70 6c 61 79 2e 22 0a 20 20 28 63 6c 2d 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 .display."...(cl-destructuring-b
159a0 69 6e 64 20 28 73 74 72 69 6e 67 20 2e 20 76 61 72 73 29 20 28 65 6d 61 63 73 71 6c 2d 70 72 65 ind.(string...vars).(emacsql-pre
159c0 70 61 72 65 20 73 71 6c 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 28 61 70 70 6c pare.sql).....(concat......(appl
159e0 79 20 23 27 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 69 y.#'format.string.(cl-loop.for.i
15a00 20 69 6e 20 28 6d 61 70 63 61 72 20 23 27 63 61 72 20 76 61 72 73 29 0a 20 20 20 20 20 20 20 20 .in.(mapcar.#'car.vars).........
15a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c .............................col
15a40 6c 65 63 74 20 28 69 6e 74 65 72 6e 20 28 66 6f 72 6d 61 74 20 22 24 25 64 22 20 28 31 2b 20 69 lect.(intern.(format."$%d".(1+.i
15a60 29 29 29 29 29 0a 20 20 20 20 20 22 3b 22 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 )))))......";")))..;;;###autoloa
15a80 64 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 73 68 6f 77 2d 6c 61 73 74 2d 73 71 6c 20 28 d.(defun.emacsql-show-last-sql.(
15aa0 26 6f 70 74 69 6f 6e 61 6c 20 70 72 65 66 69 78 29 0a 20 20 22 44 69 73 70 6c 61 79 20 74 68 65 &optional.prefix)..."Display.the
15ac0 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 6f 66 20 74 68 65 20 73 2d 65 78 70 72 65 73 73 69 6f .compiled.SQL.of.the.s-expressio
15ae0 6e 20 53 51 4c 20 65 78 70 72 65 73 73 69 6f 6e 20 62 65 66 6f 72 65 20 70 6f 69 6e 74 2e 0a 41 n.SQL.expression.before.point..A
15b00 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 20 63 61 75 73 65 73 20 74 68 65 20 53 51 4c 20 .prefix.argument.causes.the.SQL.
15b20 74 6f 20 62 65 20 70 72 69 6e 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 to.be.printed.into.the.current.b
15b40 75 66 66 65 72 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 6c uffer."...(interactive."P")...(l
15b60 65 74 20 28 28 73 65 78 70 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 65 6c 69 73 70 2d 2d 70 et.((sexp.(if.(fboundp.'elisp--p
15b80 72 65 63 65 64 69 6e 67 2d 73 65 78 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 receding-sexp)..................
15ba0 20 28 65 6c 69 73 70 2d 2d 70 72 65 63 65 64 69 6e 67 2d 73 65 78 70 29 0a 20 20 20 20 20 20 20 .(elisp--preceding-sexp)........
15bc0 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 6e 6f 2d 77 61 72 6e 69 6e 67 73 0a 20 20 20 20 20 .........(with-no-warnings......
15be0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 63 65 64 69 6e 67 2d 73 65 78 70 29 29 29 29 .............(preceding-sexp))))
15c00 29 0a 20 20 20 20 28 69 66 20 28 65 6d 61 63 73 71 6c 2d 73 71 6c 2d 70 20 73 65 78 70 29 0a 20 ).....(if.(emacsql-sql-p.sexp)..
15c20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 71 6c 20 28 65 6d 61 63 73 71 6c 2d 66 6c 61 74 74 .......(let.((sql.(emacsql-flatt
15c40 65 6e 2d 73 71 6c 20 73 65 78 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 70 72 65 en-sql.sexp)))...........(if.pre
15c60 66 69 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 73 71 6c 29 0a 20 fix...............(insert.sql)..
15c80 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 73 68 6f 77 2d 73 71 6c 20 73 71 6c ...........(emacsql-show-sql.sql
15ca0 29 29 29 0a 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20 53 ))).......(user-error."Invalid.S
15cc0 51 4c 3a 20 25 53 22 20 73 65 78 70 29 29 29 29 0a 0a 3b 3b 3b 20 46 69 78 20 45 6d 61 63 73 27 QL:.%S".sexp))))..;;;.Fix.Emacs'
15ce0 20 62 72 6f 6b 65 6e 20 76 65 63 74 6f 72 20 69 6e 64 65 6e 74 61 74 69 6f 6e 0a 0a 28 64 65 66 .broken.vector.indentation..(def
15d00 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 69 6e 73 69 64 65 2d 76 65 63 74 6f 72 2d 70 20 28 29 0a 20 un.emacsql--inside-vector-p.()..
15d20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 70 6f 69 6e 74 20 69 73 20 69 6e 73 ."Return.non-nil.if.point.is.ins
15d40 69 64 65 20 61 20 76 65 63 74 6f 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 ide.a.vector.expression."...(let
15d60 20 28 28 73 74 61 72 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 .((start.(point))).....(save-exc
15d80 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 64 65 66 75 6e ursion.......(beginning-of-defun
15da0 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6e 74 61 69 6e 69 6e 67 2d 73 65 78 70 20 28 ).......(let.((containing-sexp.(
15dc0 65 6c 74 20 28 70 61 72 73 65 2d 70 61 72 74 69 61 6c 2d 73 65 78 70 20 28 70 6f 69 6e 74 29 20 elt.(parse-partial-sexp.(point).
15de0 73 74 61 72 74 29 20 31 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 6e 64 20 63 6f 6e 74 61 69 6e start).1))).........(and.contain
15e00 69 6e 67 2d 73 65 78 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 67 6f ing-sexp..............(progn.(go
15e20 74 6f 2d 63 68 61 72 20 63 6f 6e 74 61 69 6e 69 6e 67 2d 73 65 78 70 29 0a 20 20 20 20 20 20 20 to-char.containing-sexp)........
15e40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 5b 22 29 29 .............(looking-at."\\["))
15e60 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 63 61 6c 63 75 6c 61 74 65 )))))..(defun.emacsql--calculate
15e80 2d 76 65 63 74 6f 72 2d 69 6e 64 65 6e 74 20 28 66 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 70 61 72 -vector-indent.(fn.&optional.par
15ea0 73 65 2d 73 74 61 72 74 29 0a 20 20 22 44 6f 6e 27 74 20 69 6e 64 65 6e 74 20 76 65 63 74 6f 72 se-start)..."Don't.indent.vector
15ec0 73 20 69 6e 20 60 65 6d 61 63 73 2d 6c 69 73 70 2d 6d 6f 64 65 27 20 6c 69 6b 65 20 6c 69 73 74 s.in.`emacs-lisp-mode'.like.list
15ee0 73 2e 22 0a 20 20 28 69 66 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 62 65 67 69 6e s."...(if.(save-excursion.(begin
15f00 6e 69 6e 67 2d 6f 66 2d 6c 69 6e 65 29 20 28 65 6d 61 63 73 71 6c 2d 2d 69 6e 73 69 64 65 2d 76 ning-of-line).(emacsql--inside-v
15f20 65 63 74 6f 72 2d 70 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 6c 69 73 70 2d 69 6e 64 65 ector-p)).......(let.((lisp-inde
15f40 6e 74 2d 6f 66 66 73 65 74 20 31 29 29 0a 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 nt-offset.1)).........(funcall.f
15f60 6e 20 70 61 72 73 65 2d 73 74 61 72 74 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 6e 20 n.parse-start)).....(funcall.fn.
15f80 70 61 72 73 65 2d 73 74 61 72 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 66 parse-start)))..(defun.emacsql-f
15fa0 69 78 2d 76 65 63 74 6f 72 2d 69 6e 64 65 6e 74 61 74 69 6f 6e 20 28 29 0a 20 20 22 57 68 65 6e ix-vector-indentation.()..."When
15fc0 20 63 61 6c 6c 65 64 2c 20 61 64 76 69 73 65 20 60 63 61 6c 63 75 6c 61 74 65 2d 6c 69 73 70 2d .called,.advise.`calculate-lisp-
15fe0 69 6e 64 65 6e 74 27 20 74 6f 20 73 74 6f 70 20 69 6e 64 65 6e 74 69 6e 67 20 76 65 63 74 6f 72 indent'.to.stop.indenting.vector
16000 73 2e 0a 4f 6e 63 65 20 61 63 74 69 76 61 74 65 64 2c 20 76 65 63 74 6f 72 20 63 6f 6e 74 65 6e s..Once.activated,.vector.conten
16020 74 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 69 6e 64 65 6e 74 20 6c 69 6b 65 20 6c 69 73 74 73 2e 22 ts.no.longer.indent.like.lists."
16040 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 61 64 76 69 63 65 2d 61 64 64 20 27 ...(interactive)...(advice-add.'
16060 63 61 6c 63 75 6c 61 74 65 2d 6c 69 73 70 2d 69 6e 64 65 6e 74 20 3a 61 72 6f 75 6e 64 0a 20 20 calculate-lisp-indent.:around...
16080 20 20 20 20 20 20 20 20 20 20 20 20 23 27 65 6d 61 63 73 71 6c 2d 2d 63 61 6c 63 75 6c 61 74 65 ............#'emacsql--calculate
160a0 2d 76 65 63 74 6f 72 2d 69 6e 64 65 6e 74 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 6d 61 63 -vector-indent))..(provide.'emac
160c0 73 71 6c 29 0a 0a 3b 3b 3b 20 65 6d 61 63 73 71 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 sql)..;;;.emacsql.el.ends.here..
160e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
161a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
161c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
161e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16200 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2e 65 6c 00 00 00 emacsql-4.3.1/emacsql-psql.el...
16220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
16280 30 30 31 33 33 35 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 35 33 36 00 20 30 00 00 00 0013355.00000000000.014536..0...
162a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
162c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
162e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16300 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
16320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
16340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
163a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
163c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
163e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16400 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2e 65 6c 20 2d 2d 2d 20 45 6d 61 63 53 51 4c 20 ;;;.emacsql-psql.el.---.EmacSQL.
16420 62 61 63 6b 2d 65 6e 64 20 66 6f 72 20 50 6f 73 74 67 72 65 53 51 4c 20 76 69 61 20 70 73 71 6c back-end.for.PostgreSQL.via.psql
16440 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 74 20 2d 2a 2d 0a 0a 3b 3b 20 ..-*-.lexical-binding:t.-*-..;;.
16460 54 68 69 73 20 69 73 20 66 72 65 65 20 61 6e 64 20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f This.is.free.and.unencumbered.so
16480 66 74 77 61 72 65 20 72 65 6c 65 61 73 65 64 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 ftware.released.into.the.public.
164a0 64 6f 6d 61 69 6e 2e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 43 68 72 69 73 74 6f 70 68 65 72 20 domain...;;.Author:.Christopher.
164c0 57 65 6c 6c 6f 6e 73 20 3c 77 65 6c 6c 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d Wellons.<wellons@nullprogram.com
164e0 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 3a 20 4a 6f 6e 61 73 20 42 65 72 6e 6f 75 6c 6c 69 >.;;.Maintainer:.Jonas.Bernoulli
16500 20 3c 65 6d 61 63 73 2e 65 6d 61 63 73 71 6c 40 6a 6f 6e 61 73 2e 62 65 72 6e 6f 75 6c 6c 69 2e .<emacs.emacsql@jonas.bernoulli.
16520 64 65 76 3e 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 dev>..;;.SPDX-License-Identifier
16540 3a 20 55 6e 6c 69 63 65 6e 73 65 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b :.Unlicense..;;;.Commentary:..;;
16560 20 54 68 69 73 20 6c 69 62 72 61 72 79 20 70 72 6f 76 69 64 65 73 20 61 6e 20 45 6d 61 63 53 51 .This.library.provides.an.EmacSQ
16580 4c 20 62 61 63 6b 2d 65 6e 64 20 66 6f 72 20 50 6f 73 74 67 72 65 53 51 4c 2c 20 77 68 69 63 68 L.back-end.for.PostgreSQL,.which
165a0 0a 3b 3b 20 75 73 65 73 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 60 70 73 71 6c 27 20 63 6f 6d .;;.uses.the.standard.`psql'.com
165c0 6d 61 6e 64 20 6c 69 6e 65 20 70 72 6f 67 72 61 6d 2e 0a 0a 3b 3b 20 28 46 6f 72 20 61 6e 20 61 mand.line.program...;;.(For.an.a
165e0 6c 74 65 72 6e 61 74 69 76 65 20 62 61 63 6b 2d 65 6e 64 20 66 6f 72 20 50 6f 73 74 67 72 65 53 lternative.back-end.for.PostgreS
16600 51 4c 2c 20 73 65 65 20 60 65 6d 61 63 73 71 6c 2d 70 67 27 2e 29 0a 0a 3b 3b 3b 20 43 6f 64 65 QL,.see.`emacsql-pg'.)..;;;.Code
16620 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 65 6d 61 63 73 71 6c 29 0a 0a 28 64 65 66 76 61 72 20 65 :..(require.'emacsql)..(defvar.e
16640 6d 61 63 73 71 6c 2d 70 73 71 6c 2d 65 78 65 63 75 74 61 62 6c 65 20 22 70 73 71 6c 22 0a 20 20 macsql-psql-executable."psql"...
16660 22 50 61 74 68 20 74 6f 20 74 68 65 20 70 73 71 6c 20 28 50 6f 73 74 67 72 65 53 51 4c 20 63 6c "Path.to.the.psql.(PostgreSQL.cl
16680 69 65 6e 74 29 20 65 78 65 63 75 74 61 62 6c 65 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 ient).executable.")..(defun.emac
166a0 73 71 6c 2d 70 73 71 6c 2d 75 6e 61 76 61 69 6c 61 62 6c 65 2d 70 20 28 29 0a 20 20 22 52 65 74 sql-psql-unavailable-p.()..."Ret
166c0 75 72 6e 20 61 20 72 65 61 73 6f 6e 20 69 66 20 74 68 65 20 70 73 71 6c 20 65 78 65 63 75 74 61 urn.a.reason.if.the.psql.executa
166e0 62 6c 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0a 3a 6e 6f 2d 65 78 65 63 75 74 ble.is.not.available..:no-execut
16700 61 62 6c 65 20 2d 2d 20 63 61 6e 6e 6f 74 20 66 69 6e 64 20 74 68 65 20 65 78 65 63 75 74 61 62 able.--.cannot.find.the.executab
16720 6c 65 0a 3a 63 61 6e 6e 6f 74 2d 65 78 65 63 75 74 65 20 2d 2d 20 63 61 6e 6e 6f 74 20 72 75 6e le.:cannot-execute.--.cannot.run
16740 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 0a 3a 6f 6c 64 2d 76 65 72 73 69 6f 6e 20 2d 2d 20 .the.executable.:old-version.--.
16760 73 71 6c 69 74 65 33 20 76 65 72 73 69 6f 6e 20 69 73 20 74 6f 6f 20 6f 6c 64 22 0a 20 20 28 6c sqlite3.version.is.too.old"...(l
16780 65 74 20 28 28 70 73 71 6c 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2d 65 78 65 63 75 74 61 62 6c et.((psql.emacsql-psql-executabl
167a0 65 29 29 0a 20 20 20 20 28 69 66 20 28 6e 75 6c 6c 20 28 65 78 65 63 75 74 61 62 6c 65 2d 66 69 e)).....(if.(null.(executable-fi
167c0 6e 64 20 70 73 71 6c 29 29 0a 20 20 20 20 20 20 20 20 3a 6e 6f 2d 65 78 65 63 75 74 61 62 6c 65 nd.psql)).........:no-executable
167e0 0a 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 5f 0a 20 20 20 20 20 20 20 .......(condition-case._........
16800 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 ...(with-temp-buffer............
16820 20 28 63 61 6c 6c 2d 70 72 6f 63 65 73 73 20 70 73 71 6c 20 6e 69 6c 20 28 63 75 72 72 65 6e 74 .(call-process.psql.nil.(current
16840 2d 62 75 66 66 65 72 29 20 6e 69 6c 20 22 2d 2d 76 65 72 73 69 6f 6e 22 29 0a 20 20 20 20 20 20 -buffer).nil."--version").......
16860 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 65 72 73 69 6f 6e 20 28 63 6c 2d 74 68 69 72 64 20 28 ......(let.((version.(cl-third.(
16880 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 29 29 split-string.(buffer-string)))))
168a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 76 65 72 73 69 6f 6e 3c 20 76 65 72 ...............(if.(version<.ver
168c0 73 69 6f 6e 20 22 31 2e 30 2e 30 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sion."1.0.0")...................
168e0 3a 6f 6c 64 2d 76 65 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c :old-version.................nil
16900 29 29 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 3a 63 61 6e 6e 6f 74 2d 65 78 65 63 75 ))).........(error.:cannot-execu
16920 74 65 29 29 29 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2d te)))))..(defconst.emacsql-psql-
16940 72 65 73 65 72 76 65 64 0a 20 20 28 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 2d 72 65 73 reserved...(emacsql-register-res
16960 65 72 76 65 64 0a 20 20 20 27 28 20 41 4c 4c 20 41 4e 41 4c 59 53 45 20 41 4e 41 4c 59 5a 45 20 erved....'(.ALL.ANALYSE.ANALYZE.
16980 41 4e 44 20 41 4e 59 20 41 53 20 41 53 43 20 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e 20 42 45 54 AND.ANY.AS.ASC.AUTHORIZATION.BET
169a0 57 45 45 4e 20 42 49 4e 41 52 59 0a 20 20 20 20 20 20 42 4f 54 48 20 43 41 53 45 20 43 41 53 54 WEEN.BINARY.......BOTH.CASE.CAST
169c0 20 43 48 45 43 4b 20 43 4f 4c 4c 41 54 45 20 43 4f 4c 55 4d 4e 20 43 4f 4e 53 54 52 41 49 4e 54 .CHECK.COLLATE.COLUMN.CONSTRAINT
169e0 20 43 52 45 41 54 45 20 43 52 4f 53 53 0a 20 20 20 20 20 20 43 55 52 52 45 4e 54 5f 44 41 54 45 .CREATE.CROSS.......CURRENT_DATE
16a00 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 .CURRENT_TIME.CURRENT_TIMESTAMP.
16a20 43 55 52 52 45 4e 54 5f 55 53 45 52 20 44 45 46 41 55 4c 54 0a 20 20 20 20 20 20 44 45 46 45 52 CURRENT_USER.DEFAULT.......DEFER
16a40 52 41 42 4c 45 20 44 45 53 43 20 44 49 53 54 49 4e 43 54 20 44 4f 20 45 4c 53 45 20 45 4e 44 20 RABLE.DESC.DISTINCT.DO.ELSE.END.
16a60 45 58 43 45 50 54 20 46 41 4c 53 45 20 46 4f 52 20 46 4f 52 45 49 47 4e 0a 20 20 20 20 20 20 46 EXCEPT.FALSE.FOR.FOREIGN.......F
16a80 52 45 45 5a 45 20 46 52 4f 4d 20 46 55 4c 4c 20 47 52 41 4e 54 20 47 52 4f 55 50 20 48 41 56 49 REEZE.FROM.FULL.GRANT.GROUP.HAVI
16aa0 4e 47 20 49 4c 49 4b 45 20 49 4e 20 49 4e 49 54 49 41 4c 4c 59 20 49 4e 4e 45 52 0a 20 20 20 20 NG.ILIKE.IN.INITIALLY.INNER.....
16ac0 20 20 49 4e 54 45 52 53 45 43 54 20 49 4e 54 4f 20 49 53 20 49 53 4e 55 4c 4c 20 4a 4f 49 4e 20 ..INTERSECT.INTO.IS.ISNULL.JOIN.
16ae0 4c 45 41 44 49 4e 47 20 4c 45 46 54 20 4c 49 4b 45 20 4c 49 4d 49 54 20 4c 4f 43 41 4c 54 49 4d LEADING.LEFT.LIKE.LIMIT.LOCALTIM
16b00 45 0a 20 20 20 20 20 20 4c 4f 43 41 4c 54 49 4d 45 53 54 41 4d 50 20 4e 41 54 55 52 41 4c 20 4e E.......LOCALTIMESTAMP.NATURAL.N
16b20 45 57 20 4e 4f 54 20 4e 4f 54 4e 55 4c 4c 20 4e 55 4c 4c 20 4f 46 46 20 4f 46 46 53 45 54 20 4f EW.NOT.NOTNULL.NULL.OFF.OFFSET.O
16b40 4c 44 20 4f 4e 0a 20 20 20 20 20 20 4f 4e 4c 59 20 4f 52 20 4f 52 44 45 52 20 4f 55 54 45 52 20 LD.ON.......ONLY.OR.ORDER.OUTER.
16b60 4f 56 45 52 4c 41 50 53 20 50 4c 41 43 49 4e 47 20 50 52 49 4d 41 52 59 20 52 45 46 45 52 45 4e OVERLAPS.PLACING.PRIMARY.REFEREN
16b80 43 45 53 20 52 49 47 48 54 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 53 45 53 53 49 4f 4e 5f 55 CES.RIGHT.......SELECT.SESSION_U
16ba0 53 45 52 20 53 49 4d 49 4c 41 52 20 53 4f 4d 45 20 54 41 42 4c 45 20 54 48 45 4e 20 54 4f 20 54 SER.SIMILAR.SOME.TABLE.THEN.TO.T
16bc0 52 41 49 4c 49 4e 47 20 54 52 55 45 0a 20 20 20 20 20 20 55 4e 49 4f 4e 20 55 4e 49 51 55 45 20 RAILING.TRUE.......UNION.UNIQUE.
16be0 55 53 45 52 20 55 53 49 4e 47 20 56 45 52 42 4f 53 45 20 57 48 45 4e 20 57 48 45 52 45 29 29 0a USER.USING.VERBOSE.WHEN.WHERE)).
16c00 20 20 22 4c 69 73 74 20 6f 66 20 61 6c 6c 20 6f 66 20 50 6f 73 74 67 72 65 53 51 4c 27 73 20 72 .."List.of.all.of.PostgreSQL's.r
16c20 65 73 65 72 76 65 64 20 77 6f 72 64 73 2e 0a 68 74 74 70 3a 2f 2f 77 77 77 2e 70 6f 73 74 67 72 eserved.words..http://www.postgr
16c40 65 73 71 6c 2e 6f 72 67 2f 64 6f 63 73 2f 37 2e 33 2f 73 74 61 74 69 63 2f 73 71 6c 2d 6b 65 79 esql.org/docs/7.3/static/sql-key
16c60 77 6f 72 64 73 2d 61 70 70 65 6e 64 69 78 2e 68 74 6d 6c 22 29 0a 0a 28 64 65 66 63 6c 61 73 73 words-appendix.html")..(defclass
16c80 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 65 6d 61 63 73 71 .emacsql-psql-connection.(emacsq
16ca0 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 28 28 64 62 6e 61 6d 65 20 3a 72 65 61 64 65 72 l-connection)...((dbname.:reader
16cc0 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2d 64 62 6e 61 6d 65 20 3a 69 6e 69 74 61 72 67 20 3a 64 .emacsql-psql-dbname.:initarg.:d
16ce0 62 6e 61 6d 65 29 0a 20 20 20 28 74 79 70 65 73 20 3a 61 6c 6c 6f 63 61 74 69 6f 6e 20 3a 63 6c bname)....(types.:allocation.:cl
16d00 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 3a 72 65 61 64 65 72 20 65 6d 61 63 73 71 6c 2d 74 79 ass...........:reader.emacsql-ty
16d20 70 65 73 0a 20 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 66 6f 72 6d 20 27 28 28 69 6e 74 65 67 pes...........:initform.'((integ
16d40 65 72 20 22 42 49 47 49 4e 54 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er."BIGINT")....................
16d60 20 20 20 28 66 6c 6f 61 74 20 22 44 4f 55 42 4c 45 20 50 52 45 43 49 53 49 4f 4e 22 29 0a 20 20 ...(float."DOUBLE.PRECISION")...
16d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 62 6a 65 63 74 20 22 54 45 58 ....................(object."TEX
16da0 54 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 69 6c 20 22 T").......................(nil."
16dc0 54 45 58 54 22 29 29 29 29 0a 20 20 22 41 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20 50 TEXT"))))..."A.connection.to.a.P
16de0 6f 73 74 67 72 65 53 51 4c 20 64 61 74 61 62 61 73 65 20 76 69 61 20 70 73 71 6c 2e 22 29 0a 0a ostgreSQL.database.via.psql.")..
16e00 28 63 6c 2d 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c 20 28 64 62 6e 61 6d 65 20 26 (cl-defun.emacsql-psql.(dbname.&
16e20 6b 65 79 20 75 73 65 72 6e 61 6d 65 20 68 6f 73 74 6e 61 6d 65 20 70 6f 72 74 20 64 65 62 75 67 key.username.hostname.port.debug
16e40 29 0a 20 20 22 43 6f 6e 6e 65 63 74 20 74 6f 20 61 20 50 6f 73 74 67 72 65 53 51 4c 20 73 65 72 )..."Connect.to.a.PostgreSQL.ser
16e60 76 65 72 20 75 73 69 6e 67 20 74 68 65 20 70 73 71 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 ver.using.the.psql.command.line.
16e80 70 72 6f 67 72 61 6d 2e 22 0a 20 20 28 6c 65 74 20 28 28 61 72 67 73 20 28 6c 69 73 74 20 64 62 program."...(let.((args.(list.db
16ea0 6e 61 6d 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 75 73 65 72 6e 61 6d 65 0a 20 20 20 20 20 name))).....(when.username......
16ec0 20 28 70 75 73 68 20 75 73 65 72 6e 61 6d 65 20 61 72 67 73 29 29 0a 20 20 20 20 28 70 75 73 68 .(push.username.args)).....(push
16ee0 20 22 2d 6e 22 20 61 72 67 73 29 0a 20 20 20 20 28 77 68 65 6e 20 70 6f 72 74 0a 20 20 20 20 20 ."-n".args).....(when.port......
16f00 20 28 70 75 73 68 20 22 2d 70 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 28 70 75 73 68 20 70 6f .(push."-p".args).......(push.po
16f20 72 74 20 61 72 67 73 29 29 0a 20 20 20 20 28 77 68 65 6e 20 68 6f 73 74 6e 61 6d 65 0a 20 20 20 rt.args)).....(when.hostname....
16f40 20 20 20 28 70 75 73 68 20 22 2d 68 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 28 70 75 73 68 20 ...(push."-h".args).......(push.
16f60 68 6f 73 74 6e 61 6d 65 20 61 72 67 73 29 29 0a 20 20 20 20 28 73 65 74 71 20 61 72 67 73 20 28 hostname.args)).....(setq.args.(
16f80 6e 72 65 76 65 72 73 65 20 61 72 67 73 29 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 62 75 66 66 nreverse.args)).....(let*.((buff
16fa0 65 72 20 28 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 22 20 2a 65 6d 61 63 73 er.(generate-new-buffer.".*emacs
16fc0 71 6c 2d 70 73 71 6c 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 73 71 6c 20 65 6d 61 ql-psql*"))............(psql.ema
16fe0 63 73 71 6c 2d 70 73 71 6c 2d 65 78 65 63 75 74 61 62 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 csql-psql-executable)...........
17000 20 28 63 6f 6d 6d 61 6e 64 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 73 68 65 6c 6c 2d 71 75 6f .(command.(mapconcat.#'shell-quo
17020 74 65 2d 61 72 67 75 6d 65 6e 74 20 28 63 6f 6e 73 20 70 73 71 6c 20 61 72 67 73 29 20 22 20 22 te-argument.(cons.psql.args)."."
17040 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 20 28 73 74 61 72 74 2d 70 72 ))............(process.(start-pr
17060 6f 63 65 73 73 2d 73 68 65 6c 6c 2d 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 ocess-shell-command.............
17080 20 20 20 20 20 20 20 20 20 22 65 6d 61 63 73 71 6c 2d 70 73 71 6c 22 20 62 75 66 66 65 72 20 28 ........."emacsql-psql".buffer.(
170a0 63 6f 6e 63 61 74 20 22 73 74 74 79 20 72 61 77 20 26 26 20 22 20 63 6f 6d 6d 61 6e 64 29 29 29 concat."stty.raw.&&.".command)))
170c0 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 6d 61 6b 65 2d 69 6e ............(connection.(make-in
170e0 73 74 61 6e 63 65 20 27 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 0a stance.'emacsql-psql-connection.
17100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
17120 20 20 20 20 20 20 3a 68 61 6e 64 6c 65 20 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 ......:handle.process...........
17140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 62 6e ............................:dbn
17160 61 6d 65 20 64 62 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 70 72 6f 63 65 ame.dbname))).......(setf.(proce
17180 73 73 2d 73 65 6e 74 69 6e 65 6c 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 ss-sentinel.process)............
171a0 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 63 20 5f 29 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 .(lambda.(proc._).(kill-buffer.(
171c0 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 29 29 29 29 0a 20 20 20 20 20 20 28 73 process-buffer.proc)))).......(s
171e0 65 74 2d 70 72 6f 63 65 73 73 2d 71 75 65 72 79 2d 6f 6e 2d 65 78 69 74 2d 66 6c 61 67 20 28 6f et-process-query-on-exit-flag.(o
17200 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 20 6e 69 6c 29 0a 20 20 20 20 ref.connection.handle).nil).....
17220 20 20 28 77 68 65 6e 20 64 65 62 75 67 20 28 65 6d 61 63 73 71 6c 2d 65 6e 61 62 6c 65 2d 64 65 ..(when.debug.(emacsql-enable-de
17240 62 75 67 67 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 28 6d 61 70 63 bugging.connection)).......(mapc
17260 20 28 61 70 70 6c 79 2d 70 61 72 74 69 61 6c 6c 79 20 23 27 65 6d 61 63 73 71 6c 2d 73 65 6e 64 .(apply-partially.#'emacsql-send
17280 2d 6d 65 73 73 61 67 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 -message.connection)............
172a0 20 27 28 22 5c 5c 70 73 65 74 20 70 61 67 65 72 20 6f 66 66 22 0a 20 20 20 20 20 20 20 20 20 20 .'("\\pset.pager.off"...........
172c0 20 20 20 20 22 5c 5c 70 73 65 74 20 6e 75 6c 6c 20 6e 69 6c 22 0a 20 20 20 20 20 20 20 20 20 20 ...."\\pset.null.nil"...........
172e0 20 20 20 20 22 5c 5c 61 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 74 22 0a 20 20 ...."\\a"..............."\\t"...
17300 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 66 20 27 20 27 22 0a 20 20 20 20 20 20 20 20 20 20 ............"\\f.'.'"...........
17320 20 20 20 20 22 53 45 54 20 63 6c 69 65 6e 74 5f 6d 69 6e 5f 6d 65 73 73 61 67 65 73 20 54 4f 20 ...."SET.client_min_messages.TO.
17340 45 52 52 4f 52 3b 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 73 65 74 20 50 52 4f ERROR;"..............."\\set.PRO
17360 4d 50 54 31 20 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 45 4d 41 43 53 51 4c 3b 22 MPT1.]"..............."EMACSQL;"
17380 29 29 20 3b 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 66 6c 75 73 68 0a 20 20 20 20 20 20 28 )).;.error.message.flush.......(
173a0 65 6d 61 63 73 71 6c 2d 77 61 69 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 28 emacsql-wait.connection).......(
173c0 65 6d 61 63 73 71 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 emacsql.connection..............
173e0 20 20 5b 3a 73 65 74 20 28 3d 20 64 65 66 61 75 6c 74 2d 74 72 61 6e 73 61 63 74 69 6f 6e 2d 69 ..[:set.(=.default-transaction-i
17400 73 6f 6c 61 74 69 6f 6e 20 27 53 45 52 49 41 4c 49 5a 41 42 4c 45 29 5d 29 0a 20 20 20 20 20 20 solation.'SERIALIZABLE)]).......
17420 28 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 29 (emacsql-register.connection))))
17440 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 63 6c 6f 73 65 20 28 28 ..(cl-defmethod.emacsql-close.((
17460 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 connection.emacsql-psql-connecti
17480 6f 6e 29 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 63 65 73 73 20 28 6f 72 65 66 20 63 6f 6e 6e on))...(let.((process.(oref.conn
174a0 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 70 72 6f 63 ection.handle))).....(when.(proc
174c0 65 73 73 2d 6c 69 76 65 2d 70 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 28 70 72 6f 63 65 ess-live-p.process).......(proce
174e0 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 20 22 5c 5c 71 5c 6e 22 29 29 ss-send-string.process."\\q\n"))
17500 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 73 65 6e 64 2d 6d ))..(cl-defmethod.emacsql-send-m
17520 65 73 73 61 67 65 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c essage.((connection.emacsql-psql
17540 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 6d 65 73 73 61 67 65 29 0a 20 20 28 6c 65 74 20 28 28 70 -connection).message)...(let.((p
17560 72 6f 63 65 73 73 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 29 rocess.(oref.connection.handle))
17580 29 0a 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 70 72 6f 63 65 ).....(process-send-string.proce
175a0 73 73 20 6d 65 73 73 61 67 65 29 0a 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 ss.message).....(process-send-st
175c0 72 69 6e 67 20 70 72 6f 63 65 73 73 20 22 5c 6e 22 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 ring.process."\n")))..(cl-defmet
175e0 68 6f 64 20 65 6d 61 63 73 71 6c 2d 77 61 69 74 69 6e 67 2d 70 20 28 28 63 6f 6e 6e 65 63 74 69 hod.emacsql-waiting-p.((connecti
17600 6f 6e 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 28 on.emacsql-psql-connection))...(
17620 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 65 6d 61 63 73 71 6c 2d 62 75 66 with-current-buffer.(emacsql-buf
17640 66 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 28 63 6f 6e 64 20 28 28 3d 20 28 62 fer.connection).....(cond.((=.(b
17660 75 66 66 65 72 2d 73 69 7a 65 29 20 31 29 20 28 73 74 72 69 6e 67 3d 20 22 5d 22 20 28 62 75 66 uffer-size).1).(string=."]".(buf
17680 66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 3e 20 28 62 75 66 fer-string)))...........((>.(buf
176a0 66 65 72 2d 73 69 7a 65 29 20 31 29 20 28 73 74 72 69 6e 67 3d 20 22 5c 6e 5d 22 20 28 62 75 66 fer-size).1).(string=."\n]".(buf
176c0 66 65 72 2d 73 75 62 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fer-substring...................
176e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2d 20 .............................(-.
17700 28 70 6f 69 6e 74 2d 6d 61 78 29 20 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (point-max).2)..................
17720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 ..............................(p
17740 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 oint-max)))))))..(cl-defmethod.e
17760 6d 61 63 73 71 6c 2d 63 68 65 63 6b 2d 65 72 72 6f 72 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 macsql-check-error.((connection.
17780 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 28 77 69 74 emacsql-psql-connection))...(wit
177a0 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 65 6d 61 63 73 71 6c 2d 62 75 66 66 65 72 h-current-buffer.(emacsql-buffer
177c0 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c .connection).....(let.((case-fol
177e0 64 2d 73 65 61 72 63 68 20 74 29 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 d-search.t)).......(goto-char.(p
17800 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d oint-min)).......(when.(looking-
17820 61 74 20 22 65 72 72 6f 72 3a 22 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 62 65 67 at."error:").........(let*.((beg
17840 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 .(line-beginning-position)).....
17860 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 ...........(end.(line-end-positi
17880 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 69 67 6e 61 6c 20 27 65 6d 61 63 73 71 6c on)))...........(signal.'emacsql
178a0 2d 65 72 72 6f 72 20 28 6c 69 73 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 62 -error.(list.(buffer-substring.b
178c0 65 67 20 65 6e 64 29 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d eg.end))))))))..(cl-defmethod.em
178e0 61 63 73 71 6c 2d 70 61 72 73 65 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c acsql-parse.((connection.emacsql
17900 2d 70 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 28 65 6d 61 63 73 71 6c 2d 63 68 -psql-connection))...(emacsql-ch
17920 65 63 6b 2d 65 72 72 6f 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 28 77 69 74 68 2d 63 75 eck-error.connection)...(with-cu
17940 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 65 6d 61 63 73 71 6c 2d 62 75 66 66 65 72 20 63 6f 6e rrent-buffer.(emacsql-buffer.con
17960 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 28 6c 65 74 20 28 28 73 74 61 6e 64 61 72 64 2d 69 6e 70 nection).....(let.((standard-inp
17980 75 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 28 67 6f 74 ut.(current-buffer))).......(got
179a0 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f o-char.(point-min)).......(cl-lo
179c0 6f 70 20 75 6e 74 69 6c 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5d 22 29 0a 20 20 20 20 20 20 op.until.(looking-at."]").......
179e0 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 72 65 61 64 29 20 69 6e 74 6f 20 72 6f 77 .........collect.(read).into.row
17a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 ................when.(looking-at
17a20 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 72 6f ."\n")................collect.ro
17a40 77 20 69 6e 74 6f 20 72 6f 77 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 64 w.into.rows................and.d
17a60 6f 20 28 70 72 6f 67 6e 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72 20 31 29 20 28 73 65 74 71 20 o.(progn.(forward-char.1).(setq.
17a80 72 6f 77 20 28 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 row.()))................finally.
17aa0 28 63 6c 2d 72 65 74 75 72 6e 20 72 6f 77 73 29 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 (cl-return.rows)))))..(provide.'
17ac0 65 6d 61 63 73 71 6c 2d 70 73 71 6c 29 0a 0a 3b 3b 3b 20 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2e emacsql-psql)..;;;.emacsql-psql.
17ae0 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 el.ends.here....................
17b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c00 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 31 2f 2e 64 69 72 2d 6c 6f 63 61 6c 73 2e 65 6c 00 00 00 00 emacsql-4.3.1/.dir-locals.el....
17c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
17c80 30 30 30 30 32 32 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 32 33 35 00 20 30 00 00 00 0000227.00000000000.014235..0...
17ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17d00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
17d20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
17d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e00 28 28 6e 69 6c 0a 20 20 28 69 6e 64 65 6e 74 2d 74 61 62 73 2d 6d 6f 64 65 20 2e 20 6e 69 6c 29 ((nil...(indent-tabs-mode...nil)
17e20 29 0a 20 28 6d 61 6b 65 66 69 6c 65 2d 6d 6f 64 65 0a 20 20 28 69 6e 64 65 6e 74 2d 74 61 62 73 )..(makefile-mode...(indent-tabs
17e40 2d 6d 6f 64 65 20 2e 20 74 29 29 0a 20 28 67 69 74 2d 63 6f 6d 6d 69 74 2d 6d 6f 64 65 0a 20 20 -mode...t))..(git-commit-mode...
17e60 28 67 69 74 2d 63 6f 6d 6d 69 74 2d 6d 61 6a 6f 72 2d 6d 6f 64 65 20 2e 20 67 69 74 2d 63 6f 6d (git-commit-major-mode...git-com
17e80 6d 69 74 2d 65 6c 69 73 70 2d 74 65 78 74 2d 6d 6f 64 65 29 29 29 0a 00 00 00 00 00 00 00 00 00 mit-elisp-text-mode)))..........
17ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
180a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
180c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
180e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
181a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
181c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
181e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
182a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
182c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
182e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
183a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
183c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
183e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
184a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
184c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
184e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
185a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
185c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
185e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
186a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
186c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
186e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
187a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
187c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
187e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
188a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
188c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
188e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
189a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
189c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
189e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................