Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Improved comments on the sqlar.c and compress.c extensions that describe the differences between the "zlib format" used by SQLAR, the raw deflate format used by ZIP, and the custom format used by compress.c. No changes to code. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
c13415c5caf06eaa73086c500907451d |
User & Date: | drh 2018-01-07 19:52:28.395 |
Context
2018-01-07
| ||
20:38 | Modify the sqltclsh startup script to look for a properly formatted SQLAR at the end of the executable. Fix the CLI so that it automatically links against appendvfs and so that the --append command-line option works. (check-in: 67c4a8c688 user: drh tags: trunk) | |
19:52 | Improved comments on the sqlar.c and compress.c extensions that describe the differences between the "zlib format" used by SQLAR, the raw deflate format used by ZIP, and the custom format used by compress.c. No changes to code. (check-in: c13415c5ca user: drh tags: trunk) | |
2018-01-06
| ||
21:46 | The shell detects and opens ZIP archives using the zipfile extension. (check-in: 05c99eb8ce user: drh tags: trunk) | |
Changes
Changes to ext/misc/compress.c.
︙ | ︙ | |||
23 24 25 26 27 28 29 30 31 32 33 34 35 36 | ** ** The output is a BLOB that begins with a variable-length integer that ** is the input size in bytes (the size of X before compression). The ** variable-length integer is implemented as 1 to 5 bytes. There are ** seven bits per integer stored in the lower seven bits of each byte. ** More significant bits occur first. The most significant bit (0x80) ** is a flag to indicate the end of the integer. */ static void compressFunc( sqlite3_context *context, int argc, sqlite3_value **argv ){ const unsigned char *pIn; | > > > > > > > > > > > > > > > | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | ** ** The output is a BLOB that begins with a variable-length integer that ** is the input size in bytes (the size of X before compression). The ** variable-length integer is implemented as 1 to 5 bytes. There are ** seven bits per integer stored in the lower seven bits of each byte. ** More significant bits occur first. The most significant bit (0x80) ** is a flag to indicate the end of the integer. ** ** This function, SQLAR, and ZIP all use the same "deflate" compression ** algorithm, but each is subtly different: ** ** * ZIP uses raw deflate. ** ** * SQLAR uses the "zlib format" which is raw deflate with a two-byte ** algorithm-identification header and a four-byte checksum at the end. ** ** * This utility uses the "zlib format" like SQLAR, but adds the variable- ** length integer uncompressed size value at the beginning. ** ** This function might be extended in the future to support compression ** formats other than deflate, by providing a different algorithm-id ** mark following the variable-length integer size parameter. */ static void compressFunc( sqlite3_context *context, int argc, sqlite3_value **argv ){ const unsigned char *pIn; |
︙ | ︙ |
Changes to ext/misc/sqlar.c.
︙ | ︙ | |||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 | /* ** Implementation of the "sqlar_compress(X)" SQL function. ** ** If the type of X is SQLITE_BLOB, and compressing that blob using ** zlib utility function compress() yields a smaller blob, return the ** compressed blob. Otherwise, return a copy of X. */ static void sqlarCompressFunc( sqlite3_context *context, int argc, sqlite3_value **argv ){ assert( argc==1 ); | > > > > > > > > | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | /* ** Implementation of the "sqlar_compress(X)" SQL function. ** ** If the type of X is SQLITE_BLOB, and compressing that blob using ** zlib utility function compress() yields a smaller blob, return the ** compressed blob. Otherwise, return a copy of X. ** ** SQLar uses the "zlib format" for compressed content. The zlib format ** contains a two-byte identification header and a four-byte checksum at ** the end. This is different from ZIP which uses the raw deflate format. ** ** Future enhancements to SQLar might add support for new compression formats. ** If so, those new formats will be identified by alternative headers in the ** compressed data. */ static void sqlarCompressFunc( sqlite3_context *context, int argc, sqlite3_value **argv ){ assert( argc==1 ); |
︙ | ︙ |