Interesting.  That would indicate that the code where you commented out the 
extra ResultRow OP is still being executed.  Which it cannot be if you 
re-compiled the code and generated a new executable/dll/so with those 
instructions commented out.

So I think somehow your compiler is not actually updating what you are running, 
or that you are not running what you think you are compiling ...

---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a 
lot about anticipated traffic volume.


>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>boun...@mailinglists.sqlite.org] On Behalf Of Bart Smissaert
>Sent: Friday, 25 August, 2017 15:25
>To: SQLite mailing list
>Subject: Re: [sqlite] FIX FOR:: Duplicate output with pragma_list,
>function_list, module_list
>
>Tried with the latest 3.20.1, but same result.
>My explain output is like this:
>
>addr opcode p1 p2 p3 p4 p5 comment
>0 Init 0 1 0  00 Start at 1
>1 String8 0 1 0 application_id 00 r[1]='application_id'
>2 ResultRow 1 1 0  00 output=r[1]
>3 ResultRow 1 1 0  00 output=r[1]
>4 String8 0 1 0 auto_vacuum 00 r[1]='auto_vacuum'
>5 ResultRow 1 1 0  00 output=r[1]
>6 ResultRow 1 1 0  00 output=r[1]
>7 String8 0 1 0 automatic_index 00 r[1]='automatic_index'
>8 ResultRow 1 1 0  00 output=r[1]
>9 ResultRow 1 1 0  00 output=r[1]
>
>I did comment out those same 4 lines.
>
>I suppose it has to be something in my application code.
>
>pragma database_list works fine though with this explain output:
>
>addr opcode p1 p2 p3 p4 p5 comment
>0 Init 0 1 0  00 Start at 1
>1 Integer 0 1 0  00 r[1]=0
>2 String8 0 2 0 main 00 r[2]='main'
>3 String8 0 3 0 C:\Test\Test.db3 00 r[3]='C:\Test\Test.db3'
>4 ResultRow 1 3 0  00 output=r[1..3]
>5 Halt 0 0 0  00
>
>No idea what is going on.
>
>
>RBS
>
>On Fri, Aug 25, 2017 at 10:08 PM, Keith Medcalf <kmedc...@dessus.com>
>wrote:
>
>>
>> Doesn't help a lot.  Works for me though with the standard 3.20.0
>release
>> though ...
>>
>> SQLite version 3.20.0 2017-08-01 13:24:15
>> Enter ".help" for usage hints.
>> Connected to a transient in-memory database.
>> Use ".open FILENAME" to reopen on a persistent database.
>> sqlite> .eqp full
>> sqlite> select sqlite_source_id();
>> addr  opcode         p1    p2    p3    p4             p5  comment
>> ----  -------------  ----  ----  ----  -------------  --  ---------
>----
>> 0     Init           0     6     0                    00  Start at
>6
>> 1     Noop           0     0     0                    00  Begin
>WHERE-core
>> 2     Copy           2     1     0                    00  r[1]=r[2]
>> 3     ResultRow      1     1     0                    00
>output=r[1]
>> 4     Noop           0     0     0                    00  End
>WHERE-core
>> 5     Halt           0     0     0                    00
>> 6     Function0      0     0     2     sqlite_source_id(0)  00
>> r[2]=func(r[0])
>> 7     Goto           0     1     0                    00
>> 2017-08-01 13:24:15 9501e22dfeebdcefa783575e47c60b
>> 514d7c2e0cad73b2a496c0bc4b680900a8
>> sqlite> pragma module_list;
>> addr  opcode         p1    p2    p3    p4             p5  comment
>> ----  -------------  ----  ----  ----  -------------  --  ---------
>----
>> 0     Init           0     1     0                    00  Start at
>1
>> 1     String8        0     1     0     sqlite_stmt    00
>> r[1]='sqlite_stmt'
>> 2     ResultRow      1     1     0                    00
>output=r[1]
>> 3     String8        0     1     0     json_tree      00
>r[1]='json_tree'
>> 4     ResultRow      1     1     0                    00
>output=r[1]
>> 5     String8        0     1     0     rtree_i32      00
>r[1]='rtree_i32'
>> 6     ResultRow      1     1     0                    00
>output=r[1]
>> 7     String8        0     1     0     fts3tokenize   00
>> r[1]='fts3tokenize'
>> 8     ResultRow      1     1     0                    00
>output=r[1]
>> 9     String8        0     1     0     fts3           00
>r[1]='fts3'
>> 10    ResultRow      1     1     0                    00
>output=r[1]
>> 11    String8        0     1     0     fts4aux        00
>r[1]='fts4aux'
>> 12    ResultRow      1     1     0                    00
>output=r[1]
>> 13    String8        0     1     0     interpolate    00
>> r[1]='interpolate'
>> 14    ResultRow      1     1     0                    00
>output=r[1]
>> 15    String8        0     1     0     vfsstat        00
>r[1]='vfsstat'
>> 16    ResultRow      1     1     0                    00
>output=r[1]
>> 17    String8        0     1     0     dbstat         00
>r[1]='dbstat'
>> 18    ResultRow      1     1     0                    00
>output=r[1]
>> 19    String8        0     1     0     rtree          00
>r[1]='rtree'
>> 20    ResultRow      1     1     0                    00
>output=r[1]
>> 21    String8        0     1     0     carray         00
>r[1]='carray'
>> 22    ResultRow      1     1     0                    00
>output=r[1]
>> 23    String8        0     1     0     fts5           00
>r[1]='fts5'
>> 24    ResultRow      1     1     0                    00
>output=r[1]
>> 25    String8        0     1     0     json_each      00
>r[1]='json_each'
>> 26    ResultRow      1     1     0                    00
>output=r[1]
>> 27    String8        0     1     0     approximate_match  00
>> r[1]='approximate_match'
>> 28    ResultRow      1     1     0                    00
>output=r[1]
>> 29    String8        0     1     0     fts4           00
>r[1]='fts4'
>> 30    ResultRow      1     1     0                    00
>output=r[1]
>> 31    String8        0     1     0     transitive_closure  00
>> r[1]='transitive_closure'
>> 32    ResultRow      1     1     0                    00
>output=r[1]
>> 33    String8        0     1     0     completion     00
>r[1]='completion'
>> 34    ResultRow      1     1     0                    00
>output=r[1]
>> 35    String8        0     1     0     fuzzer         00
>r[1]='fuzzer'
>> 36    ResultRow      1     1     0                    00
>output=r[1]
>> 37    String8        0     1     0     spellfix1      00
>r[1]='spellfix1'
>> 38    ResultRow      1     1     0                    00
>output=r[1]
>> 39    String8        0     1     0     wholenumber    00
>> r[1]='wholenumber'
>> 40    ResultRow      1     1     0                    00
>output=r[1]
>> 41    String8        0     1     0     fts5vocab      00
>r[1]='fts5vocab'
>> 42    ResultRow      1     1     0                    00
>output=r[1]
>> 43    String8        0     1     0     generate_series  00
>> r[1]='generate_series'
>> 44    ResultRow      1     1     0                    00
>output=r[1]
>> 45    String8        0     1     0     csv            00
>r[1]='csv'
>> 46    ResultRow      1     1     0                    00
>output=r[1]
>> 47    Halt           0     0     0                    00
>> sqlite_stmt
>> json_tree
>> rtree_i32
>> fts3tokenize
>> fts3
>> fts4aux
>> interpolate
>> vfsstat
>> dbstat
>> rtree
>> carray
>> fts5
>> json_each
>> approximate_match
>> fts4
>> transitive_closure
>> completion
>> fuzzer
>> spellfix1
>> wholenumber
>> fts5vocab
>> generate_series
>> csv
>> sqlite>
>>
>> sqlite3.c
>>
>> #ifdef SQLITE_INTROSPECTION_PRAGMAS
>>   case PragTyp_FUNCTION_LIST: {
>>     int i;
>>     HashElem *j;
>>     FuncDef *p;
>>     pParse->nMem = 2;
>>     for(i=0; i<SQLITE_FUNC_HASH_SZ; i++){
>>       for(p=sqlite3BuiltinFunctions.a[i]; p; p=p->u.pHash ){
>>         sqlite3VdbeMultiLoad(v, 1, "si", p->zName, 1);
>> //        sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 2);
>>       }
>>     }
>>     for(j=sqliteHashFirst(&db->aFunc); j; j=sqliteHashNext(j)){
>>       p = (FuncDef*)sqliteHashData(j);
>>       sqlite3VdbeMultiLoad(v, 1, "si", p->zName, 0);
>> //      sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 2);
>>     }
>>   }
>>   break;
>>
>> #ifndef SQLITE_OMIT_VIRTUALTABLE
>>   case PragTyp_MODULE_LIST: {
>>     HashElem *j;
>>     pParse->nMem = 1;
>>     for(j=sqliteHashFirst(&db->aModule); j; j=sqliteHashNext(j)){
>>       Module *pMod = (Module*)sqliteHashData(j);
>>       sqlite3VdbeMultiLoad(v, 1, "s", pMod->zName);
>> //      sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 1);
>>     }
>>   }
>>   break;
>> #endif /* SQLITE_OMIT_VIRTUALTABLE */
>>
>>   case PragTyp_PRAGMA_LIST: {
>>     int i;
>>     for(i=0; i<ArraySize(aPragmaName); i++){
>>       sqlite3VdbeMultiLoad(v, 1, "s", aPragmaName[i].zName);
>> //      sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 1);
>>     }
>>   }
>>   break;
>> #endif /* SQLITE_INTROSPECTION_PRAGMAS */
>>
>>
>> ---
>> The fact that there's a Highway to Hell but only a Stairway to
>Heaven says
>> a lot about anticipated traffic volume.
>>
>>
>> >-----Original Message-----
>> >From: sqlite-users [mailto:sqlite-users-
>> >boun...@mailinglists.sqlite.org] On Behalf Of Bart Smissaert
>> >Sent: Friday, 25 August, 2017 14:57
>> >To: SQLite mailing list
>> >Subject: Re: [sqlite] FIX FOR:: Duplicate output with pragma_list,
>> >function_list, module_list
>> >
>> >The standard 3.20.0, second down on this page:
>> >https://www.sqlite.org/download.html
>> >
>> >Noticed though there is a new version and will try that one.
>> >
>> >RBS
>> >
>> >On Fri, Aug 25, 2017 at 9:48 PM, Keith Medcalf
><kmedc...@dessus.com>
>> >wrote:
>> >
>> >>
>> >> Which amalgamation?
>> >>
>> >>
>> >>
>> >> ---
>> >> The fact that there's a Highway to Hell but only a Stairway to
>> >Heaven says
>> >> a lot about anticipated traffic volume.
>> >>
>> >>
>> >> >-----Original Message-----
>> >> >From: sqlite-users [mailto:sqlite-users-
>> >> >boun...@mailinglists.sqlite.org] On Behalf Of Bart Smissaert
>> >> >Sent: Friday, 25 August, 2017 14:13
>> >> >To: SQLite mailing list
>> >> >Subject: Re: [sqlite] FIX FOR:: Duplicate output with
>pragma_list,
>> >> >function_list, module_list
>> >> >
>> >> >I copied the exact code block as in
>> >> >http://www.sqlite.org/src/info/b79cc8dc88c8ae03
>> >> >compiled in MSVS, no errors and dll works fine, but still
>> >duplicate
>> >> >output.
>> >> >This is in Windows 8.
>> >> >I compiled the edited amalgation. I checked in Notepad that
>> >sqlite3.c
>> >> >had
>> >> >indeed the needed changes
>> >> >and it had, so no idea why I still get the duplicates. Must be
>> >some
>> >> >silly
>> >> >mistake I am making, but no idea what.
>> >> >
>> >> >RBS
>> >> >
>> >> >
>> >> >On Fri, Aug 25, 2017 at 8:28 PM, Keith Medcalf
>> ><kmedc...@dessus.com>
>> >> >wrote:
>> >> >
>> >> >>
>> >> >> Thanks Dan.  That works for me ...
>> >> >>
>> >> >> ---
>> >> >> The fact that there's a Highway to Hell but only a Stairway
>to
>> >> >Heaven says
>> >> >> a lot about anticipated traffic volume.
>> >> >>
>> >> >>
>> >> >> >-----Original Message-----
>> >> >> >From: sqlite-users [mailto:sqlite-users-
>> >> >> >boun...@mailinglists.sqlite.org] On Behalf Of Dan Kennedy
>> >> >> >Sent: Friday, 25 August, 2017 03:45
>> >> >> >To: sqlite-users@mailinglists.sqlite.org
>> >> >> >Subject: Re: [sqlite] FIX FOR:: Duplicate output with
>> >pragma_list,
>> >> >> >function_list, module_list
>> >> >> >
>> >> >> >On 08/25/2017 06:41 AM, Keith Medcalf wrote:
>> >> >> >> If you search sqlite3.c for the
>SQLITE3_INTROSPECTION_PRAGMAS
>> >> >you
>> >> >> >will see in pragma.c (or in sqlite3.c) the following code:
>> >> >> >
>> >> >> >Thanks for looking into this. Now fixed here:
>> >> >> >
>> >> >> >   http://www.sqlite.org/src/info/b79cc8dc88c8ae03
>> >> >> >
>> >> >> >Dan.
>> >> >> >
>> >> >> >
>> >> >> >_______________________________________________
>> >> >> >sqlite-users mailing list
>> >> >> >sqlite-users@mailinglists.sqlite.org
>> >> >> >http://mailinglists.sqlite.org/cgi-
>bin/mailman/listinfo/sqlite-
>> >> >users
>> >> >>
>> >> >>
>> >> >>
>> >> >> _______________________________________________
>> >> >> sqlite-users mailing list
>> >> >> sqlite-users@mailinglists.sqlite.org
>> >> >> http://mailinglists.sqlite.org/cgi-
>bin/mailman/listinfo/sqlite-
>> >> >users
>> >> >>
>> >> >_______________________________________________
>> >> >sqlite-users mailing list
>> >> >sqlite-users@mailinglists.sqlite.org
>> >> >http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
>> >users
>> >>
>> >>
>> >>
>> >> _______________________________________________
>> >> sqlite-users mailing list
>> >> sqlite-users@mailinglists.sqlite.org
>> >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
>> >users
>> >>
>> >_______________________________________________
>> >sqlite-users mailing list
>> >sqlite-users@mailinglists.sqlite.org
>> >http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
>users
>>
>>
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@mailinglists.sqlite.org
>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
>users
>>
>_______________________________________________
>sqlite-users mailing list
>sqlite-users@mailinglists.sqlite.org
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



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

Reply via email to