On Tue, Mar 10, 2020 at 06:42:18PM +0100, Stefan Sperling wrote:
> On Tue, Mar 10, 2020 at 01:21:34PM -0400, Richard Hipp wrote:
> > Set a breakpoint on the sqlite3VdbeExec() function that fires when the
> > statement that is crashing is first executed.  (You can determine that
> > it is the correct statement by looking at the value of p->zSql.)  Then
> > do:
> > 
> >      set p->db->flags = p->db->flags | ((0x0600000)<<32)
> > 
> > That will turn on bytecode listing and tracing, and might provide
> > further clues.  Please record and send in the trace.
> 
> I will look into this. Thanks!

Does this help?

$ egdb --args svn up                                                <
GNU gdb (GDB) 7.12.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc64-unknown-openbsd6.6".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from svn...done.
(gdb) br sqlite3.c:83210 if p->zSql && strncmp(p->zSql, "INSERT OR REPLACE 
INTO", 22) == 0
No source file named sqlite3.c.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (sqlite3.c:83210 if p->zSql && strncmp(p->zSql, "INSERT OR REPLACE 
INTO", 22) == 0) pending.
(gdb) run
Starting program: /usr/local/bin/svn up
Updating '.':

Breakpoint 1, sqlite3Step (p=0xd69cb26608) at sqlite3.c:83210
83210       rc = sqlite3VdbeExec(p);
(gdb) set p->db->flags = p->db->flags | (((unsigned long long)0x0600000)<<32)
(gdb) p /x p->db->flags
$1 = 0x600000e004a0e0
(gdb) c
Continuing.
SQL: [INSERT OR REPLACE INTO nodes (   wc_id, local_relpath, op_depth, 
parent_relpath, repos_id, repos_path,   revision, presence, depth, kind, 
changed_revision, changed_date,   changed_author, checksum, properties, 
translated_size, last_mod_time,   dav_cache, symlink_target, file_external, 
moved_to, moved_here,   inherited_props) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, 
?8, ?9, ?10, ?11, ?12, ?13, ?14,         ?15, ?16, ?17, ?18, ?19, ?20, ?21, 
?22, ?23) ]
VDBE Program Listing:
   0 Init             0  140    0               00 Start at 140
   1 OpenWrite        0   16    0 23            00 root=16 iDb=0; NODES
   2 OpenWrite        1   29    0 k(4,,,,)      00 root=29 iDb=0; I_NODES_MOVED
   3 OpenWrite        2   27    0 k(5,,,,,)     00 root=27 iDb=0; I_NODES_PARENT
   4 OpenWrite        3   17    0 k(3,,,)       00 root=17 iDb=0; 
sqlite_autoindex_NODES_1
   5 Variable         1    2    0 ?1            00 r[2]=parameter(1,?1)
   6 Variable         2    3    0 ?2            00 r[3]=parameter(2,?2)
   7 Variable         3    4    0 ?3            00 r[4]=parameter(3,?3)
   8 Variable         4    5    0 ?4            00 r[5]=parameter(4,?4)
   9 Variable         5    6    0 ?5            00 r[6]=parameter(5,?5)
  10 Variable         6    7    0 ?6            00 r[7]=parameter(6,?6)
  11 Variable         7    8    0 ?7            00 r[8]=parameter(7,?7)
  12 Variable         8    9    0 ?8            00 r[9]=parameter(8,?8)
  13 Variable        22   10    0 ?22           00 r[10]=parameter(22,?22)
  14 Variable        21   11    0 ?21           00 r[11]=parameter(21,?21)
  15 Variable        10   12    0 ?10           00 r[12]=parameter(10,?10)
  16 Variable        15   13    0 ?15           00 r[13]=parameter(15,?15)
  17 Variable         9   14    0 ?9            00 r[14]=parameter(9,?9)
  18 Variable        14   15    0 ?14           00 r[15]=parameter(14,?14)
  19 Variable        19   16    0 ?19           00 r[16]=parameter(19,?19)
  20 Variable        11   17    0 ?11           00 r[17]=parameter(11,?11)
  21 Variable        12   18    0 ?12           00 r[18]=parameter(12,?12)
  22 Variable        13   19    0 ?13           00 r[19]=parameter(13,?13)
  23 Variable        16   20    0 ?16           00 r[20]=parameter(16,?16)
  24 Variable        17   21    0 ?17           00 r[21]=parameter(17,?17)
  25 Variable        18   22    0 ?18           00 r[22]=parameter(18,?18)
  26 Variable        20   23    0 ?20           00 r[23]=parameter(20,?20)
  27 Variable        23   24    0 ?23           00 r[24]=parameter(23,?23)
  28 NewRowid         0    1    0               00 r[1]=rowid
  29 HaltIfNull    1299    2    2 NODES.wc_id   01 if r[2]=null halt
  30 HaltIfNull    1299    2    3 NODES.local_relpath 01 if r[3]=null halt
  31 HaltIfNull    1299    2    4 NODES.op_depth 01 if r[4]=null halt
  32 HaltIfNull    1299    2    9 NODES.presence 01 if r[9]=null halt
  33 HaltIfNull    1299    2   12 NODES.kind    01 if r[12]=null halt
  34 Integer          0   42    0               00 r[42]=0; trigger count
  35 Affinity         2   22    0 DBDBDBDBDBBABBBDDBDDAD 00 affinity(r[2..23])
  36 Noop             0    0    0               00 uniqueness check for 
I_NODES_MOVED
  37 SCopy            2   26    0               00 r[26]=r[2]; wc_id
  38 SCopy           11   27    0               00 r[27]=r[11]; moved_to
  39 SCopy            4   28    0               00 r[28]=r[4]; op_depth
  40 IntCopy          1   29    0               00 r[29]=r[1]; rowid
  41 MakeRecord      26    4   25               00 r[25]=mkrec(r[26..29]); for 
I_NODES_MOVED
  42 ReleaseReg      26    4    0               00 release r[26..29] mask 0
  43 NoConflict       1   66   26 3             00 key=r[26..28]
  44 IdxRowid         1   43    0               00 r[43]=rowid
  45 NotExists        0   62   43 1             00 intkey=r[43]
  46 Copy            43   44    0               00 r[44]=r[43]
  47 Column           0   13   58               00 r[58]=NODES.checksum
  48 Column           0    0   68               00 r[68]=NODES.wc_id
  49 Column           0    3   69               00 r[69]=NODES.parent_relpath
  50 Column           0    1   70               00 r[70]=NODES.local_relpath
  51 Column           0    2   71               00 r[71]=NODES.op_depth
  52 Rowid            0   72    0               00 r[72]=rowid
  53 ReleaseReg      68    5    0               00 release r[68..72] mask 0
  54 IdxDelete        2   68    5               00 key=r[68..72]
  55 Column           0    1   69               00 r[69]=NODES.local_relpath
  56 Column           0    2   70               00 r[70]=NODES.op_depth
  57 ReleaseReg      68    3    0               00 release r[68..70] mask 0
  58 IdxDelete        3   68    3               00 key=r[68..70]
  59 Delete           0    0    0 NODES         00
  60 Delete           1    0    0               00
  61 Program         44   62   73 program       00 Call: 
nodes_delete_trigger.replace
  62 AddImm          42    1    0               00 r[42]=r[42]+1
  63 Goto             0   66    0               00 bypass recheck
  64 NoConflict       1   94   26 0             00 key=r[26]
  65 Halt          2067    2    0 NODES.wc_id, NODES.moved_to, NODES.op_depth 02
  66 ReleaseReg      43    1    0               00 release r[43] mask 0
  67 Noop             0    0    0               00 uniqueness check for 
I_NODES_PARENT
  68 SCopy            2   31    0               00 r[31]=r[2]; wc_id
  69 SCopy            5   32    0               00 r[32]=r[5]; parent_relpath
  70 SCopy            3   33    0               00 r[33]=r[3]; local_relpath
  71 SCopy            4   34    0               00 r[34]=r[4]; op_depth
  72 IntCopy          1   35    0               00 r[35]=r[1]; rowid
  73 MakeRecord      31    5   30               00 r[30]=mkrec(r[31..35]); for 
I_NODES_PARENT
  74 ReleaseReg      31    5    0               00 release r[31..35] mask 0
  75 NoConflict       2   96   31 4             00 key=r[31..34]
  76 IdxRowid         2   43    0               00 r[43]=rowid
  77 NotExists        0   92   43 1             00 intkey=r[43]
  78 Copy            43   74    0               00 r[74]=r[43]
  79 Column           0   13   88               00 r[88]=NODES.checksum
  80 Column           0    0   98               00 r[98]=NODES.wc_id
  81 Column           0    9   99               00 r[99]=NODES.moved_to
  82 Column           0    2  100               00 r[100]=NODES.op_depth
  83 Rowid            0  101    0               00 r[101]=rowid
  84 ReleaseReg      98    4    0               00 release r[98..101] mask 0
  85 IdxDelete        1   98    4               00 key=r[98..101]
  86 Column           0    1   99               00 r[99]=NODES.local_relpath
  87 ReleaseReg      98    3    0               00 release r[98..100] mask 0
  88 IdxDelete        3   98    3               00 key=r[98..100]
  89 Delete           0    0    0 NODES         00
  90 Delete           2    0    0               00
  91 Program         74   92  102 program       00 Call: 
nodes_delete_trigger.replace
  92 AddImm          42    1    0               00 r[42]=r[42]+1
  93 Goto             0   96    0               00 bypass recheck
  94 NoConflict       2  127   31 0             00 key=r[31]
  95 Halt          2067    2    0 NODES.wc_id, NODES.parent_relpath, 
NODES.local_relpath, NODES.op_depth 02
  96 ReleaseReg      43    1    0               00 release r[43] mask 0
  97 Noop             0    0    0               00 uniqueness check for 
sqlite_autoindex_NODES_1
  98 SCopy            2   37    0               00 r[37]=r[2]; wc_id
  99 SCopy            3   38    0               00 r[38]=r[3]; local_relpath
 100 SCopy            4   39    0               00 r[39]=r[4]; op_depth
 101 IntCopy          1   40    0               00 r[40]=r[1]; rowid
 102 MakeRecord      37    4   36               00 r[36]=mkrec(r[37..40]); for 
sqlite_autoindex_NODES_1
 103 ReleaseReg      37    4    0               00 release r[37..40] mask 0
 104 NoConflict       3  129   37 3             00 key=r[37..39]
 105 IdxRowid         3   43    0               00 r[43]=rowid
 106 NotExists        0  125   43 1             00 intkey=r[43]
 107 Copy            43  103    0               00 r[103]=r[43]
 108 Column           0   13  117               00 r[117]=NODES.checksum
 109 Column           0    0  127               00 r[127]=NODES.wc_id
 110 Column           0    9  128               00 r[128]=NODES.moved_to
 111 Column           0    2  129               00 r[129]=NODES.op_depth
 112 Rowid            0  130    0               00 r[130]=rowid
 113 ReleaseReg     127    4    0               00 release r[127..130] mask 0
 114 IdxDelete        1  127    4               00 key=r[127..130]
 115 Column           0    0  131               00 r[131]=NODES.wc_id
 116 Column           0    3  132               00 r[132]=NODES.parent_relpath
 117 Column           0    1  133               00 r[133]=NODES.local_relpath
 118 Column           0    2  134               00 r[134]=NODES.op_depth
 119 Rowid            0  135    0               00 r[135]=rowid
 120 ReleaseReg     131    5    0               00 release r[131..135] mask 0
 121 IdxDelete        2  131    5               00 key=r[131..135]
 122 Delete           0    0    0 NODES         00
 123 Delete           3    0    0               00
 124 Program        103  125  136 program       00 Call: 
nodes_delete_trigger.replace
 125 AddImm          42    1    0               00 r[42]=r[42]+1
 126 Goto             0  129    0               00 bypass recheck
 127 NoConflict       3  133   37 0             00 key=r[37]
 128 Halt          1555    2    0 NODES.wc_id, NODES.local_relpath, 
NODES.op_depth 02
 129 ReleaseReg      43    1    0               00 release r[43] mask 0
 130 IfNot           42  133    0               00
 131 NotExists        0   64    1               00 intkey=r[1]
 132 Halt          2579    2    0 NODES.rowid   02
 133 MakeRecord       2   23   41               00 r[41]=mkrec(r[2..24])
 134 IdxInsert        1   25   26 4             00 key=r[25]
 135 IdxInsert        2   30   31 5             00 key=r[30]
 136 IdxInsert        3   36   37 3             00 key=r[36]
 137 Insert           0   41    1 NODES         29 intkey=r[1] data=r[41]
 138 Program        -23  139  137 program       00 Call: 
nodes_insert_trigger.replace
 139 Halt             0    0    0               00
 140 Transaction      0    1   30 0             01 usesStmtJournal=1
 141 TableLock        0   16    1 NODES         00 iDb=0 root=16 write=1
 142 TableLock        0    7    1 PRISTINE      00 iDb=0 root=7 write=1
 143 Goto             0    1    0               00
VDBE Trace:
   0 Init             0  140    0               00 Start at 140
 140 Transaction      0    1   30 0             01 usesStmtJournal=1
 141 TableLock        0   16    1 NODES         00 iDb=0 root=16 write=1
 142 TableLock        0    7    1 PRISTINE      00 iDb=0 root=7 write=1
 143 Goto             0    1    0               00
   1 OpenWrite        0   16    0 23            00 root=16 iDb=0; NODES
   2 OpenWrite        1   29    0 k(4,,,,)      00 root=29 iDb=0; I_NODES_MOVED
   3 OpenWrite        2   27    0 k(5,,,,,)     00 root=27 iDb=0; I_NODES_PARENT
   4 OpenWrite        3   17    0 k(3,,,)       00 root=17 iDb=0; 
sqlite_autoindex_NODES_1
   5 Variable         1    2    0 ?1            00 r[2]=parameter(1,?1)
R[2] =  i:1
   6 Variable         2    3    0 ?2            00 r[3]=parameter(2,?2)
R[3] =   t11[file_io/os2](8)
   7 Variable         3    4    0 ?3            00 r[4]=parameter(3,?3)
R[4] =  i:0
   8 Variable         4    5    0 ?4            00 r[5]=parameter(4,?4)
R[5] =   t7[file_io](8)
   9 Variable         5    6    0 ?5            00 r[6]=parameter(5,?5)
R[6] =  i:1
  10 Variable         6    7    0 ?6            00 r[7]=parameter(6,?6)
R[7] =   t25[apr/apr/trunk/file_io/os2](8)
  11 Variable         7    8    0 ?7            00 r[8]=parameter(7,?7)
R[8] =  i:1875080
  12 Variable         8    9    0 ?8            00 r[9]=parameter(8,?8)
R[9] =   t6[normal](8)
  13 Variable        22   10    0 ?22           00 r[10]=parameter(22,?22)
R[10] =  NULL
  14 Variable        21   11    0 ?21           00 r[11]=parameter(21,?21)
R[11] =  NULL
  15 Variable        10   12    0 ?10           00 r[12]=parameter(10,?10)
R[12] =   t3[dir](8)
  16 Variable        15   13    0 ?15           00 r[13]=parameter(15,?15)
R[13] =  tx[2873766E3A69676E6F7265203235204D616B6566696C650A2A|(svn:ignore 25 
Makefile.*]
  17 Variable         9   14    0 ?9            00 r[14]=parameter(9,?9)
R[14] =   t8[infinity](8)
  18 Variable        14   15    0 ?14           00 r[15]=parameter(14,?14)
R[15] =  NULL
  19 Variable        19   16    0 ?19           00 r[16]=parameter(19,?19)
R[16] =  NULL
  20 Variable        11   17    0 ?11           00 r[17]=parameter(11,?11)
R[17] =  i:1866019
  21 Variable        12   18    0 ?12           00 r[18]=parameter(12,?12)
R[18] =  i:1566976038342098
  22 Variable        13   19    0 ?13           00 r[19]=parameter(13,?13)
R[19] =   t6[jorton](8)
  23 Variable        16   20    0 ?16           00 r[20]=parameter(16,?16)
R[20] =  NULL
  24 Variable        17   21    0 ?17           00 r[21]=parameter(17,?17)
R[21] =  NULL
  25 Variable        18   22    0 ?18           00 r[22]=parameter(18,?18)
R[22] =  NULL
  26 Variable        20   23    0 ?20           00 r[23]=parameter(20,?20)
R[23] =  NULL
  27 Variable        23   24    0 ?23           00 r[24]=parameter(23,?23)
R[24] =  NULL
  28 NewRowid         0    1    0               00 r[1]=rowid
R[1] =  i:867
  29 HaltIfNull    1299    2    2 NODES.wc_id   01 if r[2]=null halt
R[2] =  i:1
  30 HaltIfNull    1299    2    3 NODES.local_relpath 01 if r[3]=null halt
R[3] =   t11[file_io/os2](8)
  31 HaltIfNull    1299    2    4 NODES.op_depth 01 if r[4]=null halt
R[4] =  i:0
  32 HaltIfNull    1299    2    9 NODES.presence 01 if r[9]=null halt
R[9] =   t6[normal](8)
  33 HaltIfNull    1299    2   12 NODES.kind    01 if r[12]=null halt
R[12] =   t3[dir](8)
  34 Integer          0   42    0               00 r[42]=0; trigger count
R[42] =  i:0
  35 Affinity         2   22    0 DBDBDBDBDBBABBBDDBDDAD 00 affinity(r[2..23])
R[2] =  i:1
R[3] =   t11[file_io/os2](8)
R[4] =  i:0
R[5] =   t7[file_io](8)
R[6] =  i:1
R[7] =   t25[apr/apr/trunk/file_io/os2](8)
R[8] =  i:1875080
R[9] =   t6[normal](8)
R[10] =  NULL
R[11] =  NULL
R[12] =   t3[dir](8)
R[13] =  tx[2873766E3A69676E6F7265203235204D616B6566696C650A2A|(svn:ignore 25 
Makefile.*]
R[14] =   t8[infinity](8)
R[15] =  NULL
R[16] =  NULL
R[17] =  i:1866019
R[18] =  i:1566976038342098
R[19] =   t6[jorton](8)
R[20] =  NULL
R[21] =  NULL
R[22] =  NULL
R[23] =  NULL
  36 Noop             0    0    0               00 uniqueness check for 
I_NODES_MOVED
  37 SCopy            2   26    0               00 r[26]=r[2]; wc_id
R[26] =  i:1 <== R[2]
  38 SCopy           11   27    0               00 r[27]=r[11]; moved_to
R[27] =  NULL <== R[11]
  39 SCopy            4   28    0               00 r[28]=r[4]; op_depth
R[28] =  i:0 <== R[4]
  40 IntCopy          1   29    0               00 r[29]=r[1]; rowid
R[29] =  i:867
  41 MakeRecord      26    4   25               00 r[25]=mkrec(r[26..29]); for 
I_NODES_MOVED
R[25] =  sx[05090008020363|......c]
  42 ReleaseReg      26    4    0               00 release r[26..29] mask 0
  43 NoConflict       1   66   26 3             00 key=r[26..28]
R[26] =  i:1
R[27] =  NULL
R[28] =  i:0
  66 ReleaseReg      43    1    0               00 release r[43] mask 0
  67 Noop             0    0    0               00 uniqueness check for 
I_NODES_PARENT
  68 SCopy            2   31    0               00 r[31]=r[2]; wc_id
R[31] =  i:1 <== R[2]
  69 SCopy            5   32    0               00 r[32]=r[5]; parent_relpath
R[32] =   t7[file_io](8) <== R[5]
  70 SCopy            3   33    0               00 r[33]=r[3]; local_relpath
R[33] =   t11[file_io/os2](8) <== R[3]
  71 SCopy            4   34    0               00 r[34]=r[4]; op_depth
R[34] =  i:0 <== R[4]
  72 IntCopy          1   35    0               00 r[35]=r[1]; rowid
R[35] =  i:867
  73 MakeRecord      31    5   30               00 r[30]=mkrec(r[31..35]); for 
I_NODES_PARENT
R[30] =  
sx[06091B23080266696C655F696F66696C655F696F2F6F733203|...#..file_iofile_io/os2.]
  74 ReleaseReg      31    5    0               00 release r[31..35] mask 0
  75 NoConflict       2   96   31 4             00 key=r[31..34]
R[31] =  i:1
R[32] =   t7[file_io](8)
R[33] =   t11[file_io/os2](8)
R[34] =  i:0
  76 IdxRowid         2   43    0               00 r[43]=rowid
R[43] =  i:272
  77 NotExists        0   92   43 1             00 intkey=r[43]
R[43] =  i:272
  78 Copy            43   74    0               00 r[74]=r[43]
R[74] =  i:272
  79 Column           0   13   88               00 r[88]=NODES.checksum
R[88] =  NULL
  80 Column           0    0   98               00 r[98]=NODES.wc_id
R[98] =  i:1
  81 Column           0    9   99               00 r[99]=NODES.moved_to
R[99] =  NULL
  82 Column           0    2  100               00 r[100]=NODES.op_depth
R[100] =  i:0
  83 Rowid            0  101    0               00 r[101]=rowid
R[101] =  i:272
  84 ReleaseReg      98    4    0               00 release r[98..101] mask 0
  85 IdxDelete        1   98    4               00 key=r[98..101]
  86 Column           0    1   99               00 r[99]=NODES.local_relpath
R[99] =   s11[file_io/os2](8)
  87 ReleaseReg      98    3    0               00 release r[98..100] mask 0
  88 IdxDelete        3   98    3               00 key=r[98..100]
  89 Delete           0    0    0 NODES         00
  90 Delete           2    0    0               00
  91 Program         74   92  102 program       00 Call: 
nodes_delete_trigger.replace
   0 Init             0    1    0 -- TRIGGER nodes_delete_trigger 00 Start at 
1; Start: nodes_delete_trigger.replace (AFTER DELETE ON NODES)
   1 Param           14    1    0               00 r[1]=old.checksum
R[1] =  NULL
   2 IsNull           1   32    0               00 if r[1]==NULL goto 32
R[1] =  NULL
  32 Halt             0    0    0               00 End: 
nodes_delete_trigger.replace
  92 AddImm          42    1    0               00 r[42]=r[42]+1
R[42] =  i:0
  93 Goto             0   96    0               00 bypass recheck
  96 ReleaseReg      43    1    0               00 release r[43] mask 0
  97 Noop             0    0    0               00 uniqueness check for 
sqlite_autoindex_NODES_1
  98 SCopy            2   37    0               00 r[37]=r[2]; wc_id
R[37] =  i:1 <== R[2]
  99 SCopy            3   38    0               00 r[38]=r[3]; local_relpath
R[38] =   t11[file_io/os2](8) <== R[3]
 100 SCopy            4   39    0               00 r[39]=r[4]; op_depth
R[39] =  i:0 <== R[4]
 101 IntCopy          1   40    0               00 r[40]=r[1]; rowid
R[40] =  i:867
 102 MakeRecord      37    4   36               00 r[36]=mkrec(r[37..40]); for 
sqlite_autoindex_NODES_1
R[36] =  sx[050923080266696C655F696F2F6F73320363|..#..file_io/os2.c]
 103 ReleaseReg      37    4    0               00 release r[37..40] mask 0
 104 NoConflict       3  129   37 3             00 key=r[37..39]
R[37] =  i:1
R[38] =   t11[file_io/os2](8)
R[39] =  i:0
 129 ReleaseReg      43    1    0               00 release r[43] mask 0
 130 IfNot           42  133    0               00
R[42] =  i:1
 131 NotExists        0   64    1               00 intkey=r[1]
R[1] =  i:867
  64 NoConflict       1   94   26 0             00 key=r[26]
R[26] =  i:1
assertion "pIn3->flags & MEM_Blob" failed: file "sqlite3.c", line 89376, 
function "sqlite3VdbeExec"

Program received signal SIGABRT, Aborted.
*_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:57
57              memset(&sa, 0, sizeof(sa));
(gdb)

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to