1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-12 13:01:09 +03:00
Commit Graph

1063 Commits

Author SHA1 Message Date
drh
0415d826c0 Smaller and faster vdbeFreeOpArray()
FossilOrigin-Name: e052436d9f54b785facd661adc648512356b831c0547aa8f347ebf4bd8ef1254
2017-04-10 20:51:21 +00:00
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
96a7e28df6 Remove an unnecessary clearing of the Vdbe.iCurrentTime value.
FossilOrigin-Name: fcd2acdd6075aa9a7a66ce254eba77485f7b2804127e109c0309173488cd4b87
2017-04-01 19:45:20 +00:00
drh
1cb0266dcb Begin enforcing the SQLITE_LIMIT_VDBE_OP. The documentation warned that this
day might come.

FossilOrigin-Name: ef5914617088cbf89bfae88f63ea959a07f02dff387ddc2b43948ad99c6a97b8
2017-03-17 22:50:16 +00:00
drh
2996796dcf If a reprepare is needed after binding to a variable with a number larger
than 32, set only the high-order bit of the Vdbe.expmask rather than setting
all bits.  This could potentially result in fewer false-positive reprepares.

FossilOrigin-Name: 45797feefe90cb7da53256b0c42fdaa1221d0a27
2017-03-03 21:51:40 +00:00
drh
76adb23980 Make sure the Vdbe.expmask value is set correctly in sqlite3VdbeSwap().
This fixes a problem introduced by [a8fd7052].

FossilOrigin-Name: 29f54b899e5cf22ece98ab41c39c41d75a4b228d
2017-03-02 13:13:30 +00:00
dan
bda4cb876c Save a few bytes and a few cycles by setting Vdbe.expmask to zero for
statements prepared using legacy interface sqlite3_prepare().

FossilOrigin-Name: a8fd705258643863493476f8b42ee981608a339f
2017-02-23 16:30:16 +00:00
dan
1325adf5e9 In sqlite3VdbeHalt(), return as soon as possible if
Vdbe.magic!=VDBE_MAGIC_RUN. This makes sqlite3_reset() slightly faster in some
cases.

FossilOrigin-Name: 80adc0cb4ed7bacc54b15ac8b5b205403939c8c4
2017-02-21 21:24:05 +00:00
drh
d879e3eb8d Change all legacy instances of "#if SQLITE_DEBUG" to "#ifdef SQLITE_DEBUG" for
consistency.

FossilOrigin-Name: 670f10b24230863688270d12ac519609ade2302b
2017-02-13 13:35:55 +00:00
dan
cb9a364390 Experimental change to invoke the preupdate hook when WITHOUT ROWID tables are
written.

FossilOrigin-Name: 856f8604c59c8fdd9bfb7d86fc0e212f091ab49a
2017-01-30 19:44:53 +00:00
drh
d08406477a Performance optimization in sqlite3VdbeCloseStatement().
FossilOrigin-Name: 1e96e5ec1ee617cb5b5cbdc5a2ee79c8cc35821d
2017-01-26 17:11:18 +00:00
dan
2a86c1962c Fix a problem with the pre-update hook on this branch.
FossilOrigin-Name: 6fc4fbfa29cfa795edf32e4a1f2d0eceb3007f68
2017-01-25 17:44:13 +00:00
drh
585ce1923c Experimental enhancement to automatically trim NULL values from the end of
records, for a reduced disk footprint.  This change also involves increasing
the P5 operand from 8 to 16 bits.

FossilOrigin-Name: 118ded403b95050b74ae2b03919c43d614094a32
2017-01-25 14:58:27 +00:00
dan
9e1ab1a8a4 Ensure that sqlite3_column_count() returns 0 for the "set" mode of "get/set"
PRAGMA statements that do not return a value in that case (e.g. page_size,
cache_size, auto_vacuum).

FossilOrigin-Name: 5c05d8ec5e895661dae2de30c73dfdeaff93511e
2017-01-05 19:32:48 +00:00
drh
f326d66d61 Fix the VList object so that it actually works.
FossilOrigin-Name: 9dcd85698af46fd5ba34004ca690d368c4ae3078
2016-12-23 13:30:53 +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
a582b01698 Simplifications to the way UnpackedRecord objects are allocated. Smaller
and faster code that also fixes a subtle (currently unreachable) bug.

FossilOrigin-Name: f7ab01f254cd9d7006b8dec29adb234a671b8e6f
2016-12-21 19:45:54 +00:00
drh
fbd8cbdcf5 Reorder the fields in the VdbeCursor object so that those that need to be
bulk zeroed on allocation are grouped at the beginning, and the memset()
only runs over those fields that really need it.

FossilOrigin-Name: 8165f88bb1d40693d67005a8d5dc499085f64b91
2016-12-10 12:58:15 +00:00
drh
f14b7fb73b Add the sqlite3VdbeAppendP4() method for adding P4 content to the most recently
coded instruction.

FossilOrigin-Name: 28883e8f3e92a8015fb5f6c8ae8580833931543d
2016-12-07 21:35:55 +00:00
drh
861b1307cb The use P4_DYNAMIC in place of the P4_MPRINTF operand type.
FossilOrigin-Name: 3954f83798ed78527280c9db6360c62a5134b9ec
2016-12-07 20:22:31 +00:00
drh
bdaa1ee2ee Performance optimization for sqlite3VdbeAddOp4().
FossilOrigin-Name: 04716c907bf9fc9b827e18fdc7b4e1069e201536
2016-12-07 20:09:51 +00:00
drh
cb3cabd01b Refactor the sqlite3BtreeKey() and sqlite3BtreeData() internal interfaces
into sqlite3BtreePayload() and sqlite3BtreePayloadChecked(), respectively.
This is a continuation of the optimization started by check-in
[2d831074cf].  The result is a slightly smaller and faster binary.

FossilOrigin-Name: 49ebc219faea30eaa61def4a3fba2817b9c58a86
2016-11-25 19:18:28 +00:00
drh
30642cf4d2 Correctly display the names of SQL functions in the VDBE_PROFILE output.
FossilOrigin-Name: 161192f17273f32f1b3b82d41135aaca047e9a83
2016-11-23 14:19:11 +00:00
dan
e43635aaa7 In the sessions module, avoid recording a change if an UPDATE statement
overwrites a column with REAL affinity containing an integer value with the same value.

FossilOrigin-Name: b861328ab9ceec6926d97658c3606e6ae9ad39bf
2016-10-21 21:21:45 +00:00
drh
230368c30d Remove an unnecessary memset() call.
FossilOrigin-Name: a76bff74ce47c9c98106566bde5d781992657e22
2016-10-01 19:32:54 +00:00
drh
d8e4b13256 Use sqlite3DbMallocRawNN() where appropriate, instead of
sqlite3DbMallocRaw().

FossilOrigin-Name: 54a449a41d8d32da2f8b73689227ced866974a18
2016-10-01 19:21:56 +00:00
drh
8dfef1175e Make sure deleting an unused prepared statement does not reference
uninitialized fields in the structure.

FossilOrigin-Name: 7983eef0422439bfc85950554b000d46a9767ee3
2016-10-01 16:53:45 +00:00
drh
ab3182f7c4 Avoid unnecessary zeroing of fields in the Vdbe object when it is allocated.
FossilOrigin-Name: 1e21bbe836539e64d24857f4faa3d12cd607dc7e
2016-10-01 00:37:50 +00:00
drh
9b40d13f43 Fix the Parse.aColCache column cache so that all of the valid entries are
in the first Parse.nColCache slots.

FossilOrigin-Name: 6028502059ccbd3699637b7a70a6d8ce1b7c3dad
2016-09-30 20:22:27 +00:00
drh
2a1df937ab Avoid unnecessary Mem initializations when generating a new sqlite3_stmt
object.

FossilOrigin-Name: 47ae1cda8dc255d100aeb8cb90ea4c9e449509be
2016-09-30 17:46:44 +00:00
drh
dd3bfe8648 Small size and performance optimization to sqlite3VdbeChangeP5().
FossilOrigin-Name: 3c93c8f5bbf54ed2a331079b28fdd94eb0e59e69
2016-09-29 20:28:34 +00:00
drh
2831c4d123 Remove the peep-hole optimization of removing OP_Close opcodes that come
before OP_Halt, as the extra work of removing those opcodes uses more cycles
than just running them.

FossilOrigin-Name: 984a96d79656c1b095aba1f88aca4bb787ba0bd8
2016-09-29 19:50:02 +00:00
drh
8aaf7bcc8d Avoid unnecessary calls to ExpandBlob() for smaller and faster code.
FossilOrigin-Name: 5e196fd18169e84806cd45dd1a8190339323e772
2016-09-20 01:19:18 +00:00
drh
9e5eb9c8cc Revise the implementation of OP_Once so that it is smaller, faster, and uses
less memory.  This also fixes an obscure bug introduced 3 days ago by check-in
[5990a1bdb4a073].

FossilOrigin-Name: 6bf5ba10d28f1b0a32aa9a560ae3143a1235eadb
2016-09-18 16:08:10 +00:00
drh
72ceae01e5 Slight size reduction and performance increase in sqlite3VdbeHalt().
FossilOrigin-Name: 5990a1bdb4a0734ff23015ada71cf02d0cb1381f
2016-09-15 00:32:42 +00:00
drh
5f6eb1a0dc Optimization to vdbeRecordCompareInt() makes it slightly smaller and faster.
FossilOrigin-Name: 5a2a7712cb8e0b686942dfab4e9e67b5ea7b2be3
2016-09-15 00:04:46 +00:00
drh
64caee4086 Performance improvements to the comparison operators in the bytecode engine.
FossilOrigin-Name: 37803b19d219f4107f29b240d5d314600e4bd236
2016-09-09 19:33:00 +00:00
drh
1ad78c5791 Fix the extra comments (added with -DSQLITE_ENABLE_EXPLAIN_COMMENTS) so that
the sense of <, <=, >, and >= tests is correct and so that the
SQLITE_STOREP2 version is shown correctly.  These changes are already in the
rowvalue branch but are added here since they are technically unrelated to
rowvalue.

FossilOrigin-Name: 4d43c4698eef4e3db7556813f0274b4018c7c2b9
2016-08-27 14:05:12 +00:00
drh
557341e8fa Add requirements marks to the sqlite3_trace_v2() interface documentation.
FossilOrigin-Name: ebd388e94da4a2b29c2a546f832d359619803ec5
2016-07-23 02:07:26 +00:00
drh
cf1e395acb Fix sqlite3VdbeExpandSql() so that it handles OOMs by always returning NULL.
FossilOrigin-Name: 5a027fe4127d498e0dc0d9439131c6a29085cf0a
2016-07-23 00:43:14 +00:00
drh
9a8b9ec51c Be sure to hold the database connection mutex while calling sqlite3VdbeExpand()
from within sqlite3_expanded_sql().

FossilOrigin-Name: 527b5ba68c0b0185958b945b197f9022951d9379
2016-07-22 20:45:03 +00:00
drh
8d85364261 The sqlite3_expanded_sql() function compiles, but always returns NULL, when
the SQLITE_OMIT_TRACE compile-time option is used.

FossilOrigin-Name: 53c25ebe34e6776a12260078852973b1d581d20f
2016-07-15 10:01:06 +00:00
mistachkin
0129a54a16 Fix copy/paste typo in the new sqlite3_expanded_sql() function.
FossilOrigin-Name: e7d18c70d2b8f09c9f5b978fe3d69d1088e42322
2016-07-14 09:22:16 +00:00
drh
fca760c841 Add the sqlite3_expanded_sql() interface. Refinements to the
sqlite3_trace_v2() interface to make it more useful.

FossilOrigin-Name: 99ee7ee58d45b29a0000492306ddc0b90563ff51
2016-07-14 01:09:08 +00:00
drh
a7c90c42ea Change the sqlite3BtreeKeySize() interface into sqlite3BtreeIntegerKey() and
make it only work for table btrees.  Change sqlite3BtreeDataSize() into
sqlite3BtreePayloadSize() and make it work for all btrees.  Combine
sqlite3BtreeDataFetch() and sqlite3BtreeKeyFetch() into a single
sqlite3BtreePayloadFetch() routine.  These changes seem to make the
b-tree interface more rational and they reduce both binary size and
CPU usage.

FossilOrigin-Name: bef35e18dd19732f7859287b097feeb593e5900f
2016-06-04 20:37:10 +00:00
drh
f431a87c7c Performance optimization and size reduction on the freeP4() routine.
FossilOrigin-Name: 4dc56e8684e0c74fb311c7f0ef1c367da8c7bf70
2016-05-20 15:53:47 +00:00
drh
c310db39ff Rename the OP_MX_JUMP macro to SQLITE_MX_JUMP_OPCODE to avoid confusing the
opcode name generator.

FossilOrigin-Name: e554a4c38bda9c73bf129bb7c665c53ccc4d96a8
2016-04-11 16:35:05 +00:00
drh
7cc84c2cdd Remove the VdbeOp.opflags field and its associated initialization overhead.
Update mkopcodeh.tcl to reorder opcode numbers to help the resolveP2Values()
routine run faster.

FossilOrigin-Name: 099478fa7521ba52262ef2bf24dd8f0114ce92e1
2016-04-11 13:36:42 +00:00
drh
be5000d6bf Instead of just commenting out the unneeded code in the previous check-in,
remove it completely.

FossilOrigin-Name: 8415d4848ab36ca33b23d1fad6b063544de04a3b
2016-04-07 14:05:20 +00:00
drh
3b42be9178 Remove an unnecessary test for a NULL pointer in freeP4().
FossilOrigin-Name: e84e88e31b67afe42e2494d984ab1cafd107465a
2016-04-07 14:01:10 +00:00