• Victor Costan's avatar
    Revert "sqlite: Disable unused features via compile-time options." · f24fdd9f
    Victor Costan authored
    This reverts commit b05f99c3.
    
    Reason for revert: Crashes the Linux build -- 807487
    
    Original change's description:
    > sqlite: Disable unused features via compile-time options.
    > 
    > This CL shrinks the Linux binary by 34KB (138,266,816 to 138,232,320).
    > Code savings aside, this makes sure we don't unintentionally start
    > depending on these features.
    > 
    > The following compile-time options are recommended in the SQLite
    > documentation [1]:
    > 
    > * SQLITE_LIKE_DOESNT_MATCH_BLOBS - The LIKE and GLOB operators don't
    >   work on BLOB columns. This access pattern would be a performance
    >   wrench, so it's nice to fail hard here.
    > * SQLITE_OMIT_DEPRECATED - This removes support for deprecated SQLite
    >   APIs. Note that SQLite promises to maintain indefinite backwards
    >   compatbility for SQL queries (modulo features disabled via
    >   compile-time options), so this only applies to the SQLite API. We
    >   should never be using deprecated APIs.
    > * SQLITE_OMIT_PROGRESS_CALLBACK - Remove sqlite3_progress_handler(). We
    >   don't use this feature, and the documentation says it comes with a
    >   small performance penalty.
    > * SQLITE_OMIT_SHARED_CACHE - Using a shared cache sounds nice from a
    >   memory consumption standpoint, and we already do that for LevelDB.
    >   Unfortunately, Chromium's SQLite databases use a variety of page
    >   sizes, which makes cache sharing impossible.
    > * SQLITE_USE_ALLOCA - Use alloca() instead of malloc() for allocating
    >   temporary spaces in functions. All of Chrome's platforms support this
    >   option, and it results in a slightly smaller binary and less heap churn.
    > 
    > The following compile-time options disable features that happen not to
    > be used.
    > 
    > * SQLITE_OMIT_AUTOINIT: We initialize SQLite manually in //sql/connection.cc.
    > * SQLITE_OMIT_AUTORESET: We calls sqlite3_reset() correctly to reset prepared
    >   statements.
    > * SQLITE_OMIT_GET_TABLE: We don't use sqlite3_{get,free}_table().
    > * SQLITE_OMIT_LOAD_EXTENSION: We don't use sqlite3_{enable_}load_extension().
    >   Asides from the code savings, there's a tiny security benefit to
    >   knowing that extension loading code is definitely not reachable from WebSQL.
    > * SQLITE_OMIT_TCL_VARIABLE: We don't use TCL variables.
    > * SQLITE_OMIT_TRACE: We don't use sqlite3_{profile,trace}().
    > 
    > Bug: 807093
    > Change-Id: Ie5e59e55dd9b2ed52f7c27682a809c9f7c36d4a3
    > Reviewed-on: https://chromium-review.googlesource.com/882961
    > Commit-Queue: Victor Costan <pwnall@chromium.org>
    > Reviewed-by: Chris Mumford <cmumford@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#532995}
    
    TBR=cmumford@chromium.org,pwnall@chromium.org
    
    Change-Id: Ib49bee7c6c815cafa9eef211c5dd154cd4dd2a8d
    No-Presubmit: true
    No-Tree-Checks: true
    No-Try: true
    Bug: 807093
    Reviewed-on: https://chromium-review.googlesource.com/894707Reviewed-by: default avatarVictor Costan <pwnall@chromium.org>
    Commit-Queue: Victor Costan <pwnall@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#533121}
    f24fdd9f
BUILD.gn 9.83 KB