Commit Graph

216 Commits

Author SHA1 Message Date
drh dbd6a7dc06 Split off sqlite3DbFreeNN() from sqlite3DbFree() and use it in cases where
we know that the argument to be freed is never NULL.

FossilOrigin-Name: ad90e8bb5e47945607c8fb47b6ade8cfc52a9b684805cc40132629be0ecc14cc
2017-04-05 12:39:49 +00:00
drh 53b2459a36 Declare the Lemon-generated parser object as itself. (Duh)
FossilOrigin-Name: c8000e94cca59dabf83d6cb75b40441aaf793d29880582dc4baa17246449b5fe
2017-03-30 17:13:37 +00:00
drh ecc0f84d08 Ensure that the stack space used to hold the Lemon-generated parser object
is always 8-byte aligned.

FossilOrigin-Name: 1279de0b70cabf39899d92ece8852a780fd800bf3154971537b3427e5bd3ca50
2017-03-30 16:37:05 +00:00
drh 9b38d6660f Performance optimization in the tokenizer/parser loop.
FossilOrigin-Name: 2cb71583d631cd417acbeebbb4ee950573a9deef
2017-03-07 14:38:52 +00:00
drh d26cc54183 In the amalgamation, allocate the parser engine object from stack rather than
from heap, for improved performance.  This only happens in the amalgamation,
since otherwise the sqlite3RunParser() routine does not know the object size.

FossilOrigin-Name: 4fe879d4b5da6ae0688a7a99004683a234966597
2017-01-28 20:46:37 +00:00
drh 9bf755cc44 Use the VList object to replace Parse.azVar for tracking the mapping between
SQL parameter names and parameter numbers.  There is a performance
improvement, though there are still a few hiccups in the current code.

FossilOrigin-Name: 68ecafa1425a41358c88f41efea3262f1b4490f2
2016-12-23 03:59:31 +00:00
drh 585a59795c Updates to the tokenizer for EBCDIC. No changes for standard builds.
FossilOrigin-Name: 4fc6580ffa7232aaf751f38f90c45edc8863abe5
2016-12-12 01:53:36 +00:00
drh 167fbbe195 Rearrange the code inside sqlite3RunParser() routine so that sqlite3Parser()
is only called from a single place.  This allows sqlite3Parser() to be
in-lined, which results in a 0.25% overall performance gain.

FossilOrigin-Name: 25d1d02b3ea126ade22b2a72649ae55509aa1777
2016-08-10 14:40:00 +00:00
drh f3c57ff54c Avoid unnecessary calls to object destructors for a small performance gain.
FossilOrigin-Name: aec94b6ee68fe50e2cc14388281e2ef531e21d68
2016-04-12 00:16:54 +00:00
dan a73086dd9e Fix a problem with handling identifiers that start with "x" if SQLITE_OMIT_BLOB_LITERAL is defined.
FossilOrigin-Name: b65217c69c59cbe9cd1494e2eb42ecf22c336399
2016-02-24 16:14:07 +00:00
drh b2bddbbc2d Avoid a potential buffer overrun if an SQL statement being parsed ends
with an illegal "!" token.  (This problem was detected by fuzzcheck
running under valgrind. The problem was introduced by check-in [9570b6b43df3].)

FossilOrigin-Name: 2a8d97e7c8976df0312e1294e8c1da8b15686654
2016-02-18 14:49:28 +00:00
drh 30c14728b4 Minor simplification to the tokenizer. Slightly smaller and faster.
FossilOrigin-Name: 9570b6b43df3bc5ce314cded20bca8be9e968efe
2016-02-16 13:04:19 +00:00
mistachkin fad3039c51 Enhance ability to debug out-of-memory errors.
FossilOrigin-Name: 6a9c4a3ebfb7cc0738ef6634440ccab44a21ff28
2016-02-13 23:43:46 +00:00
drh e96f361995 Changes to help the tokenizer run about 33% faster.
FossilOrigin-Name: a050e6f096d40aa5b6275797b96e62c228044f5a
2016-02-08 19:36:46 +00:00
drh 34dcee6544 Add code to get the tokenizer character-class logic working for EBCDIC.
FossilOrigin-Name: 04f7da77c13925c1f1e287f4579bb85518297d81
2016-02-08 19:15:48 +00:00
drh 8974331fc3 Demonstrate a much faster sqlite3GetToken() routine by using a lookup table
to map initial token characters into a character class.  This check-in does
not work for EBCDIC.  More optimization needed.

FossilOrigin-Name: 9115baa1919584dc8ca25bbff54d3b65748a9631
2016-02-08 02:30:50 +00:00
drh 4a642b6060 Improvements to the way that OOM errors are processed.
FossilOrigin-Name: c3ef03478a5788c855b3aef385d43ae7f494f440
2016-02-05 01:55:27 +00:00
drh 54bb56d82a Performance enhancement to the tokenizer.
FossilOrigin-Name: 6ea2df86c95c226052f528424e9bee367a2e765a
2015-11-10 03:30:51 +00:00
drh 0739e45bcd Small size reduction and performance increase in the parser.
FossilOrigin-Name: d62cd757a69cc49c2d309e27c948610b5868632f
2015-11-09 02:08:09 +00:00
drh 6e7722669e Proposed fix for an infinite loop bug in the WITH clause semantic analysis
logic.

FossilOrigin-Name: 028475cb17a4b50baf0e9aba9bd3403d0a5d03b0
2015-11-07 17:48:21 +00:00
drh b02392e6f0 Change sqlite3StatusSet() into sqlite3StatusHighwater() so that only the
highwater mark is recorded.  This gives a small size reduction and
performance improvement.

FossilOrigin-Name: 6422d223dd10018703c6b083d29a3c35c837fc97
2015-10-15 15:28:56 +00:00
drh a248a722cf Change the parser engine so that it (once again) waits for a lookahead token
before reducing, even in a SHIFTREDUCE action.

FossilOrigin-Name: 2c17a1358353a0845b039283be79353f033e2491
2015-09-07 19:52:55 +00:00
drh 3bd48ab213 For the Lemon-generated parser, add a new action type SHIFTREDUCE and use it
to further compress the parser tables and improve parser performance.

FossilOrigin-Name: 531c3974b3d586c1989cde905b2fb4681239a570
2015-09-07 18:23:37 +00:00
drh f5ed7ad63e Fix harmless compiler warnings.
FossilOrigin-Name: b0badb99023e23bef0e2064cec58f2b279af0c0b
2015-06-15 14:43:25 +00:00
drh e726622579 Move two unreachable conditionals inside of NEVER() or assert().
FossilOrigin-Name: db4e9728fae5f7b0fad6aa0a5be317a7c9e7c417
2015-05-29 17:51:16 +00:00
dan 584390e8dd Fix a one-byte buffer overread that may follow a syntax error while preparing an SQL statement.
FossilOrigin-Name: 075003930da98419f671b7833a5850693529fb62
2015-05-26 18:58:57 +00:00
drh 22c17b8bf5 Simplifications to error message processing. Fix a possible problem in error
message formatting when vacuuming a database with a corrupt schema.

FossilOrigin-Name: 56ef98a04765c34c1c2f3ed7a6f03a732f3b886e
2015-05-15 04:13:15 +00:00
drh 9a9705de5c Do not send the extra ";" and "\000" tokens to the parser if a prior error
has occurred.

FossilOrigin-Name: 9aa70ddf2ca6044634560a801b43df121384eb64
2015-04-25 00:32:30 +00:00
drh f3151f0a0d Fix a couple of unreachable branches.
FossilOrigin-Name: 8f391dffcfe068d48f854784648610d8a86f6bc8
2015-04-16 20:27:09 +00:00
drh 0be0cf6721 Remove a branch that became unreachable due to one of the earlier check-ins
today.

FossilOrigin-Name: fa0956edf866f48f448967836709a3ad822ff917
2015-04-15 08:37:42 +00:00
drh 347bdc39a7 Fix the error message generator for illegal token errors so that it does not
leak memory if it immediately follows another erroneous SQL statement.

FossilOrigin-Name: 3576973f8b88b6109fbefdebfa53468ffa137009
2015-04-15 07:57:27 +00:00
drh af89fe66ea Add the sqlite3_status64() interface. Make the new interface and the legacy
sqlite3_status() both atomic and threadsafe.  Check threadsafety using
assert()s.

FossilOrigin-Name: 1ce8e8fa4b866aafa12b1da0eb4d02321af9293e
2015-03-23 17:25:18 +00:00
drh 96c707a3c2 Improvements to SQLITE_ENABLE_API_ARMOR.
FossilOrigin-Name: 823ad40ccb5b51aaa0d5a48da63b465df9d0649a
2015-02-13 16:36:14 +00:00
mistachkin cd54bab6fe Minor fixes and enhancements to the SQLITE_ENABLE_API_ARMOR functionality.
FossilOrigin-Name: cb3e4219ac9560d2773b85453aafda54b7c9346f
2014-12-20 21:14:14 +00:00
drh 97348b37c2 Change that might allow SQLite to build and work using the EBCDIC character
set.

FossilOrigin-Name: ef30e0352b3d4a29749cd0872c10e45a6649ec52
2014-09-25 02:44:29 +00:00
drh fb046e7653 Fix a problem with parser memory allocation on 32-bit systems.
FossilOrigin-Name: 2f69a1fa6adc9377149ae7faa586a5d30b6a631b
2014-09-12 04:28:33 +00:00
peter.d.reid 60ec914c74 Fix typos in comments. No code changes.
FossilOrigin-Name: e62aab5e9290503869e1f4d5e0fefd2b4dee0a69
2014-09-06 16:39:46 +00:00
drh 28e048c618 Add support for parsing C-style hexadecimal literals.
FossilOrigin-Name: 34a1f38b7a23c64f5c6e5b34c19a20480be53961
2014-07-23 01:26:51 +00:00
dan b290f11775 Fix some problems to do with WITH clauses and name resolution.
FossilOrigin-Name: 6a549187ed8b5ed50daefa676ff666ae2ed43346
2014-01-17 14:59:27 +00:00
dan 4e9119d9e8 Add code to handle non-recursive CTEs in the same way as SQL views.
FossilOrigin-Name: a26f399ba485e8127c276c5f103ec6c555e11734
2014-01-13 15:12:23 +00:00
drh f59b12fbc1 Optimizations to the SQL language grammar that result in a small size
reduction and speed increase.

FossilOrigin-Name: cb5d1f83e0a33d546d4c0cb817ef1f8440d1f738
2014-01-11 03:54:05 +00:00
drh c6bd4e4a36 Store the root page of the PRIMARY KEY index for a WITHOUT ROWID table in
the sqlite_master entry for the main table and omit the sqlite_master entry
for the PRIMARY KEY.

FossilOrigin-Name: b7544bb280f1c1c55135a9b35aeb85604fef94a3
2013-11-02 14:37:18 +00:00
drh 3975974780 Updates to requirements marks. No code changes.
FossilOrigin-Name: 213020769f310aec1591d97756b53891d0b64005
2013-08-02 23:40:45 +00:00
drh 4f7d3a5f06 Refactor names of fields in the sqlite3 object: "activeVdbeCnt" becomes
"nVdbeActive".  Related fields becomes "nVdbeRead", "nVdbeWrite", and
"nVdbeExec".

FossilOrigin-Name: 14f796963474350e7aee8d3757acd3315fe78e4f
2013-06-27 23:54:02 +00:00
drh 2faf5f5e9e Update the text of requirements associated with sqlite3_pcache_methods2.
Update requirements marks embedded in code.  All of the above are comment
changes only; there are no changes to code in this check-in.

FossilOrigin-Name: f945c41a72519d6bcfb478730ba0254bb24e5331
2011-12-30 15:17:47 +00:00
drh 3a61a5a2b5 Performance enhancement to the blob-literal tokenizer.
FossilOrigin-Name: 61aa2031f1c5ae05e31077588a55194a9546262a
2011-06-03 21:34:45 +00:00
drh 124c0b49a1 Refactor the SQL parameter processing so that parameter names for values
that are optimized out of the prepare statement are not forgotten.

FossilOrigin-Name: b3aaf715b60b8a338cc6c92dad1ead4a3f7146a3
2011-06-01 18:15:55 +00:00
drh b975598ea0 Make sure all memory from sqlite3DbMalloc() is freed by sqlite3DbFree() and
all memory from sqlite3_malloc() is freed by sqlite3_free().

FossilOrigin-Name: ac1f37a647e9ed1c00a901d26d9956a86c40117a
2010-07-24 16:34:37 +00:00
dan 1feeaed291 Remove the Table.dbMem variable, as it is no longer being used for its original purpose.
FossilOrigin-Name: 6eddc6e601cf8f585c6c2cf79f36fcbfe98a307e
2010-07-23 15:41:47 +00:00
drh 413c3d36a2 Continuing improvements to error reporting and the sqlite3_log() routine.
FossilOrigin-Name: edea3bb740ddd096a46e00678b59d465bb1e2903
2010-02-23 20:11:56 +00:00