summaryrefslogtreecommitdiff
path: root/.localrepo/emacsql-4.3.2.tar
blob: 042dcb49e85b7d4c7413d0816011fa49f7a17f10 (plain)
ofshex dumpascii
0000 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 32 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 emacsql-4.3.2/..................
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 34 00 20 35 00 00 00 0000000.00000000000.011604..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 32 2f 65 6d 61 63 73 71 6c 2d 63 6f 6d 70 69 6c 65 72 2e 65 emacsql-4.3.2/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 31 00 20 30 00 00 00 0053314.00000000000.015371..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 32 2f 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 6d 6f 64 emacsql-4.3.2/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 32 00 20 30 00 00 00 0006711.00000000000.016342..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 32 2f 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2e 65 6c 00 emacsql-4.3.2/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 31 00 20 30 00 00 00 0031571.00000000000.015061..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 32 2f 65 6d 61 63 73 71 6c 2d 70 67 2e 65 6c 00 00 00 00 00 emacsql-4.3.2/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 34 00 20 30 00 00 00 0006054.00000000000.014164..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 32 2f 52 45 41 44 4d 45 2e 6d 64 00 00 00 00 00 00 00 00 00 emacsql-4.3.2/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 34 00 20 30 00 00 00 0034264.00000000000.013074..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 32 2f 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 69 emacsql-4.3.2/emacsql-sqlite-bui
ee20 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.........................
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 36 33 36 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 36 35 32 36 00 20 30 00 00 00 0006363.00000000000.016526..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 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.--
f020 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
f040 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
f060 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.
f080 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
f0a0 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
f0c0 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
f0e0 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
f100 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
f120 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>..;
f140 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
f160 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
f180 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-
f1a0 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
f1c0 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
f1e0 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
f200 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-
f220 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")
f240 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
f260 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
f280 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
f2a0 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
f2c0 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-
f2e0 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
f300 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
f320 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
f340 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
f360 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...((
f380 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
f3a0 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
f3c0 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
f3e0 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)))..
f400 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
f420 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
f440 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)
f460 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
f480 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
f4a0 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.
f4c0 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
f4e0 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
f500 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.--
f520 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
f540 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
f560 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
f580 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
f5a0 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
f5c0 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 ................................
f5e0 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
f600 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
f620 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)).
f640 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.((
f660 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
f680 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
f6a0 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
f6c0 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
f6e0 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))
f700 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
f720 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
f740 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
f760 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
f780 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)
f7a0 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.
f7c0 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
f7e0 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
f800 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
f820 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.
f840 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).........
f860 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
f880 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 )...............................
f8a0 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)
f8c0 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 )...............................
f8e0 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.""))
f900 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 ................................
f920 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))
f940 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 ................................
f960 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
f980 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)))).......................
f9a0 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
f9c0 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
f9e0 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...............
fa00 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
fa20 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
fa40 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)..
fa60 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)).....
fa80 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
faa0 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*
fac0 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
fae0 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).............
fb00 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.,_)....
fb20 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.
fb40 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)))...
fb60 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
fb80 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
fba0 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
fbc0 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.
fbe0 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
fc00 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
fc20 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
fc40 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
fc60 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.#'
fc80 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
fca0 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
fcc0 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
fce0 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..............
fd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fe00 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 32 2f 65 6d 61 63 73 71 6c 2d 70 6b 67 2e 65 6c 00 00 00 00 emacsql-4.3.2/emacsql-pkg.el....
fe20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fe40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fe60 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
fe80 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 37 00 20 30 00 00 00 0000610.00000000000.014327..0...
fea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ff00 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...................
ff20 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...................
ff40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ff60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ff80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ffa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ffc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ffe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10000 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
10020 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
10040 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
10060 61 63 73 71 6c 22 20 22 34 2e 33 2e 32 22 20 22 48 69 67 68 2d 6c 65 76 65 6c 20 53 51 4c 20 64 acsql"."4.3.2"."High-level.SQL.d
10080 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.
100a0 31 22 29 29 20 3a 63 6f 6d 6d 69 74 20 22 33 65 30 31 35 61 62 39 39 65 30 36 31 66 33 39 36 37 1")).:commit."3e015ab99e061f3967
100c0 61 31 35 34 36 38 33 66 30 36 38 63 65 36 35 35 33 66 31 36 38 61 22 20 3a 61 75 74 68 6f 72 73 a154683f068ce6553f168a".:authors
100e0 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
10100 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
10120 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
10140 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").:
10160 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
10180 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").........................
101a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
101c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
101e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10200 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 32 2f 65 6d 61 63 73 71 6c 2d 6d 79 73 71 6c 2e 65 6c 00 00 emacsql-4.3.2/emacsql-mysql.el..
10220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10260 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
10280 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 37 00 20 30 00 00 00 0014176.00000000000.014727..0...
102a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
102c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
102e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10300 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...................
10320 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...................
10340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
103a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
103c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
103e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10400 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
10420 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
10440 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.
10460 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
10480 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
104a0 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
104c0 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
104e0 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
10500 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
10520 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..
10540 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
10560 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
10580 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
105a0 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.
105c0 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).
105e0 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
10600 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
10620 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
10640 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."-----
10660 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"
10680 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
106a0 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.")..(
106c0 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.
106e0 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....
10700 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
10720 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
10740 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
10760 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
10780 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
107a0 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
107c0 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.
107e0 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.
10800 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_
10820 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
10840 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
10860 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.
10880 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..
108a0 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
108c0 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
108e0 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
10900 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
10920 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
10940 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
10960 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
10980 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
109a0 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
109c0 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
109e0 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....
10a00 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.
10a20 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
10a40 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.
10a60 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
10a80 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
10aa0 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
10ac0 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
10ae0 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
10b00 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
10b20 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
10b40 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
10b60 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
10b80 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......
10ba0 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
10bc0 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....
10be0 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
10c00 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
10c20 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
10c40 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
10c60 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
10c80 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.
10ca0 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
10cc0 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
10ce0 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
10d00 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
10d20 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.
10d40 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
10d60 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
10d80 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
10da0 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
10dc0 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.
10de0 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
10e00 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
10e20 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
10e40 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
10e60 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.......
10e80 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
10ea0 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
10ec0 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
10ee0 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.
10f00 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
10f20 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
10f40 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")..
10f60 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
10f80 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
10fa0 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.:
10fc0 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
10fe0 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.
11000 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
11020 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")..........
11040 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")...
11060 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
11080 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
110a0 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
110c0 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
110e0 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
11100 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).
11120 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
11140 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
11160 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
11180 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
111a0 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
111c0 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
111e0 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
11200 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".
11220 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
11240 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
11260 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.(
11280 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)
112a0 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
112c0 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
112e0 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
11300 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
11320 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
11340 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.(
11360 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
11380 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
113a0 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.(
113c0 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).".")).........
113e0 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
11400 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
11420 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
11440 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)))...........
11460 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
11480 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...........
114a0 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
114c0 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.....................
114e0 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
11500 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
11520 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.......................
11540 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
11560 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))))....
11580 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
115a0 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)
115c0 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
115e0 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)).......
11600 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.............
11620 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
11640 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)
11660 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....
11680 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
116a0 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])...
116c0 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
116e0 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
11700 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
11720 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
11740 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.
11760 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).......(
11780 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
117a0 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
117c0 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
117e0 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
11800 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)))....
11820 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
11840 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.
11860 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
11880 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
118a0 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))..
118c0 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
118e0 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
11900 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
11920 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
11940 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
11960 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)).
11980 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
119a0 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-
119c0 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
119e0 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)).
11a00 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-
11a20 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
11a40 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))).
11a60 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))...
11a80 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")..
11aa0 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.":.")....
11ac0 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.....
11ae0 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
11b00 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))
11b20 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
11b40 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)....
11b60 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.
11b80 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
11ba0 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
11bc0 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
11be0 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.())..............
11c00 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).........
11c20 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))
11c40 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)..;
11c60 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...
11c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11e00 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 32 2f 65 6d 61 63 73 71 6c 2e 65 6c 00 00 00 00 00 00 00 00 emacsql-4.3.2/emacsql.el........
11e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11e60 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
11e80 30 30 33 34 37 36 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 35 36 35 00 20 30 00 00 00 0034760.00000000000.013565..0...
11ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11f00 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...................
11f20 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...................
11f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12000 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
12020 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
12040 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
12060 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
12080 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...;;.
120a0 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
120c0 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
120e0 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
12100 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
12120 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
12140 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.
12160 32 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 2.;;.Package-Requires:.((emacs."
12180 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
121a0 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:.
121c0 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
121e0 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...;;
12200 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
12220 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
12240 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...;;
12260 20 41 6e 79 20 72 65 61 64 61 62 6c 65 20 6c 69 73 70 20 76 61 6c 75 65 20 63 61 6e 20 62 65 20 .Any.readable.lisp.value.can.be.
12280 73 74 6f 72 65 64 20 61 73 20 61 20 76 61 6c 75 65 20 69 6e 20 45 6d 61 63 53 51 4c 2c 0a 3b 3b stored.as.a.value.in.EmacSQL,.;;
122a0 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 67 73 2c 20 73 79 6d .including.numbers,.strings,.sym
122c0 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 20 63 6c 6f 73 75 72 bols,.lists,.vectors,.and.closur
122e0 65 73 2e 0a 3b 3b 20 45 6d 61 63 53 51 4c 20 68 61 73 20 6e 6f 20 63 6f 6e 63 65 70 74 20 6f 66 es..;;.EmacSQL.has.no.concept.of
12300 20 54 45 58 54 20 76 61 6c 75 65 73 3b 20 69 74 27 73 20 61 6c 6c 20 6a 75 73 74 20 6c 69 73 70 .TEXT.values;.it's.all.just.lisp
12320 20 6f 62 6a 65 63 74 73 2e 0a 3b 3b 20 54 68 65 20 6c 69 73 70 20 6f 62 6a 65 63 74 20 60 6e 69 .objects..;;.The.lisp.object.`ni
12340 6c 27 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 31 3a 31 20 77 69 74 68 20 4e 55 4c 4c 20 69 6e 20 l'.corresponds.1:1.with.NULL.in.
12360 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a 0a 3b 3b 20 53 65 65 20 52 45 41 44 4d 45 2e 6d 64 20 the.database...;;.See.README.md.
12380 66 6f 72 20 6d 75 63 68 20 6d 6f 72 65 20 63 6f 6d 70 6c 65 74 65 20 64 6f 63 75 6d 65 6e 74 61 for.much.more.complete.documenta
123a0 74 69 6f 6e 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c tion...;;;.Code:..(require.'cl-l
123c0 69 62 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28 72 65 71 75 69 ib).(require.'cl-generic).(requi
123e0 72 65 20 27 65 69 65 69 6f 29 0a 0a 28 72 65 71 75 69 72 65 20 27 65 6d 61 63 73 71 6c 2d 63 6f re.'eieio)..(require.'emacsql-co
12400 6d 70 69 6c 65 72 29 0a 0a 28 64 65 66 67 72 6f 75 70 20 65 6d 61 63 73 71 6c 20 6e 69 6c 0a 20 mpiler)..(defgroup.emacsql.nil..
12420 20 22 54 68 65 20 45 6d 61 63 53 51 4c 20 53 51 4c 20 64 61 74 61 62 61 73 65 20 66 72 6f 6e 74 ."The.EmacSQL.SQL.database.front
12440 2d 65 6e 64 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 63 6f 6d 6d 29 0a 0a 28 64 65 66 63 6f 6e 73 -end."...:group.'comm)..(defcons
12460 74 20 65 6d 61 63 73 71 6c 2d 76 65 72 73 69 6f 6e 20 22 34 2e 33 2e 32 22 29 0a 0a 28 64 65 66 t.emacsql-version."4.3.2")..(def
12480 76 61 72 20 65 6d 61 63 73 71 6c 2d 67 6c 6f 62 61 6c 2d 74 69 6d 65 6f 75 74 20 33 30 0a 20 20 var.emacsql-global-timeout.30...
124a0 22 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 74 6f 20 77 61 "Maximum.number.of.seconds.to.wa
124c0 69 74 20 62 65 66 6f 72 65 20 62 61 69 6c 69 6e 67 20 6f 75 74 20 6f 6e 20 61 20 53 51 4c 20 63 it.before.bailing.out.on.a.SQL.c
124e0 6f 6d 6d 61 6e 64 2e 0a 49 66 20 6e 69 6c 2c 20 77 61 69 74 20 66 6f 72 65 76 65 72 2e 20 20 54 ommand..If.nil,.wait.forever...T
12500 68 69 73 20 69 73 20 75 73 65 64 20 62 79 20 74 68 65 20 60 6d 79 73 71 6c 27 2c 20 60 70 67 27 his.is.used.by.the.`mysql',.`pg'
12520 20 61 6e 64 20 60 70 73 71 6c 27 2e 20 20 49 74 0a 69 73 20 6e 6f 74 20 62 65 69 6e 67 20 75 73 .and.`psql'...It.is.not.being.us
12540 65 64 20 62 79 20 74 68 65 20 60 73 71 6c 69 74 65 2d 62 75 69 6c 74 69 6e 27 20 61 6e 64 20 60 ed.by.the.`sqlite-builtin'.and.`
12560 73 71 6c 69 74 65 2d 6d 6f 64 75 6c 65 27 20 62 61 63 6b 2d 65 6e 64 73 2c 0a 77 68 69 63 68 20 sqlite-module'.back-ends,.which.
12580 72 65 73 70 65 63 74 20 60 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 2d 62 75 73 79 2d 74 69 6d respect.`emacsql-sqlite-busy-tim
125a0 65 6f 75 74 27 20 69 6e 73 74 65 61 64 2e 22 29 0a 0a 3b 3b 3b 20 44 61 74 61 62 61 73 65 20 63 eout'.instead.")..;;;.Database.c
125c0 6f 6e 6e 65 63 74 69 6f 6e 0a 0a 28 64 65 66 63 6c 61 73 73 20 65 6d 61 63 73 71 6c 2d 63 6f 6e onnection..(defclass.emacsql-con
125e0 6e 65 63 74 69 6f 6e 20 28 29 0a 20 20 28 28 68 61 6e 64 6c 65 20 3a 69 6e 69 74 61 72 67 20 3a nection.()...((handle.:initarg.:
12600 68 61 6e 64 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e handle............:documentation
12620 20 22 49 6e 74 65 72 6e 61 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 72 2e 0a 54 ."Internal.connection.handler..T
12640 68 65 20 76 61 6c 75 65 20 69 73 20 61 20 72 65 63 6f 72 64 2d 6c 69 6b 65 20 6f 62 6a 65 63 74 he.value.is.a.record-like.object
12660 20 61 6e 64 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 61 63 63 65 73 73 65 64 0a 64 69 72 65 .and.should.not.be.accessed.dire
12680 63 74 6c 79 2e 20 20 44 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 63 6f 6e 63 72 65 74 65 ctly...Depending.on.the.concrete
126a0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 60 74 79 70 65 2d 6f 66 27 0a 6d 61 79 20 72 .implementation,.`type-of'.may.r
126c0 65 74 75 72 6e 20 60 70 72 6f 63 65 73 73 27 2c 20 60 75 73 65 72 2d 70 74 72 27 20 6f 72 20 60 eturn.`process',.`user-ptr'.or.`
126e0 73 71 6c 69 74 65 27 20 66 6f 72 20 74 68 69 73 20 76 61 6c 75 65 2e 22 29 0a 20 20 20 28 6c 6f sqlite'.for.this.value.")....(lo
12700 67 2d 62 75 66 66 65 72 20 3a 74 79 70 65 20 28 6f 72 20 6e 75 6c 6c 20 62 75 66 66 65 72 29 0a g-buffer.:type.(or.null.buffer).
12720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 61 72 67 20 3a 6c 6f 67 2d 62 75 66 ...............:initarg.:log-buf
12740 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 66 6f 72 6d 20 6e 69 6c fer................:initform.nil
12760 0a 20 20 20 20 20 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 ................:documentation."
12780 4f 75 74 70 75 74 20 6c 6f 67 20 28 64 65 62 75 67 29 2e 22 29 0a 20 20 20 28 66 69 6e 61 6c 69 Output.log.(debug).")....(finali
127a0 7a 65 72 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 4f 62 6a 65 63 74 20 72 65 74 75 72 zer.:documentation."Object.retur
127c0 6e 65 64 20 66 72 6f 6d 20 60 6d 61 6b 65 2d 66 69 6e 61 6c 69 7a 65 72 27 2e 22 29 0a 20 20 20 ned.from.`make-finalizer'.")....
127e0 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 20 20 20 (types.:allocation.:class.......
12800 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 20 20 3a 72 65 61 ....:initform.nil...........:rea
12820 64 65 72 20 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 64 6f 63 der.emacsql-types...........:doc
12840 75 6d 65 6e 74 61 74 69 6f 6e 20 22 4d 61 70 73 20 45 6d 61 63 53 51 4c 20 74 79 70 65 73 20 74 umentation."Maps.EmacSQL.types.t
12860 6f 20 53 51 4c 20 74 79 70 65 73 2e 22 29 29 0a 20 20 22 41 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 o.SQL.types."))..."A.connection.
12880 74 6f 20 61 20 53 51 4c 20 64 61 74 61 62 61 73 65 2e 22 0a 20 20 3a 61 62 73 74 72 61 63 74 20 to.a.SQL.database."...:abstract.
128a0 74 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 63 6c 6f 73 65 t)..(cl-defgeneric.emacsql-close
128c0 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 22 43 6c 6f 73 65 20 43 4f 4e 4e 45 43 54 49 4f .(connection)..."Close.CONNECTIO
128e0 4e 20 61 6e 64 20 66 72 65 65 20 61 6c 6c 20 72 65 73 6f 75 72 63 65 73 2e 22 29 0a 0a 28 63 6c N.and.free.all.resources.")..(cl
12900 2d 64 65 66 67 65 6e 65 72 69 63 20 65 6d 61 63 73 71 6c 2d 72 65 63 6f 6e 6e 65 63 74 20 28 63 -defgeneric.emacsql-reconnect.(c
12920 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 22 52 65 2d 65 73 74 61 62 6c 69 73 68 20 43 4f 4e 4e 45 onnection)..."Re-establish.CONNE
12940 43 54 49 4f 4e 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 70 61 72 61 6d 65 74 65 72 73 2e 22 CTION.with.the.same.parameters."
12960 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 6c 69 76 65 2d 70 20 )..(cl-defmethod.emacsql-live-p.
12980 28 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 ((connection.emacsql-connection)
129a0 29 0a 20 20 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 )..."Return.non-nil.if.CONNECTIO
129c0 4e 20 69 73 20 73 74 69 6c 6c 20 61 6c 69 76 65 20 61 6e 64 20 72 65 61 64 79 2e 22 0a 20 20 28 N.is.still.alive.and.ready."...(
129e0 61 6e 64 20 28 70 72 6f 63 65 73 73 2d 6c 69 76 65 2d 70 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 and.(process-live-p.(oref.connec
12a00 74 69 6f 6e 20 68 61 6e 64 6c 65 29 29 20 74 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 tion.handle)).t))..(cl-defgeneri
12a20 63 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 73 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 22 c.emacsql-types.(connection)..."
12a40 52 65 74 75 72 6e 20 61 6e 20 61 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 45 6d 61 63 53 51 4c 20 Return.an.alist.mapping.EmacSQL.
12a60 74 79 70 65 73 20 74 6f 20 64 61 74 61 62 61 73 65 20 74 79 70 65 73 2e 0a 54 68 69 73 20 77 69 types.to.database.types..This.wi
12a80 6c 6c 20 6d 61 73 6b 20 60 65 6d 61 63 73 71 6c 2d 74 79 70 65 2d 6d 61 70 27 20 64 75 72 69 6e ll.mask.`emacsql-type-map'.durin
12aa0 67 20 65 78 70 72 65 73 73 69 6f 6e 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 2e 0a 54 68 69 73 20 61 g.expression.compilation..This.a
12ac0 6c 69 73 74 20 73 68 6f 75 6c 64 20 68 61 76 65 20 66 6f 75 72 20 6b 65 79 20 73 79 6d 62 6f 6c list.should.have.four.key.symbol
12ae0 73 3a 20 69 6e 74 65 67 65 72 2c 20 66 6c 6f 61 74 2c 20 6f 62 6a 65 63 74 2c 0a 6e 69 6c 20 28 s:.integer,.float,.object,.nil.(
12b00 64 65 66 61 75 6c 74 20 74 79 70 65 29 2e 20 20 54 68 65 20 76 61 6c 75 65 73 20 61 72 65 20 73 default.type)...The.values.are.s
12b20 74 72 69 6e 67 73 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 0a 61 20 53 51 4c trings.to.be.inserted.into.a.SQL
12b40 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d .expression.")..(cl-defmethod.em
12b60 61 63 73 71 6c 2d 62 75 66 66 65 72 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 acsql-buffer.((connection.emacsq
12b80 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 22 47 65 74 20 70 72 6f 63 65 73 73 20 62 75 l-connection))..."Get.process.bu
12ba0 66 66 65 72 20 66 6f 72 20 43 4f 4e 4e 45 43 54 49 4f 4e 2e 22 0a 20 20 28 70 72 6f 63 65 73 73 ffer.for.CONNECTION."...(process
12bc0 2d 62 75 66 66 65 72 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 -buffer.(oref.connection.handle)
12be0 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 65 6e 61 62 6c 65 ))..(cl-defmethod.emacsql-enable
12c00 2d 64 65 62 75 67 67 69 6e 67 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d -debugging.((connection.emacsql-
12c20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 22 45 6e 61 62 6c 65 20 64 65 62 75 67 67 69 6e 67 connection))..."Enable.debugging
12c40 20 6f 6e 20 43 4f 4e 4e 45 43 54 49 4f 4e 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 62 75 66 66 .on.CONNECTION."...(unless.(buff
12c60 65 72 2d 6c 69 76 65 2d 70 20 28 6f 72 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6c 6f 67 2d 62 er-live-p.(oref.connection.log-b
12c80 75 66 66 65 72 29 29 0a 20 20 20 20 28 6f 73 65 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6c 6f 67 uffer)).....(oset.connection.log
12ca0 2d 62 75 66 66 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 -buffer.(generate-new-buffer.".*
12cc0 65 6d 61 63 73 71 6c 2d 6c 6f 67 2a 22 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 emacsql-log*"))))..(cl-defmethod
12ce0 20 65 6d 61 63 73 71 6c 2d 6c 6f 67 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 63 73 71 .emacsql-log.((connection.emacsq
12d00 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 22 4c 6f 67 20 4d 45 l-connection).message)..."Log.ME
12d20 53 53 41 47 45 20 69 6e 74 6f 20 43 4f 4e 4e 45 43 54 49 4f 4e 27 73 20 6c 6f 67 2e 0a 4d 45 53 SSAGE.into.CONNECTION's.log..MES
12d40 53 41 47 45 20 73 68 6f 75 6c 64 20 6e 6f 74 20 68 61 76 65 20 61 20 6e 65 77 6c 69 6e 65 20 6f SAGE.should.not.have.a.newline.o
12d60 6e 20 74 68 65 20 65 6e 64 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 75 66 66 65 72 20 28 6f 72 65 n.the.end."...(let.((buffer.(ore
12d80 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6c 6f 67 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 28 f.connection.log-buffer))).....(
12da0 77 68 65 6e 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 75 66 66 65 when.buffer.......(unless.(buffe
12dc0 72 2d 6c 69 76 65 2d 70 20 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 62 r-live-p.buffer).........(setq.b
12de0 75 66 66 65 72 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 uffer.(emacsql-enable-debugging.
12e00 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e connection))).......(with-curren
12e20 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 67 6f 74 6f 2d 63 68 t-buffer.buffer.........(goto-ch
12e40 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 69 6e 63 20 28 ar.(point-max)).........(princ.(
12e60 63 6f 6e 63 61 74 20 6d 65 73 73 61 67 65 20 22 5c 6e 22 29 20 62 75 66 66 65 72 29 29 29 29 29 concat.message."\n").buffer)))))
12e80 0a 0a 3b 3b 3b 20 53 65 6e 64 69 6e 67 20 61 6e 64 20 72 65 63 65 69 76 69 6e 67 0a 0a 28 63 6c ..;;;.Sending.and.receiving..(cl
12ea0 2d 64 65 66 67 65 6e 65 72 69 63 20 65 6d 61 63 73 71 6c 2d 73 65 6e 64 2d 6d 65 73 73 61 67 65 -defgeneric.emacsql-send-message
12ec0 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 73 73 61 67 65 29 0a 20 20 22 53 65 6e 64 20 4d 45 .(connection.message)..."Send.ME
12ee0 53 53 41 47 45 20 74 6f 20 43 4f 4e 4e 45 43 54 49 4f 4e 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d SSAGE.to.CONNECTION.")..(cl-defm
12f00 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 20 3a 62 65 66 6f ethod.emacsql-send-message.:befo
12f20 72 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 63 6f 6e 6e 65 63 re...((connection.emacsql-connec
12f40 74 69 6f 6e 29 20 6d 65 73 73 61 67 65 29 0a 20 20 28 65 6d 61 63 73 71 6c 2d 6c 6f 67 20 63 6f tion).message)...(emacsql-log.co
12f60 6e 6e 65 63 74 69 6f 6e 20 6d 65 73 73 61 67 65 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f nnection.message))..(cl-defmetho
12f80 64 20 65 6d 61 63 73 71 6c 2d 63 6c 65 61 72 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 6d 61 d.emacsql-clear.((connection.ema
12fa0 63 73 71 6c 2d 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 22 43 6c 65 61 72 20 74 68 65 20 63 csql-connection))..."Clear.the.c
12fc0 6f 6e 6e 65 63 74 69 6f 6e 20 62 75 66 66 65 72 20 66 6f 72 20 43 4f 4e 4e 45 43 54 49 4f 4e 2d onnection.buffer.for.CONNECTION-
12fe0 53 50 45 43 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 SPEC."...(let.((buffer.(emacsql-
13000 62 75 66 66 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 buffer.connection))).....(when.(
13020 61 6e 64 20 62 75 66 66 65 72 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 62 75 66 66 65 72 and.buffer.(buffer-live-p.buffer
13040 29 29 0a 20 20 20 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 )).......(with-current-buffer.bu
13060 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 29 29 29 29 0a ffer.........(erase-buffer))))).
13080 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 65 6d 61 63 73 71 6c 2d 77 61 69 74 69 6e 67 2d .(cl-defgeneric.emacsql-waiting-
130a0 70 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c p.(connection)..."Return.non-nil
130c0 20 69 66 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 69 73 20 72 65 61 64 79 20 66 6f 72 20 6d 6f 72 65 .if.CONNECTION.is.ready.for.more
130e0 20 69 6e 70 75 74 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 .input.")..(cl-defmethod.emacsql
13100 2d 77 61 69 74 20 28 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 -wait.((connection.emacsql-conne
13120 63 74 69 6f 6e 29 20 26 6f 70 74 69 6f 6e 61 6c 20 74 69 6d 65 6f 75 74 29 0a 20 20 22 42 6c 6f ction).&optional.timeout)..."Blo
13140 63 6b 20 75 6e 74 69 6c 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 69 73 20 77 61 69 74 69 6e 67 20 66 ck.until.CONNECTION.is.waiting.f
13160 6f 72 20 66 75 72 74 68 65 72 20 69 6e 70 75 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 72 65 61 or.further.input."...(let*.((rea
13180 6c 2d 74 69 6d 65 6f 75 74 20 28 6f 72 20 74 69 6d 65 6f 75 74 20 65 6d 61 63 73 71 6c 2d 67 6c l-timeout.(or.timeout.emacsql-gl
131a0 6f 62 61 6c 2d 74 69 6d 65 6f 75 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 6e 64 20 28 61 6e obal-timeout))..........(end.(an
131c0 64 20 72 65 61 6c 2d 74 69 6d 65 6f 75 74 20 28 2b 20 28 66 6c 6f 61 74 2d 74 69 6d 65 29 20 72 d.real-timeout.(+.(float-time).r
131e0 65 61 6c 2d 74 69 6d 65 6f 75 74 29 29 29 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 eal-timeout)))).....(while.(and.
13200 28 6f 72 20 28 6e 75 6c 6c 20 72 65 61 6c 2d 74 69 6d 65 6f 75 74 29 20 28 3c 20 28 66 6c 6f 61 (or.(null.real-timeout).(<.(floa
13220 74 2d 74 69 6d 65 29 20 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e t-time).end)).................(n
13240 6f 74 20 28 65 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 ot.(emacsql-waiting-p.connection
13260 29 29 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 ))).......(save-match-data......
13280 20 20 20 28 61 63 63 65 70 74 2d 70 72 6f 63 65 73 73 2d 6f 75 74 70 75 74 20 28 6f 72 65 66 20 ...(accept-process-output.(oref.
132a0 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 29 20 72 65 61 6c 2d 74 69 6d 65 6f 75 74 29 connection.handle).real-timeout)
132c0 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 6d 61 63 73 71 6c 2d 77 61 69 74 69 6e 67 2d )).....(unless.(emacsql-waiting-
132e0 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 28 73 69 67 6e 61 6c 20 27 65 6d 61 p.connection).......(signal.'ema
13300 63 73 71 6c 2d 74 69 6d 65 6f 75 74 20 28 6c 69 73 74 20 22 51 75 65 72 79 20 74 69 6d 65 64 20 csql-timeout.(list."Query.timed.
13320 6f 75 74 22 20 72 65 61 6c 2d 74 69 6d 65 6f 75 74 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 out".real-timeout)))))..(cl-defg
13340 65 6e 65 72 69 63 20 65 6d 61 63 73 71 6c 2d 70 61 72 73 65 20 28 63 6f 6e 6e 65 63 74 69 6f 6e eneric.emacsql-parse.(connection
13360 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 70 61 72 73 69 )..."Return.the.results.of.parsi
13380 6e 67 20 74 68 65 20 6c 61 74 65 73 74 20 6f 75 74 70 75 74 20 6f 72 20 73 69 67 6e 61 6c 20 61 ng.the.latest.output.or.signal.a
133a0 6e 20 65 72 72 6f 72 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 63 6f 6d 70 69 n.error.")..(defun.emacsql-compi
133c0 6c 65 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 20 le.(connection.sql.&rest.args)..
133e0 20 22 43 6f 6d 70 69 6c 65 20 73 2d 65 78 70 72 65 73 73 69 6f 6e 20 53 51 4c 20 66 6f 72 20 43 ."Compile.s-expression.SQL.for.C
13400 4f 4e 4e 45 43 54 49 4f 4e 20 69 6e 74 6f 20 61 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 6c 65 74 ONNECTION.into.a.string."...(let
13420 20 28 28 65 6d 61 63 73 71 6c 2d 74 79 70 65 2d 6d 61 70 20 28 6f 72 20 28 61 6e 64 20 63 6f 6e .((emacsql-type-map.(or.(and.con
13440 6e 65 63 74 69 6f 6e 20 28 65 6d 61 63 73 71 6c 2d 74 79 70 65 73 20 63 6f 6e 6e 65 63 74 69 6f nection.(emacsql-types.connectio
13460 6e 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 20 20 n)).............................
13480 20 20 65 6d 61 63 73 71 6c 2d 74 79 70 65 2d 6d 61 70 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 ..emacsql-type-map))).....(conca
134a0 74 20 28 61 70 70 6c 79 20 23 27 65 6d 61 63 73 71 6c 2d 66 6f 72 6d 61 74 20 28 65 6d 61 63 73 t.(apply.#'emacsql-format.(emacs
134c0 71 6c 2d 70 72 65 70 61 72 65 20 73 71 6c 29 20 61 72 67 73 29 20 22 3b 22 29 29 29 0a 0a 28 63 ql-prepare.sql).args).";")))..(c
134e0 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 65 6d 61 63 73 71 6c 20 28 63 6f 6e 6e 65 63 74 69 6f 6e l-defgeneric.emacsql.(connection
13500 20 73 71 6c 20 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 22 53 65 6e 64 20 53 51 4c 20 73 2d 65 .sql.&rest.args)..."Send.SQL.s-e
13520 78 70 72 65 73 73 69 6f 6e 20 74 6f 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 61 6e 64 20 72 65 74 75 xpression.to.CONNECTION.and.retu
13540 72 6e 20 74 68 65 20 72 65 73 75 6c 74 73 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 rn.the.results.")..(cl-defmethod
13560 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 6c 2d 63 6f .emacsql.((connection.emacsql-co
13580 6e 6e 65 63 74 69 6f 6e 29 20 73 71 6c 20 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 28 6c 65 74 nnection).sql.&rest.args)...(let
135a0 20 28 28 73 71 6c 2d 73 74 72 69 6e 67 20 28 61 70 70 6c 79 20 23 27 65 6d 61 63 73 71 6c 2d 63 .((sql-string.(apply.#'emacsql-c
135c0 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 20 20 ompile.connection.sql.args)))...
135e0 20 20 28 65 6d 61 63 73 71 6c 2d 63 6c 65 61 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 ..(emacsql-clear.connection)....
13600 20 28 65 6d 61 63 73 71 6c 2d 73 65 6e 64 2d 6d 65 73 73 61 67 65 20 63 6f 6e 6e 65 63 74 69 6f .(emacsql-send-message.connectio
13620 6e 20 73 71 6c 2d 73 74 72 69 6e 67 29 0a 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 77 61 69 74 20 n.sql-string).....(emacsql-wait.
13640 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 70 61 72 73 65 20 63 connection).....(emacsql-parse.c
13660 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 0a 0a 3b 3b 3b 20 48 65 6c 70 65 72 20 6d 69 78 69 6e 20 63 onnection)))..;;;.Helper.mixin.c
13680 6c 61 73 73 0a 0a 28 64 65 66 63 6c 61 73 73 20 65 6d 61 63 73 71 6c 2d 70 72 6f 74 6f 63 6f 6c lass..(defclass.emacsql-protocol
136a0 2d 6d 69 78 69 6e 20 28 29 20 28 29 0a 20 20 22 41 20 6d 69 78 69 6e 20 66 6f 72 20 62 61 63 6b -mixin.().()..."A.mixin.for.back
136c0 2d 65 6e 64 73 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 45 6d 61 63 53 51 4c 20 70 72 6f 74 -ends.following.the.EmacSQL.prot
136e0 6f 63 6f 6c 2e 0a 54 68 65 20 62 61 63 6b 2d 65 6e 64 20 70 72 6f 6d 70 74 20 6d 75 73 74 20 62 ocol..The.back-end.prompt.must.b
13700 65 20 61 20 73 69 6e 67 6c 65 20 5c 22 5d 5c 22 20 63 68 61 72 61 63 74 65 72 2e 20 20 54 68 69 e.a.single.\"]\".character...Thi
13720 73 20 70 72 6f 6d 70 74 0a 76 61 6c 75 65 20 77 61 73 20 63 68 6f 73 65 6e 20 62 65 63 61 75 73 s.prompt.value.was.chosen.becaus
13740 65 20 69 74 20 69 73 20 75 6e 72 65 61 64 61 62 6c 65 2e 20 20 4f 75 74 70 75 74 20 6d 75 73 74 e.it.is.unreadable...Output.must
13760 20 68 61 76 65 0a 65 78 61 63 74 6c 79 20 6f 6e 65 20 72 6f 77 20 70 65 72 20 6c 69 6e 65 2c 20 .have.exactly.one.row.per.line,.
13780 66 69 65 6c 64 73 20 73 65 70 61 72 61 74 65 64 20 62 79 20 77 68 69 74 65 73 70 61 63 65 2e 20 fields.separated.by.whitespace..
137a0 20 4e 55 4c 4c 0a 6d 75 73 74 20 64 69 73 70 6c 61 79 20 61 73 20 5c 22 6e 69 6c 5c 22 2e 22 0a .NULL.must.display.as.\"nil\".".
137c0 20 20 3a 61 62 73 74 72 61 63 74 20 74 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d ..:abstract.t)..(cl-defmethod.em
137e0 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 6f 6e 20 65 6d 61 acsql-waiting-p.((connection.ema
13800 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 52 65 74 75 72 6e 20 csql-protocol-mixin))..."Return.
13820 74 20 69 66 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 20 68 61 73 20 61 t.if.the.end.of.the.buffer.has.a
13840 20 70 72 6f 70 65 72 6c 79 2d 66 6f 72 6d 61 74 74 65 64 20 70 72 6f 6d 70 74 2e 0a 41 6c 73 6f .properly-formatted.prompt..Also
13860 20 72 65 74 75 72 6e 20 74 20 69 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 75 66 66 .return.t.if.the.connection.buff
13880 65 72 20 68 61 73 20 62 65 65 6e 20 6b 69 6c 6c 65 64 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 75 er.has.been.killed."...(let.((bu
138a0 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)
138c0 29 29 0a 20 20 20 20 28 6f 72 20 28 6e 6f 74 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 62 )).....(or.(not.(buffer-live-p.b
138e0 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 uffer)).........(with-current-bu
13900 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 28 ffer.buffer...........(and.(>=.(
13920 62 75 66 66 65 72 2d 73 69 7a 65 29 20 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 buffer-size).2)................(
13940 73 74 72 69 6e 67 3d 20 22 23 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 string=."#\n"...................
13960 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 2d 20 28 70 6f 69 6e ......(buffer-substring.(-.(poin
13980 74 2d 6d 61 78 29 20 32 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 29 29 0a 0a 28 63 t-max).2).(point-max))))))))..(c
139a0 6c 2d 64 65 66 6d 65 74 68 6f 64 20 65 6d 61 63 73 71 6c 2d 68 61 6e 64 6c 65 20 28 28 5f 20 65 l-defmethod.emacsql-handle.((_.e
139c0 6d 61 63 73 71 6c 2d 70 72 6f 74 6f 63 6f 6c 2d 6d 69 78 69 6e 29 20 63 6f 64 65 20 6d 65 73 73 macsql-protocol-mixin).code.mess
139e0 61 67 65 29 0a 20 20 22 53 69 67 6e 61 6c 20 61 20 73 70 65 63 69 66 69 63 20 63 6f 6e 64 69 74 age)..."Signal.a.specific.condit
13a00 69 6f 6e 20 66 6f 72 20 43 4f 44 45 20 66 72 6f 6d 20 43 4f 4e 4e 45 43 54 49 4f 4e 2e 0a 53 75 ion.for.CODE.from.CONNECTION..Su
13a20 62 63 6c 61 73 73 65 73 20 73 68 6f 75 6c 64 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 6d 65 bclasses.should.override.this.me
13a40 74 68 6f 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20 6d 6f 72 65 0a 73 70 thod.in.order.to.provide.more.sp
13a60 65 63 69 66 69 63 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 22 0a 20 20 28 73 69 67 ecific.error.conditions."...(sig
13a80 6e 61 6c 20 27 65 6d 61 63 73 71 6c 2d 65 72 72 6f 72 20 28 6c 69 73 74 20 6d 65 73 73 61 67 65 nal.'emacsql-error.(list.message
13aa0 20 63 6f 64 65 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 .code)))..(cl-defmethod.emacsql-
13ac0 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 2d 70 72 6f 74 6f parse.((connection.emacsql-proto
13ae0 63 6f 6c 2d 6d 69 78 69 6e 29 29 0a 20 20 22 50 61 72 73 65 20 77 65 6c 6c 2d 66 6f 72 6d 65 64 col-mixin))..."Parse.well-formed
13b00 20 6f 75 74 70 75 74 20 69 6e 74 6f 20 61 6e 20 73 2d 65 78 70 72 65 73 73 69 6f 6e 2e 22 0a 20 .output.into.an.s-expression."..
13b20 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 62 .(with-current-buffer.(emacsql-b
13b40 75 66 66 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 uffer.connection).....(goto-char
13b60 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 73 74 61 6e 64 61 .(point-min)).....(let*.((standa
13b80 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 0a 20 20 20 20 20 rd-input.(current-buffer))......
13ba0 20 20 20 20 20 20 28 76 61 6c 75 65 20 28 72 65 61 64 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 ......(value.(read))).......(if.
13bc0 28 65 71 20 76 61 6c 75 65 20 27 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 (eq.value.'error)...........(ema
13be0 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 72 csql-handle.connection.(read).(r
13c00 65 61 64 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 76 61 6c 75 65 0a 20 20 20 20 20 ead)).........(prog1.value......
13c20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 28 72 65 61 64 29 20 27 73 75 63 63 65 73 73 .....(unless.(eq.(read).'success
13c40 29 0a 20 20 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 ).............(emacsql-handle.co
13c60 6e 6e 65 63 74 69 6f 6e 20 28 72 65 61 64 29 20 28 72 65 61 64 29 29 29 29 29 29 29 29 0a 0a 3b nnection.(read).(read))))))))..;
13c80 3b 3b 20 41 75 74 6f 6d 61 74 69 63 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c 65 61 6e 75 70 0a ;;.Automatic.connection.cleanup.
13ca0 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 72 65 67 69 73 74 65 72 20 28 63 6f 6e 6e 65 63 .(defun.emacsql-register.(connec
13cc0 74 69 6f 6e 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 66 6f 72 tion)..."Register.CONNECTION.for
13ce0 20 61 75 74 6f 6d 61 74 69 63 20 63 6c 65 61 6e 75 70 20 61 6e 64 20 72 65 74 75 72 6e 20 43 4f .automatic.cleanup.and.return.CO
13d00 4e 4e 45 43 54 49 4f 4e 2e 22 0a 20 20 28 70 72 6f 67 31 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 NNECTION."...(prog1.connection..
13d20 20 20 20 28 6f 73 65 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 69 6e 61 6c 69 7a 65 72 0a 20 20 ...(oset.connection.finalizer...
13d40 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 66 69 6e 61 6c 69 7a 65 72 20 28 6c 61 6d 62 64 61 20 ........(make-finalizer.(lambda.
13d60 28 29 20 28 65 6d 61 63 73 71 6c 2d 63 6c 6f 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 29 29 ().(emacsql-close.connection))))
13d80 29 29 0a 0a 3b 3b 3b 20 55 73 65 66 75 6c 20 6d 61 63 72 6f 73 0a 0a 28 64 65 66 6d 61 63 72 6f ))..;;;.Useful.macros..(defmacro
13da0 20 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 63 6f 6e 6e 65 63 .emacsql-with-connection.(connec
13dc0 74 69 6f 6e 2d 73 70 65 63 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 4f 70 65 6e 20 61 6e tion-spec.&rest.body)..."Open.an
13de0 20 45 6d 61 63 53 51 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 65 76 61 6c 75 61 74 65 20 42 4f .EmacSQL.connection,.evaluate.BO
13e00 44 59 2c 20 61 6e 64 20 63 6c 6f 73 65 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 43 4f DY,.and.close.the.connection..CO
13e20 4e 4e 45 43 54 49 4f 4e 2d 53 50 45 43 20 65 73 74 61 62 6c 69 73 68 65 73 20 61 20 73 69 6e 67 NNECTION-SPEC.establishes.a.sing
13e40 6c 65 20 62 69 6e 64 69 6e 67 2e 0a 0a 20 20 28 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 63 6f 6e le.binding.....(emacsql-with-con
13e60 6e 65 63 74 69 6f 6e 20 28 64 62 20 28 65 6d 61 63 73 71 6c 2d 73 71 6c 69 74 65 20 5c 22 63 6f nection.(db.(emacsql-sqlite.\"co
13e80 6d 70 61 6e 79 2e 64 62 5c 22 29 29 0a 20 20 20 20 28 65 6d 61 63 73 71 6c 20 64 62 20 5b 3a 63 mpany.db\")).....(emacsql.db.[:c
13ea0 72 65 61 74 65 2d 74 61 62 6c 65 20 66 6f 6f 20 5b 78 5d 5d 29 0a 20 20 20 20 28 65 6d 61 63 73 reate-table.foo.[x]]).....(emacs
13ec0 71 6c 20 64 62 20 5b 3a 69 6e 73 65 72 74 20 3a 69 6e 74 6f 20 66 6f 6f 20 3a 76 61 6c 75 65 73 ql.db.[:insert.:into.foo.:values
13ee0 20 28 5b 31 5d 20 5b 32 5d 20 5b 33 5d 29 5d 29 0a 20 20 20 20 28 65 6d 61 63 73 71 6c 20 64 62 .([1].[2].[3])]).....(emacsql.db
13f00 20 5b 3a 73 65 6c 65 63 74 20 2a 20 3a 66 72 6f 6d 20 66 6f 6f 5d 29 29 22 0a 20 20 28 64 65 63 .[:select.*.:from.foo]))"...(dec
13f20 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 60 28 6c 65 74 20 28 28 2c 28 63 61 72 lare.(indent.1))...`(let.((,(car
13f40 20 63 6f 6e 6e 65 63 74 69 6f 6e 2d 73 70 65 63 29 20 2c 28 63 61 64 72 20 63 6f 6e 6e 65 63 74 .connection-spec).,(cadr.connect
13f60 69 6f 6e 2d 73 70 65 63 29 29 29 0a 20 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 ion-spec)))......(unwind-protect
13f80 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 2c 40 62 6f 64 79 29 0a 20 20 20 20 20 20 20 ..........(progn.,@body)........
13fa0 28 65 6d 61 63 73 71 6c 2d 63 6c 6f 73 65 20 2c 28 63 61 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 2d (emacsql-close.,(car.connection-
13fc0 73 70 65 63 29 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6d 61 63 73 71 6c 2d 2d 74 72 61 6e spec)))))..(defvar.emacsql--tran
13fe0 73 61 63 74 69 6f 6e 2d 6c 65 76 65 6c 20 30 0a 20 20 22 4b 65 65 70 73 20 74 72 61 63 6b 20 6f saction-level.0..."Keeps.track.o
14000 66 20 6e 65 73 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 69 6e 20 60 65 6d 61 63 73 71 f.nested.transactions.in.`emacsq
14020 6c 2d 77 69 74 68 2d 74 72 61 6e 73 61 63 74 69 6f 6e 27 2e 22 29 0a 0a 28 64 65 66 6d 61 63 72 l-with-transaction'.")..(defmacr
14040 6f 20 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d 74 72 61 6e 73 61 63 74 69 6f 6e 20 28 63 6f 6e 6e o.emacsql-with-transaction.(conn
14060 65 63 74 69 6f 6e 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 45 76 61 6c 75 61 74 65 20 42 ection.&rest.body)..."Evaluate.B
14080 4f 44 59 20 69 6e 73 69 64 65 20 61 20 73 69 6e 67 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c ODY.inside.a.single.transaction,
140a0 20 69 73 73 75 69 6e 67 20 61 20 72 6f 6c 6c 62 61 63 6b 20 6f 6e 20 65 72 72 6f 72 2e 0a 54 68 .issuing.a.rollback.on.error..Th
140c0 69 73 20 6d 61 63 72 6f 20 63 61 6e 20 62 65 20 6e 65 73 74 65 64 20 69 6e 64 65 66 69 6e 69 74 is.macro.can.be.nested.indefinit
140e0 65 6c 79 2c 20 77 72 61 70 70 69 6e 67 20 65 76 65 72 79 74 68 69 6e 67 20 69 6e 20 61 0a 73 69 ely,.wrapping.everything.in.a.si
14100 6e 67 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61 74 20 74 68 65 20 6c 6f 77 65 73 74 20 6c ngle.transaction.at.the.lowest.l
14120 65 76 65 6c 2e 0a 0a 57 61 72 6e 69 6e 67 3a 20 42 4f 44 59 20 73 68 6f 75 6c 64 20 2a 6e 6f 74 evel...Warning:.BODY.should.*not
14140 2a 20 68 61 76 65 20 61 6e 79 20 73 69 64 65 20 65 66 66 65 63 74 73 20 62 65 73 69 64 65 73 20 *.have.any.side.effects.besides.
14160 6d 61 6b 69 6e 67 0a 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 62 making.changes.to.the.database.b
14180 65 68 69 6e 64 20 43 4f 4e 4e 45 43 54 49 4f 4e 2e 20 20 42 6f 64 79 20 6d 61 79 20 62 65 20 65 ehind.CONNECTION...Body.may.be.e
141a0 76 61 6c 75 61 74 65 64 0a 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 62 65 66 6f 72 65 20 74 valuated.multiple.times.before.t
141c0 68 65 20 63 68 61 6e 67 65 73 20 61 72 65 20 63 6f 6d 6d 69 74 74 65 64 2e 22 0a 20 20 28 64 65 he.changes.are.committed."...(de
141e0 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 60 28 6c 65 74 20 28 28 65 6d 61 63 clare.(indent.1))...`(let.((emac
14200 73 71 6c 2d 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 2c 63 6f 6e 6e 65 63 74 69 6f 6e 29 0a 20 20 20 sql--connection.,connection)....
14220 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 2d 63 6f 6d 70 6c 65 74 65 64 20 6e 69 6c 29 0a 20 ......(emacsql--completed.nil)..
14240 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 2d 74 72 61 6e 73 61 63 74 69 6f 6e 2d 6c 65 ........(emacsql--transaction-le
14260 76 65 6c 20 28 31 2b 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 vel.(1+.emacsql--transaction-lev
14280 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 2d 72 65 73 75 6c 74 29 29 el))..........(emacsql--result))
142a0 0a 20 20 20 20 20 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 ......(unwind-protect..........(
142c0 77 68 69 6c 65 20 28 6e 6f 74 20 65 6d 61 63 73 71 6c 2d 2d 63 6f 6d 70 6c 65 74 65 64 29 0a 20 while.(not.emacsql--completed)..
142e0 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 6e 69 6c 0a 20 20 ..........(condition-case.nil...
14300 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 .............(progn.............
14320 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 61 6e 73 61 63 .....(when.(=.1.emacsql--transac
14340 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 20 20 20 20 28 tion-level)....................(
14360 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 62 65 emacsql.emacsql--connection.[:be
14380 67 69 6e 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 gin]))..................(let.((r
143a0 65 73 75 6c 74 20 28 70 72 6f 67 6e 20 2c 40 62 6f 64 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 esult.(progn.,@body)))..........
143c0 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 72 65 73 75 6c 74 20 ..........(setq.emacsql--result.
143e0 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e result)....................(when
14400 20 28 3d 20 31 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 .(=.1.emacsql--transaction-level
14420 29 0a 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 6c 20 )......................(emacsql.
14440 65 6d 61 63 73 71 6c 2d 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 5b 3a 63 6f 6d 6d 69 74 5d 29 29 0a emacsql--connection.[:commit])).
14460 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 6d 61 63 73 71 6c ...................(setq.emacsql
14480 2d 2d 63 6f 6d 70 6c 65 74 65 64 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 --completed.t)))..............(e
144a0 6d 61 63 73 71 6c 2d 6c 6f 63 6b 65 64 20 28 65 6d 61 63 73 71 6c 20 65 6d 61 63 73 71 6c 2d 2d macsql-locked.(emacsql.emacsql--
144c0 63 6f 6e 6e 65 63 74 69 6f 6e 20 5b 3a 72 6f 6c 6c 62 61 63 6b 5d 29 0a 20 20 20 20 20 20 20 20 connection.[:rollback]).........
144e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 6c 65 65 70 2d 66 6f 72 20 .....................(sleep-for.
14500 30 2e 30 35 29 29 29 29 0a 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 3d 20 31 20 0.05))))........(when.(and.(=.1.
14520 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 29 0a 20 20 20 20 emacsql--transaction-level).....
14540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 65 6d 61 63 73 71 6c 2d 2d 63 6f 6d 70 ..............(not.emacsql--comp
14560 6c 65 74 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 71 6c 20 65 6d 61 63 73 71 leted))..........(emacsql.emacsq
14580 6c 2d 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 5b 3a 72 6f 6c 6c 62 61 63 6b 5d 29 29 29 0a 20 20 20 l--connection.[:rollback])))....
145a0 20 20 65 6d 61 63 73 71 6c 2d 2d 72 65 73 75 6c 74 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 ..emacsql--result))..(defmacro.e
145c0 6d 61 63 73 71 6c 2d 74 68 72 65 61 64 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 26 72 65 73 74 20 macsql-thread.(connection.&rest.
145e0 73 74 61 74 65 6d 65 6e 74 73 29 0a 20 20 22 54 68 72 65 61 64 20 43 4f 4e 4e 45 43 54 49 4f 4e statements)..."Thread.CONNECTION
14600 20 74 68 72 6f 75 67 68 20 53 54 41 54 45 4d 45 4e 54 53 2e 0a 41 20 73 74 61 74 65 6d 65 6e 74 .through.STATEMENTS..A.statement
14620 20 63 61 6e 20 62 65 20 61 20 6c 69 73 74 2c 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 73 74 61 .can.be.a.list,.containing.a.sta
14640 74 65 6d 65 6e 74 20 77 69 74 68 20 69 74 73 20 61 72 67 75 6d 65 6e 74 73 2e 22 0a 20 20 28 64 tement.with.its.arguments."...(d
14660 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 60 28 6c 65 74 20 28 28 65 6d 61 eclare.(indent.1))...`(let.((ema
14680 63 73 71 6c 2d 2d 63 6f 6e 6e 20 2c 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 28 65 csql--conn.,connection))......(e
146a0 6d 61 63 73 71 6c 2d 77 69 74 68 2d 74 72 61 6e 73 61 63 74 69 6f 6e 20 65 6d 61 63 73 71 6c 2d macsql-with-transaction.emacsql-
146c0 2d 63 6f 6e 6e 0a 20 20 20 20 20 20 20 2c 40 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 73 74 61 74 -conn........,@(cl-loop.for.stat
146e0 65 6d 65 6e 74 20 69 6e 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 ement.in.statements.............
14700 20 20 20 20 20 20 77 68 65 6e 20 28 76 65 63 74 6f 72 70 20 73 74 61 74 65 6d 65 6e 74 29 0a 20 ......when.(vectorp.statement)..
14720 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 28 6c 69 73 74 20 27 .................collect.(list.'
14740 65 6d 61 63 73 71 6c 20 27 65 6d 61 63 73 71 6c 2d 2d 63 6f 6e 6e 20 73 74 61 74 65 6d 65 6e 74 emacsql.'emacsql--conn.statement
14760 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 )...................else........
14780 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 ...........collect.(append.(list
147a0 20 27 65 6d 61 63 73 71 6c 20 27 65 6d 61 63 73 71 6c 2d 2d 63 6f 6e 6e 29 20 73 74 61 74 65 6d .'emacsql.'emacsql--conn).statem
147c0 65 6e 74 29 29 29 29 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 ent)))))..(defmacro.emacsql-with
147e0 2d 62 69 6e 64 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 71 6c 2d 61 6e 64 2d 61 72 67 73 20 26 -bind.(connection.sql-and-args.&
14800 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 46 6f 72 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f rest.body)..."For.each.result.ro
14820 77 20 62 69 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73 20 66 6f 72 20 65 61 63 68 w.bind.the.column.names.for.each
14840 20 72 65 74 75 72 6e 65 64 20 72 6f 77 2e 0a 52 65 74 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c .returned.row..Returns.the.resul
14860 74 20 6f 66 20 74 68 65 20 6c 61 73 74 20 65 76 61 6c 75 61 74 65 64 20 42 4f 44 59 2e 0a 0a 41 t.of.the.last.evaluated.BODY...A
14880 6c 6c 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73 20 6d 75 73 74 20 62 65 20 70 72 6f 76 69 64 65 64 ll.column.names.must.be.provided
148a0 20 69 6e 20 74 68 65 20 71 75 65 72 79 20 28 24 20 61 6e 64 20 2a 20 61 72 65 20 6e 6f 74 0a 61 .in.the.query.($.and.*.are.not.a
148c0 6c 6c 6f 77 65 64 29 2e 20 20 48 69 6e 74 3a 20 61 6c 6c 20 6f 66 20 74 68 65 20 62 6f 75 6e 64 llowed)...Hint:.all.of.the.bound
148e0 20 69 64 65 6e 74 69 66 69 65 72 73 20 6d 75 73 74 20 62 65 20 6b 6e 6f 77 6e 20 61 74 0a 63 6f .identifiers.must.be.known.at.co
14900 6d 70 69 6c 65 20 74 69 6d 65 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e 20 74 68 65 mpile.time...For.example,.in.the
14920 20 65 78 70 72 65 73 73 69 6f 6e 20 62 65 6c 6f 77 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 0a .expression.below.the.variables.
14940 60 6e 61 6d 65 27 20 61 6e 64 20 60 70 68 6f 6e 65 27 20 77 69 6c 6c 20 62 65 20 62 6f 75 6e 64 `name'.and.`phone'.will.be.bound
14960 20 66 6f 72 20 74 68 65 20 62 6f 64 79 2e 0a 0a 20 20 28 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d .for.the.body.....(emacsql-with-
14980 62 69 6e 64 20 64 62 20 5b 3a 73 65 6c 65 63 74 20 5b 6e 61 6d 65 20 70 68 6f 6e 65 5d 20 3a 66 bind.db.[:select.[name.phone].:f
149a0 72 6f 6d 20 70 65 6f 70 6c 65 5d 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 5c 22 46 6f 75 6e 64 rom.people].....(message.\"Found
149c0 20 25 73 20 77 69 74 68 20 25 73 5c 22 20 6e 61 6d 65 20 70 68 6f 6e 65 29 29 0a 0a 20 20 28 65 .%s.with.%s\".name.phone))....(e
149e0 6d 61 63 73 71 6c 2d 77 69 74 68 2d 62 69 6e 64 20 64 62 20 28 5b 3a 73 65 6c 65 63 74 20 5b 6e macsql-with-bind.db.([:select.[n
14a00 61 6d 65 20 70 68 6f 6e 65 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ame.phone]......................
14a20 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 20 20 20 20 20 20 20 .....:from.people...............
14a40 20 20 20 20 20 20 20 20 20 20 20 20 3a 77 68 65 72 65 20 28 3d 20 6e 61 6d 65 20 24 31 29 5d 20 ............:where.(=.name.$1)].
14a60 6d 79 2d 6e 61 6d 65 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 5c 22 46 6f 75 6e 64 20 25 73 my-name).....(message.\"Found.%s
14a80 20 77 69 74 68 20 25 73 5c 22 20 6e 61 6d 65 20 70 68 6f 6e 65 29 29 0a 0a 45 61 63 68 20 63 6f .with.%s\".name.phone))..Each.co
14aa0 6c 75 6d 6e 20 6d 75 73 74 20 62 65 20 61 20 70 6c 61 69 6e 20 73 79 6d 62 6f 6c 2c 20 6e 6f 20 lumn.must.be.a.plain.symbol,.no.
14ac0 65 78 70 72 65 73 73 69 6f 6e 73 20 61 6c 6c 6f 77 65 64 20 68 65 72 65 2e 22 0a 20 20 28 64 65 expressions.allowed.here."...(de
14ae0 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 32 29 29 0a 20 20 28 6c 65 74 20 28 28 73 71 6c 20 28 clare.(indent.2))...(let.((sql.(
14b00 69 66 20 28 76 65 63 74 6f 72 70 20 73 71 6c 2d 61 6e 64 2d 61 72 67 73 29 20 73 71 6c 2d 61 6e if.(vectorp.sql-and-args).sql-an
14b20 64 2d 61 72 67 73 20 28 63 61 72 20 73 71 6c 2d 61 6e 64 2d 61 72 67 73 29 29 29 0a 20 20 20 20 d-args.(car.sql-and-args))).....
14b40 20 20 20 20 28 61 72 67 73 20 28 61 6e 64 20 28 6e 6f 74 20 28 76 65 63 74 6f 72 70 20 73 71 6c ....(args.(and.(not.(vectorp.sql
14b60 2d 61 6e 64 2d 61 72 67 73 29 29 20 28 63 64 72 20 73 71 6c 2d 61 6e 64 2d 61 72 67 73 29 29 29 -and-args)).(cdr.sql-and-args)))
14b80 29 0a 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 65 71 20 3a 73 65 6c 65 63 74 20 28 65 6c ).....(cl-assert.(eq.:select.(el
14ba0 74 20 73 71 6c 20 30 29 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 76 61 72 73 20 28 65 6c 74 20 t.sql.0))).....(let.((vars.(elt.
14bc0 73 71 6c 20 31 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 76 61 72 73 20 27 2a sql.1))).......(when.(eq.vars.'*
14be0 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 4d 75 73 74 20 65 78 70 6c 69 63 69 74 6c ).........(error."Must.explicitl
14c00 79 20 6c 69 73 74 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 60 65 6d 61 63 73 71 6c 2d 77 69 74 68 2d y.list.columns.in.`emacsql-with-
14c20 62 69 6e 64 27 22 29 29 0a 20 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 63 6c 2d 65 76 bind'")).......(cl-assert.(cl-ev
14c40 65 72 79 20 23 27 73 79 6d 62 6f 6c 70 20 76 61 72 73 29 29 0a 20 20 20 20 20 20 60 28 6c 65 74 ery.#'symbolp.vars)).......`(let
14c60 20 28 28 65 6d 61 63 73 71 6c 2d 2d 72 65 73 75 6c 74 73 20 28 65 6d 61 63 73 71 6c 20 2c 63 6f .((emacsql--results.(emacsql.,co
14c80 6e 6e 65 63 74 69 6f 6e 20 2c 73 71 6c 20 2c 40 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 nnection.,sql.,@args))..........
14ca0 20 20 20 20 28 65 6d 61 63 73 71 6c 2d 2d 66 69 6e 61 6c 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 ....(emacsql--final.nil)).......
14cc0 20 20 20 28 64 6f 6c 69 73 74 20 28 65 6d 61 63 73 71 6c 2d 2d 72 65 73 75 6c 74 20 65 6d 61 63 ...(dolist.(emacsql--result.emac
14ce0 73 71 6c 2d 2d 72 65 73 75 6c 74 73 20 65 6d 61 63 73 71 6c 2d 2d 66 69 6e 61 6c 29 0a 20 20 20 sql--results.emacsql--final)....
14d00 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 6d 61 63 73 71 6c 2d 2d 66 69 6e 61 6c 0a 20 20 20 ........(setq.emacsql--final....
14d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d ..............(cl-destructuring-
14d40 62 69 6e 64 20 2c 28 63 6c 2d 63 6f 65 72 63 65 20 76 61 72 73 20 27 6c 69 73 74 29 20 65 6d 61 bind.,(cl-coerce.vars.'list).ema
14d60 63 73 71 6c 2d 2d 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 csql--result....................
14d80 2c 40 62 6f 64 79 29 29 29 29 29 29 29 0a 0a 3b 3b 3b 20 55 73 65 72 20 69 6e 74 65 72 61 63 74 ,@body)))))))..;;;.User.interact
14da0 69 6f 6e 20 66 75 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 73 ion.functions..(defvar.emacsql-s
14dc0 68 6f 77 2d 62 75 66 66 65 72 2d 6e 61 6d 65 20 22 2a 65 6d 61 63 73 71 6c 2d 73 68 6f 77 2a 22 how-buffer-name."*emacsql-show*"
14de0 0a 20 20 22 4e 61 6d 65 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 20 66 6f 72 20 64 69 73 70 6c ..."Name.of.the.buffer.for.displ
14e00 61 79 69 6e 67 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20 53 51 4c 2e 22 29 0a 0a 28 64 65 66 75 aying.intermediate.SQL.")..(defu
14e20 6e 20 65 6d 61 63 73 71 6c 2d 2d 69 6e 64 65 6e 74 20 28 29 0a 20 20 22 49 6e 64 65 6e 74 20 61 n.emacsql--indent.()..."Indent.a
14e40 6e 64 20 77 72 61 70 20 74 68 65 20 53 51 4c 20 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 20 74 68 nd.wrap.the.SQL.expression.in.th
14e60 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 22 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 e.current.buffer."...(save-excur
14e80 73 69 6f 6e 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 sion.....(goto-char.(point-min))
14ea0 0a 20 20 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c .....(let.((case-fold-search.nil
14ec0 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 2d )).......(while.(search-forward-
14ee0 72 65 67 65 78 70 20 22 20 5b 41 2d 5a 5d 2b 22 20 6e 69 6c 20 3a 6e 6f 2d 65 72 72 6f 72 29 0a regexp.".[A-Z]+".nil.:no-error).
14f00 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 28 63 75 72 72 65 6e 74 2d 63 6f 6c 75 6d 6e ........(when.(>.(current-column
14f20 29 20 28 2a 20 66 69 6c 6c 2d 63 6f 6c 75 6d 6e 20 30 2e 38 29 29 0a 20 20 20 20 20 20 20 20 20 ).(*.fill-column.0.8))..........
14f40 20 28 62 61 63 6b 77 61 72 64 2d 77 6f 72 64 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 .(backward-word)...........(inse
14f60 72 74 20 22 5c 6e 20 20 20 20 22 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 rt."\n...."))))))..(defun.emacsq
14f80 6c 2d 73 68 6f 77 2d 73 71 6c 20 28 73 74 72 69 6e 67 29 0a 20 20 22 46 6f 6e 74 69 66 79 20 61 l-show-sql.(string)..."Fontify.a
14fa0 6e 64 20 64 69 73 70 6c 61 79 20 74 68 65 20 53 51 4c 20 65 78 70 72 65 73 73 69 6f 6e 20 69 6e nd.display.the.SQL.expression.in
14fc0 20 53 54 52 49 4e 47 2e 22 0a 20 20 28 6c 65 74 20 28 28 66 6f 6e 74 69 66 69 65 64 0a 20 20 20 .STRING."...(let.((fontified....
14fe0 20 20 20 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 ......(with-temp-buffer.........
15000 20 20 20 28 69 6e 73 65 72 74 20 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 ...(insert.string)............(s
15020 71 6c 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 6e 6f 2d 77 61 72 ql-mode)............(with-no-war
15040 6e 69 6e 67 73 20 3b 3b 20 61 75 74 6f 6c 6f 61 64 65 64 20 62 79 20 70 72 65 76 69 6f 75 73 20 nings.;;.autoloaded.by.previous.
15060 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 71 6c 2d 68 69 67 68 6c 69 67 68 74 line..............(sql-highlight
15080 2d 73 71 6c 69 74 65 2d 6b 65 79 77 6f 72 64 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 -sqlite-keywords))............(f
150a0 6f 6e 74 2d 6c 6f 63 6b 2d 65 6e 73 75 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 ont-lock-ensure)............(ema
150c0 63 73 71 6c 2d 2d 69 6e 64 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 csql--indent)............(buffer
150e0 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 -string)))).....(with-current-bu
15100 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 65 6d 61 63 73 71 6c 2d ffer.(get-buffer-create.emacsql-
15120 73 68 6f 77 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 28 69 66 20 28 3c 20 28 show-buffer-name).......(if.(<.(
15140 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 29 20 66 69 6c 6c 2d 63 6f 6c 75 6d 6e 29 0a 20 20 20 20 length.string).fill-column).....
15160 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 22 20 66 6f 6e 74 69 66 69 65 64 29 0a 20 ......(message."%s".fontified)..
15180 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 20 6e .......(let.((buffer-read-only.n
151a0 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 il))...........(erase-buffer)...
151c0 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 66 6f 6e 74 69 66 69 65 64 29 29 0a 20 20 20 20 ........(insert.fontified)).....
151e0 20 20 20 20 28 73 70 65 63 69 61 6c 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 28 76 69 73 75 ....(special-mode).........(visu
15200 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 28 70 6f 70 2d 74 6f 2d 62 75 al-line-mode).........(pop-to-bu
15220 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 29 0a 0a 28 64 65 66 ffer.(current-buffer))))))..(def
15240 75 6e 20 65 6d 61 63 73 71 6c 2d 66 6c 61 74 74 65 6e 2d 73 71 6c 20 28 73 71 6c 29 0a 20 20 22 un.emacsql-flatten-sql.(sql)..."
15260 43 6f 6e 76 65 72 74 20 61 20 73 2d 65 78 70 72 65 73 73 69 6f 6e 20 53 51 4c 20 69 6e 74 6f 20 Convert.a.s-expression.SQL.into.
15280 61 20 66 6c 61 74 20 73 74 72 69 6e 67 20 66 6f 72 20 64 69 73 70 6c 61 79 2e 22 0a 20 20 28 63 a.flat.string.for.display."...(c
152a0 6c 2d 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 l-destructuring-bind.(string...v
152c0 61 72 73 29 20 28 65 6d 61 63 73 71 6c 2d 70 72 65 70 61 72 65 20 73 71 6c 29 0a 20 20 20 20 28 ars).(emacsql-prepare.sql).....(
152e0 63 6f 6e 63 61 74 0a 20 20 20 20 20 28 61 70 70 6c 79 20 23 27 66 6f 72 6d 61 74 20 73 74 72 69 concat......(apply.#'format.stri
15300 6e 67 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 69 20 69 6e 20 28 6d 61 70 63 61 72 20 23 27 63 ng.(cl-loop.for.i.in.(mapcar.#'c
15320 61 72 20 76 61 72 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 ar.vars)........................
15340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 69 6e 74 65 72 6e 20 28 66 ..............collect.(intern.(f
15360 6f 72 6d 61 74 20 22 24 25 64 22 20 28 31 2b 20 69 29 29 29 29 29 0a 20 20 20 20 20 22 3b 22 29 ormat."$%d".(1+.i)))))......";")
15380 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 ))..;;;###autoload.(defun.emacsq
153a0 6c 2d 73 68 6f 77 2d 6c 61 73 74 2d 73 71 6c 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 72 65 66 69 l-show-last-sql.(&optional.prefi
153c0 78 29 0a 20 20 22 44 69 73 70 6c 61 79 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 6f x)..."Display.the.compiled.SQL.o
153e0 66 20 74 68 65 20 73 2d 65 78 70 72 65 73 73 69 6f 6e 20 53 51 4c 20 65 78 70 72 65 73 73 69 6f f.the.s-expression.SQL.expressio
15400 6e 20 62 65 66 6f 72 65 20 70 6f 69 6e 74 2e 0a 41 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e n.before.point..A.prefix.argumen
15420 74 20 63 61 75 73 65 73 20 74 68 65 20 53 51 4c 20 74 6f 20 62 65 20 70 72 69 6e 74 65 64 20 69 t.causes.the.SQL.to.be.printed.i
15440 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 22 0a 20 20 28 69 6e 74 65 nto.the.current.buffer."...(inte
15460 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 6c 65 74 20 28 28 73 65 78 70 20 28 69 66 20 28 ractive."P")...(let.((sexp.(if.(
15480 66 62 6f 75 6e 64 70 20 27 65 6c 69 73 70 2d 2d 70 72 65 63 65 64 69 6e 67 2d 73 65 78 70 29 0a fboundp.'elisp--preceding-sexp).
154a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 69 73 70 2d 2d 70 72 65 63 65 64 ..................(elisp--preced
154c0 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 28 77 69 74 68 2d ing-sexp).................(with-
154e0 6e 6f 2d 77 61 72 6e 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 no-warnings...................(p
15500 72 65 63 65 64 69 6e 67 2d 73 65 78 70 29 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 65 6d 61 63 receding-sexp))))).....(if.(emac
15520 73 71 6c 2d 73 71 6c 2d 70 20 73 65 78 70 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 sql-sql-p.sexp).........(let.((s
15540 71 6c 20 28 65 6d 61 63 73 71 6c 2d 66 6c 61 74 74 65 6e 2d 73 71 6c 20 73 65 78 70 29 29 29 0a ql.(emacsql-flatten-sql.sexp))).
15560 20 20 20 20 20 20 20 20 20 20 28 69 66 20 70 72 65 66 69 78 0a 20 20 20 20 20 20 20 20 20 20 20 ..........(if.prefix............
15580 20 20 20 28 69 6e 73 65 72 74 20 73 71 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6d 61 ...(insert.sql).............(ema
155a0 63 73 71 6c 2d 73 68 6f 77 2d 73 71 6c 20 73 71 6c 29 29 29 0a 20 20 20 20 20 20 28 75 73 65 72 csql-show-sql.sql))).......(user
155c0 2d 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20 53 51 4c 3a 20 25 53 22 20 73 65 78 70 29 29 29 -error."Invalid.SQL:.%S".sexp)))
155e0 29 0a 0a 3b 3b 3b 20 46 69 78 20 45 6d 61 63 73 27 20 62 72 6f 6b 65 6e 20 76 65 63 74 6f 72 20 )..;;;.Fix.Emacs'.broken.vector.
15600 69 6e 64 65 6e 74 61 74 69 6f 6e 0a 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 2d 69 6e 73 indentation..(defun.emacsql--ins
15620 69 64 65 2d 76 65 63 74 6f 72 2d 70 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 ide-vector-p.()..."Return.non-ni
15640 6c 20 69 66 20 70 6f 69 6e 74 20 69 73 20 69 6e 73 69 64 65 20 61 20 76 65 63 74 6f 72 20 65 78 l.if.point.is.inside.a.vector.ex
15660 70 72 65 73 73 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 74 61 72 74 20 28 70 6f 69 6e 74 pression."...(let.((start.(point
15680 29 29 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 62 ))).....(save-excursion.......(b
156a0 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 64 65 66 75 6e 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 eginning-of-defun).......(let.((
156c0 63 6f 6e 74 61 69 6e 69 6e 67 2d 73 65 78 70 20 28 65 6c 74 20 28 70 61 72 73 65 2d 70 61 72 74 containing-sexp.(elt.(parse-part
156e0 69 61 6c 2d 73 65 78 70 20 28 70 6f 69 6e 74 29 20 73 74 61 72 74 29 20 31 29 29 29 0a 20 20 20 ial-sexp.(point).start).1)))....
15700 20 20 20 20 20 28 61 6e 64 20 63 6f 6e 74 61 69 6e 69 6e 67 2d 73 65 78 70 0a 20 20 20 20 20 20 .....(and.containing-sexp.......
15720 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 63 6f 6e 74 61 69 6e .......(progn.(goto-char.contain
15740 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 20 20 20 28 6c ing-sexp).....................(l
15760 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 5b 22 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 ooking-at."\\[")))))))..(defun.e
15780 6d 61 63 73 71 6c 2d 2d 63 61 6c 63 75 6c 61 74 65 2d 76 65 63 74 6f 72 2d 69 6e 64 65 6e 74 20 macsql--calculate-vector-indent.
157a0 28 66 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 70 61 72 73 65 2d 73 74 61 72 74 29 0a 20 20 22 44 6f (fn.&optional.parse-start)..."Do
157c0 6e 27 74 20 69 6e 64 65 6e 74 20 76 65 63 74 6f 72 73 20 69 6e 20 60 65 6d 61 63 73 2d 6c 69 73 n't.indent.vectors.in.`emacs-lis
157e0 70 2d 6d 6f 64 65 27 20 6c 69 6b 65 20 6c 69 73 74 73 2e 22 0a 20 20 28 69 66 20 28 73 61 76 65 p-mode'.like.lists."...(if.(save
15800 2d 65 78 63 75 72 73 69 6f 6e 20 28 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 6c 69 6e 65 29 20 28 -excursion.(beginning-of-line).(
15820 65 6d 61 63 73 71 6c 2d 2d 69 6e 73 69 64 65 2d 76 65 63 74 6f 72 2d 70 29 29 0a 20 20 20 20 20 emacsql--inside-vector-p))......
15840 20 28 6c 65 74 20 28 28 6c 69 73 70 2d 69 6e 64 65 6e 74 2d 6f 66 66 73 65 74 20 31 29 29 0a 20 .(let.((lisp-indent-offset.1))..
15860 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 6e 20 70 61 72 73 65 2d 73 74 61 72 74 29 29 .......(funcall.fn.parse-start))
15880 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 6e 20 70 61 72 73 65 2d 73 74 61 72 74 29 29 29 0a .....(funcall.fn.parse-start))).
158a0 0a 28 64 65 66 75 6e 20 65 6d 61 63 73 71 6c 2d 66 69 78 2d 76 65 63 74 6f 72 2d 69 6e 64 65 6e .(defun.emacsql-fix-vector-inden
158c0 74 61 74 69 6f 6e 20 28 29 0a 20 20 22 57 68 65 6e 20 63 61 6c 6c 65 64 2c 20 61 64 76 69 73 65 tation.()..."When.called,.advise
158e0 20 60 63 61 6c 63 75 6c 61 74 65 2d 6c 69 73 70 2d 69 6e 64 65 6e 74 27 20 74 6f 20 73 74 6f 70 .`calculate-lisp-indent'.to.stop
15900 20 69 6e 64 65 6e 74 69 6e 67 20 76 65 63 74 6f 72 73 2e 0a 4f 6e 63 65 20 61 63 74 69 76 61 74 .indenting.vectors..Once.activat
15920 65 64 2c 20 76 65 63 74 6f 72 20 63 6f 6e 74 65 6e 74 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 69 6e ed,.vector.contents.no.longer.in
15940 64 65 6e 74 20 6c 69 6b 65 20 6c 69 73 74 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 dent.like.lists."...(interactive
15960 29 0a 20 20 28 61 64 76 69 63 65 2d 61 64 64 20 27 63 61 6c 63 75 6c 61 74 65 2d 6c 69 73 70 2d )...(advice-add.'calculate-lisp-
15980 69 6e 64 65 6e 74 20 3a 61 72 6f 75 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 65 indent.:around...............#'e
159a0 6d 61 63 73 71 6c 2d 2d 63 61 6c 63 75 6c 61 74 65 2d 76 65 63 74 6f 72 2d 69 6e 64 65 6e 74 29 macsql--calculate-vector-indent)
159c0 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 6d 61 63 73 71 6c 29 0a 0a 3b 3b 3b 20 65 6d 61 63 73 )..(provide.'emacsql)..;;;.emacs
159e0 71 6c 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 00 00 00 ql.el.ends.here.................
15a00 65 6d 61 63 73 71 6c 2d 34 2e 33 2e 32 2f 65 6d 61 63 73 71 6c 2d 70 73 71 6c 2e 65 6c 00 00 00 emacsql-4.3.2/emacsql-psql.el...
15a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a60 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
15a80 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 37 00 20 30 00 00 00 0013355.00000000000.014537..0...
15aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b00 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...................
15b20 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...................
15b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c00 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.
15c20 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
15c40 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.-*-..;;.
15c60 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
15c80 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.
15ca0 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.
15cc0 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
15ce0 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
15d00 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.
15d20 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
15d40 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:..;;
15d60 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
15d80 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
15da0 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
15dc0 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
15de0 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
15e00 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
15e20 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
15e40 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"...
15e60 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
15e80 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
15ea0 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
15ec0 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
15ee0 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
15f00 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
15f20 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
15f40 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.--.
15f60 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
15f80 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
15fa0 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
15fc0 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
15fe0 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._........
16000 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............
16020 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
16040 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").......
16060 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.(
16080 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)))))
160a0 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
160c0 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")...................
160e0 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
16100 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
16120 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-
16140 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
16160 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.
16180 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
161a0 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
161c0 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
161e0 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
16200 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.
16220 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
16240 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.
16260 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
16280 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
162a0 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.....
162c0 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.
162e0 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
16300 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
16320 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
16340 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.
16360 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
16380 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
163a0 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
163c0 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.
163e0 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)).
16400 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
16420 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
16440 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
16460 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
16480 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
164a0 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
164c0 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
164e0 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
16500 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
16520 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
16540 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")....................
16560 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")...
16580 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
165a0 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."
165c0 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
165e0 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.")..
16600 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.&
16620 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
16640 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
16660 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.
16680 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
166a0 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......
166c0 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
166e0 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......
16700 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
16720 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....
16740 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.
16760 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.(
16780 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
167a0 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
167c0 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
167e0 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)...........
16800 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
16820 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)."."
16840 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
16860 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.............
16880 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.(
168a0 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)))
168c0 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
168e0 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.
16900 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 ................................
16920 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...........
16940 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
16960 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
16980 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)............
169a0 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.(
169c0 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
169e0 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
16a00 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).....
16a20 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
16a40 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
16a60 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
16a80 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)............
16aa0 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"...........
16ac0 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"...........
16ae0 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"...
16b00 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.'.'"...........
16b20 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.
16b40 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
16b60 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;"
16b80 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.......(
16ba0 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).......(
16bc0 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..............
16be0 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
16c00 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)]).......
16c20 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))))
16c40 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.((
16c60 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
16c80 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
16ca0 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
16cc0 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
16ce0 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"))
16d00 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
16d20 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
16d40 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
16d60 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))
16d80 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
16da0 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
16dc0 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
16de0 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
16e00 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))...(
16e20 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
16e40 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
16e60 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
16e80 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
16ea0 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
16ec0 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...................
16ee0 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 .............................(-.
16f00 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)..................
16f20 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
16f40 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
16f60 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.
16f80 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
16fa0 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
16fc0 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
16fe0 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
17000 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-
17020 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
17040 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)).....
17060 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
17080 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
170a0 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
170c0 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
170e0 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
17100 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
17120 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
17140 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
17160 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
17180 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
171a0 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
171c0 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."]").......
171e0 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
17200 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
17220 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
17240 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
17260 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.
17280 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.
172a0 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.'
172c0 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.
172e0 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....................
17300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
173a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
173c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
173e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
174a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
174c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
174e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
175a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
175c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
175e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
176a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
176c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
176e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
177a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
177c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
177e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
178a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
178c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
178e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
179a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
179c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
179e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 ................................