Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS import: src/external/public-domain/sqlite/dist



Module Name:    src
Committed By:   christos
Date:           Tue Apr 28 20:22:32 UTC 2026

Update of /cvsroot/src/external/public-domain/sqlite/dist
In directory ivanova.netbsd.org:/tmp/cvs-serv21642

Log Message:
Import Sqlite 3.53.0 (previous was 3.45.1)

Changes:

2026-04-09 (3.53.0)
* Fix: The WAL-reset database corruption bug.
* New Feature: Add the Query Result Formatter (QRF) library for formatting 
    the results of SQL queries for human readability on a fixed-pitch font 
    screen.
    * Add the format method to the TCL Interface so that QRF is accessible 
        from TCL.
    * QRF is used for result formatting in the CLI, resulting in improved 
        display capabilities.
* New SQL language features:
    * Enhance ALTER TABLE to permit adding and removing NOT NULL and 
        CHECK constraints.
    * The REINDEX EXPRESSIONS statement rebuilds expression indexes. 
        (Useful to repair stale expression indexes.)
    * The body of TEMP triggers may now modify and/or query tables in the 
        main schema.
    * Enhance VACUUM INTO so that if a URI filename is used as the target 
        and that filename has a reserve=N query parameter with N between 0 
        and 255, then the reserve amount for the generated database copy is 
        set to N.
* New SQL functions:
    * json_array_insert()
    * jsonb_array_insert()
* Renovations to the CLI:
    * Major enhancements to the .mode command.
    * Improved result formatting, due to the addition of the QRF extension. 
        For example, numeric values are now right-justified by default in 
        tabular output modes.
    * The default output mode for interactive CLI sessions now uses QRF to 
        display query results in boxes formed using Unicode box-drawing 
        characters, for improved legibility. Batch CLI sessions use the 
        legacy output format for compatibility.
    * Bare (unquoted) semicolons at the end of dot-commands are silently 
        ignored. <-- Potential incompatibility!
    * Fix the .testcase and .check commands so that they actually work, 
        and use those commands in scripts that are part of the standard 
        SQLite test suite included with the source tree.
    * Command-line arguments that match *.sql or *.txt and are the names 
        of non-empty files are read and interpreted as scripts of SQL 
        statements and/or dot-commands.
    * The argument to the ".timer" command can now be "once", to run the 
        timer on only the next SQL statement.
    * The new "--timeout S" option to the ".progress" dot-command causes SQL 
        statements to interrupt after S seconds.
    * The ".indexes" command was changed so that the PATTERN argument 
        matches the name of the index, not the name of the table being 
        indexed (thus making the PATTERN argument actually useful). And, 
        several new options were added to ".indexes".
* New C-language interfaces:
    * sqlite3_str_truncate()
    * sqlite3_str_free()
    * sqlite3_carray_bind_v2()
    * Add the SQLITE_PREPARE_FROM_DDL option to sqlite3_prepare_v3() 
        which permits virtual table implementations to safely prepare SQL 
        statements that are derived from the database schema.
    * Added the SQLITE_UTF8_ZT constant which can be used as the encoding 
        parameter to sqlite3_result_text64() or sqlite3_bind_text64() to 
        indicate that the value is UTF-8 encoded and zero terminated.
    * The SQLITE_LIMIT_PARSER_DEPTH option is added to sqlite3_limit().
    * The SQLITE_DBCONFIG_FP_DIGITS option is added to 
        sqlite3_db_config().
* Query planner improvements:
    * Always use a sort-and-merge algorithm for EXCEPT, INTERSECT, and 
        UNION, since this is almost always faster than using a hash table.
    * Improvements to join order selection in large multi-way joins on a 
        star schema.
    * Enhance the EXISTS-to-JOIN optimization so that the inserted JOIN 
        terms are not required to be on the inner-most loops, as long as all 
        dependencies for the EXISTS-to-JOIN loops are in outer loops.
    * Enhance the omit-noop-join optimization so that it is able to omit 
        a chain of joins that do not affect the output.
    * Allow queries that use "GROUP BY e1 ORDER BY e2" where e1 and e2 are 
        identical apart from ASC/DESC sort-orders to be optimized using a 
        single index.
    * Allow virtual tables to optimize DISTINCT in cases where the 
        result-set of a query does not exactly match the ORDER BY clause.
* Session extension: Add new interfaces that enable an application to 
    add changes one at a time to the sqlite3_changegroup object:
    * sqlite3changegroup_change_begin()
    * sqlite3changegroup_change_blob()
    * sqlite3changegroup_change_double()
    * sqlite3changegroup_change_int64()
    * sqlite3changegroup_change_null()
    * sqlite3changegroup_change_text()
    * sqlite3changegroup_change_finish()
    * sqlite3changegroup_config()
* Improvements to floating-point <-> text conversions:
    * Reimplemented to improve performance.
    * Rounding is now done by default to 17 significant digits, instead of 
        15, as was the case for all prior versions. The 
        sqlite3_db_config(SQLITE_DBCONFIG_FP_DIGITS) API can change this.
* Additional Fixes:
    * Added the self-healing index feature to deal with the stale expression 
        index problem.
    * Add the "-p|--port" option to sqlite3_rsync.
    * Discontinue support for Windows RT.
* JavaScript/WASM:
    * Add the "opfs-wl" VFS, functionally identical to the "opfs" VFS but 
        using Web Locks for locking, which can promise fairer lock sharing 
        than the "opfs" bespoke protocol can. "opfs-wl" requires 
        Atomics.waitAsync(), so requires newer browsers than "opfs" does.

Hashes:
* SQLITE_SOURCE_ID: 2026-04-09 11:41:38 
    4525003a53a7fc63ca75c59b22c79608659ca12f0131f52c18637f829977f20b
* SHA3-256 for sqlite3.c: bb317fbbd2b3bc53233ddd5894bf4d2dc6f533445f350d4235db
    cc86f65af4ec

---

2026-03-13 (3.51.3)
* Fix: The WAL-reset database corruption bug.
* Other minor bug fixes.

Hashes:
* SQLITE_SOURCE_ID: 2026-03-13 10:38:09 
    737ae4a34738ffa0c3ff7f9bb18df914dd1cad163f28fd6b6e114a344fe6d618
* SHA3-256 for sqlite3.c: 32d5424f97e0a7fc5ed2f6335afbb58be4e0298bd7117a34e39d3
    45ff13d859e

---

2026-03-06 (3.52.0)
* Withdrawn: All features originally scheduled for 3.52.0 moved into 3.53.0.

---

2026-01-09 (3.51.2)
* Fix: An obscure deadlock in the new broken-posix-lock detection logic.
* Fix: Multiple problems in the EXISTS-to-JOIN optimization.
* Other minor bug fixes.

Hashes:
* SQLITE_SOURCE_ID: 2026-01-09 17:27:48 
    b270f8339eb13b504d0b2ba154ebca966b7dde08e40c3ed7d559749818cb2075
* SHA3-256 for sqlite3.c: 733b3fcc6cccb1e334424b9b91a9d68b618385b76ebfcbb106690
    bd3a9e61367

---

2025-11-28 (3.51.1)
* Fix: Incorrect results from nested EXISTS queries (from 3.51.0).
* Fix: A latent bug in fts5vocab virtual table.

Hashes:
* SQLITE_SOURCE_ID: 2025-11-28 17:28:25 
    281fc0e9afc38674b9b0991943b9e9d1e64c6cbdb133d35f6f5c87ff6af38a88
* SHA3-256 for sqlite3.c: 7cec3a104797bea93970408168197af37f178ab608ea55efd48d
    28daa87a8ce3

---

2025-11-04 (3.51.0)
* New macros in sqlite3.h:
    * SQLITE_SCM_BRANCH -> name of the branch.
    * SQLITE_SCM_TAGS -> space-separated list of tags.
    * SQLITE_SCM_DATETIME -> ISO-8601 check-in date/time.
* JSON: jsonb_each() and jsonb_tree() added; return JSONB for 
    'array' or 'object'.
* Extensions: carray and percentile are now built into the 
    amalgamation (disabled by default).
* TCL Interface:
    * Add -asdict flag to the eval command.
    * User-defined functions may now break to return an SQL NULL.
* CLI enhancements:
    * Increase .timer precision to microseconds.
    * Enhance "box" and "column" modes for double-wide characters.
    * .imposter command for read-only imposter tables with VACUUM.
    * Add --ifexists to CLI and .open command.
    * Limit column widths in .width to 30,000.
* Performance:
    * Use fewer CPU cycles to commit a read transaction.
    * Early detection of joins with no rows.
    * Avoid evaluation of scalar subqueries if they don't change the 
        overall result.
    * Faster window function queries for BETWEEN :x FOLLOWING AND :y 
        FOLLOWING.
* New APIs/Commands:
    * PRAGMA wal_checkpoint=NOOP;
    * sqlite3_set_errmsg()
    * sqlite3_db_status64() (64-bit version).
    * SQLITE_DBSTATUS_TEMPBUF_SPILL option.
    * sqlite3changeset_apply_v3() for sessions.
* printf() / format(): Omit leading '-' from negative floats if '+' 
    flag is omitted, '#' is present, and all displayed digits are 
    '0'. Use '%#f' or similar to avoid outputs like '-0.00' and instead show 
    just '0.00'.
* Other:
    * Improved error messages for FTS5.
    * Enforce STRICT typing on computed columns.
    * Improved support for VxWorks.
    * JavaScript/WASM supports 64-bit WASM.
    * Resistance to corruption from breaking Posix advisory locks using 
        close().

Hashes:
* SQLITE_SOURCE_ID: 2025-11-04 19:38:17 
    fb2c931ae597f8d00a37574ff67aeed3eced4e5547f9120744ae4bfa8e74527b
* SHA3-256 for sqlite3.c: e2add951748f73587cadd1b2684defb4f39fa58dca14b16162d4
    237e50af9afa

---

2025-07-30 (3.50.4)
* Fix: Two cases of uninitialized variables in obscure circumstances.

Hashes:
* SQLITE_SOURCE_ID: 2025-07-30 19:33:53 
    4d8adfb30e03f9cf27f800a2c1ba3c48fb4ca1b08b0f5ed59a4d5ecbf45e20a3
* SHA3-256 for sqlite3.c: 9145255e83da6529e70121ee4d7a4c88fe83ca4511da0c9ed13d
    10842df36782

---

2025-07-17 (3.50.3)
* Fix: Memory error if FTS5 index is deliberately corrupted.
* Fix: Parser now ignores SQL comments in CREATE TRIGGER.
* Fix: Incorrect answer due to over-optimization of AND operator.
* Fix minor makefile issues and documentation typos.

Hashes:
* SQLITE_SOURCE_ID: 2025-07-17 13:25:10 
    3ce993b8657d6d9deda380a93cdd6404a8c8ba1b185b2bc423703e41ae5f2543
* SHA3-256 for sqlite3.c: 934fafe96caa7f4c16e82e0c2b674441a715c038acc9780bf15e
    09411daba70c

---

2025-06-28 (3.50.2)
* Fix: concat_ws() now includes empty strings.
* Fix: File-io extension can now be built with MinGW.
* Fix: Avoid writing frames with no checksums into the WAL file on 
    savepoint rollback.
* Fix: Bitvec object to avoid stack overflow near max database size.
* Fix: UPDATEs on fts5 tables containing BLOB values.
* Fix: Transitive IS constraints on a RIGHT JOIN.
* Fix: Early error if aggregate terms exceed max columns.
* Ensure sqlite3_setlk_timeout() holds the database mutex.

Hashes:
* SQLITE_SOURCE_ID: 2025-06-28 14:00:48 
    2af157d77fb1304a74176eaee7fbc7c7e932d946bf25325e9c26c91db19e3079
* SHA3-256 for sqlite3.c: 889bf23942c52f38a6f182e71d3f0a03db490fd731f02147b114
    2c11153f3b3a

---

2025-06-06 (3.50.1)
* Fix: Bug in jsonb_set() exposed by 3.50.0 optimizations.
* Fix: Harmless ASAN warning with -DSQLITE_DEFAULT_MEMSTATUS=0.
* Fix: Off-by-one bug in sqlite3_rsync.
* Optimization: Allow right-hand side of a LEFT JOIN to be flattened 
    even if it is a virtual table.
* Fix: sqlite3_setlk_timeout() to use a blocking lock when opening a 
    snapshot.

Hashes:
* SQLITE_SOURCE_ID: 2025-06-06 14:52:32 
    b77dc5e0f596d2140d9ac682b2893ff65d3a4140aa86067a3efebe29dc914c95
* SHA3-256 for sqlite3.c: c3bdffa01dab94be370bdcaeb819cda4a6e0c61f0c6e19a6f94c
    cba76fc9eeca

---

2025-05-29 (3.50.0)
* New API: sqlite3_setlk_timeout() for blocking locks.
* DBCONFIG: SQLITE_DBCONFIG_ENABLE_COMMENTS relaxed; comments always 
    allowed when reading schema.
* New SQL functions: unistr(), unistr_quote().
* printf() / format(): Alternate-form-1 flag (#) converts control 
    chars into backslash-escapes for unistr().
* CLI enhancements:
    * Avoids direct output of control characters.
    * .dump uses unistr() to encode special characters.
    * Better formatting of partial indexes in .schema --indent.
* sqlite3_rsync:
    * Requirement for WAL mode removed.
    * Protocol uses less bandwidth for similar files.
    * Works on Macs without full remote path if installed in $HOME/bin, 
        etc.
* JSON functions:
    * Enforce JSON5 restriction: \0 escape not followed by a digit.
    * json_group_object(): NULL labels are now omitted.
    * jsonb_set() / jsonb_replace(): Optimized for interior changes to 
        reduce I/O.
* JavaScript/WASM: Fix filename digest calculation bug in OPFS SAHPool 
    VFS.

Hashes:
* SQLITE_SOURCE_ID: 2025-05-29 14:26:00 
    dfc790f998f450d9c35e3ba1c8c89c17466cb559f87b0239e4aab9d34e28f742
* SHA3-256 for sqlite3.c: b8a2bcdd2ec60f87c3bbe7a2c25eb65e476e40fe80cd066ab8aa
    98e5d516c1e4

---

2025-05-07 (3.49.2)
* Fix: NOT NULL optimization bug from 3.40.0.
* Fix: count-of-view optimization for DISTINCT queries.
* Fix: Incorrect answer when UNIQUE constraint contains the 
    PRIMARY KEY column and used by an IN operator.
* Fix: Obscure problems with generate_series().

Hashes:
* SQLITE_SOURCE_ID: 2025-05-07 10:39:52 
    17144570b0d96ae63cd6f3edca39e27ebd74925252bbaf6723bcb2f6b4861fb1
* SHA3-256 for sqlite3.c: 17f4857fc6a0def2749d248d5365c59282c044270533c6c2b212
    87295f01eb23

---

2025-02-18 (3.49.1)
* Fix: concat_ws() bug (from 3.44.0) causing memory error with 
    separators > 2MB.
* Enhanced the SQLITE_DBCONFIG_LOOKASIDE interface.

Hashes:
* SQLITE_SOURCE_ID: 2025-02-18 13:38:58 
    873d4e274b4988d260ba8354a9718324a1c26187a4ab4c1cc0227c03d0f10e70
* SHA3-256 for sqlite3.c: 22eab05c842463a3705c63922f12f68531200185ced510ed6aed
    2065ca44e816

---

2025-02-06 (3.49.0)
* Query planner:
    * Query-time index optimization for WITHOUT ROWID tables.
    * Better plans for large star-query joins.
    * Tie-break equal costs using fewer bytes per row.
* SQL functions: iif() now accepts any number of arguments >= 2.
* Session extension: Now works on generated columns.
* CLI: Added SQLITE_USE_W32_FOR_CONSOLE_IO for Windows console builds.
* New sqlite3_db_config() options:
    * SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE
    * SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE
    * SQLITE_DBCONFIG_ENABLE_COMMENTS
* Build System: Replace Autotools with Autosetup for the amalgamation 
    tarball configure script.

Hashes:
* SQLITE_SOURCE_ID: 2025-02-06 11:55:18 
    4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde
* SHA3-256 for sqlite3.c: 030c764eba64a3fa3bbf87447abd175bfef94851f970d62126a9
    2877b30b611e

---

2025-01-14 (3.48.0)
* Build System: Refactor canonical "configure" to use Autosetup. TCL is 
    no longer required for most build targets. Build dependencies reduced to 
    C compiler and make/nmake.
* EXPLAIN: Improved output for covering indexes.
* SQL functions: Two-argument iif() or if() spelling.
* CLI: Added .dbtotxt command.
* VFS: Added SQLITE_IOCAP_SUBPAGE_READ and SQLITE_FCNTL_NULL_IO.
* sqlite3_prepare_v3(): Added SQLITE_PREPARE_DONT_LOG to check 
    validity silently.
* FTS5: Extended xInstToken() for prefix queries.
* Limits:
    * Increase min SQLITE_LIMIT_LENGTH from 1 to 30.
    * Increase max arguments to an SQL function from 127 to 1000.
* Remove vestigial SQLITE_USER_AUTHENTICATION.

Hashes:
* SQLITE_SOURCE_ID: 2025-01-14 11:05:00 
    d2fe6b05f38d9d7cd78c5d252e99ac59f1aea071d669830c1ffe4e8966e84010
* SHA3-256 for sqlite3.c: 522bd9492526147d12fc8521028eb960557353d8f08c2035f15a
    c737d4b91e21

---

2024-12-07 (3.47.2)
* Fix: Numeric conversion error for specific values starting with 
    '1844674407370955' on x64/i386 hardware (introduced in 3.47.0).

Hashes:
* SQLITE_SOURCE_ID: 2024-12-07 20:39:59 
    2aabe05e2e8cae4847a802ee2daddc1d7413d8fc560254d93ee3e72c14685b6c
* SHA3-256 for sqlite3.c: 586b5789453ee5c51e8d858cd836f20ce60df882323f2070547c
    baf23a5898af

---

2024-11-25 (3.47.1)
* Fix: Makefiles now honor DESTDIR.
* Fix: Line endings in sqlite3_rsync.exe on Windows.
* Fix: Incorrect answers for obscure IN queries (from 3.47.0).

Hashes:
* SQLITE_SOURCE_ID: 2024-11-25 12:07:48 
    b95d11e958643b969c47a8e5857f3793b9e69700b8f1469371386369a26e577e
* SHA3-256 for sqlite3.c: d91b8b5671a127bd41057bc758d6d59fb7aceda67934a1c0166a
    b2e133f2f902

---

2024-10-21 (3.47.0)
* SQL: Arbitrary expressions in 2nd argument to RAISE().
* JSON: Negative RHS to ->> counts array elements from the right.
* FTS5: Tables can be dropped even if the tokenizer is unregistered.
* group_concat(): Returns empty string (not NULL) for single empty 
    string input.
* Performance:
    * Bloom filter on subqueries for IN operator.
    * "order-by-subquery" optimization.
    * "indexed-subtype-expr" optimization.
* CLI: Added sqlite3_rsync, .www, and math functions (median(), 
    percentile()).
* Long Double: SQLite no longer uses the long double type; uses 
    Dekker's algorithm for precision instead.
* TCL Interface: Supports TCL9.

Hashes:
* SQLITE_SOURCE_ID: 2024-10-21 16:30:22 
    03a9703e27c44437c39363d0baf82db4ebc94538a0f28411c85dda156f82636e
* SHA3-256 for sqlite3.c: bcec3a4fbc97e973547924677332996ef64e06a6d10d22e2c234
    4f447536cc29

---

2024-08-13 (3.46.1)
* Fix: Robustness in FTS5 tokenize= parsing.
* Query Planner: Early detection of covering index over-prediction.
* Fix: VALUES clause terms not limited by 
    SQLITE_LIMIT_COMPOUND_SELECT.
* JavaScript/WASM: Fix corruption-causing bug in "opfs" VFS.

Hashes:
* SQLITE_SOURCE_ID: 2024-08-13 09:16:08 
    c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69a1e33
* SHA3-256 for sqlite3.c: 186a1baa476b6d546de155160ca6d30ff7b7e6ee375f0bb6445e
    1a3d180a7dad

---

2024-05-23 (3.46.0)
* PRAGMA optimize:
    * Automatically implements analysis limits.
    * New 0x10000 bitmask to check all tables.
* Date/Time: strftime() supports %G, %g, %U, %V. New modifiers 
    'ceiling' and 'floor'.
* JSON: Added json_pretty().
* Numeric Literals: Support for underscores (_) between digits.
* Query planner: "VALUES-as-coroutine" optimization for thousands of 
    rows.
* Parser: Stack overflows now allocate from heap rather than erroring 
    out.

Hashes:
* SQLITE_SOURCE_ID: 2024-05-23 13:25:27 96c92aba00c

Status:

Vendor Tag:     SQLITE
Release Tags:   sqlite-3-53-0
                
C src/external/public-domain/sqlite/dist/sqlite3.c
U src/external/public-domain/sqlite/dist/sqlite3.rc
U src/external/public-domain/sqlite/dist/Makefile.msc
C src/external/public-domain/sqlite/dist/sqlite3.1
N src/external/public-domain/sqlite/dist/auto.def
U src/external/public-domain/sqlite/dist/Makefile.in
N src/external/public-domain/sqlite/dist/VERSION
U src/external/public-domain/sqlite/dist/Makefile.fallback
N src/external/public-domain/sqlite/dist/make.bat
C src/external/public-domain/sqlite/dist/shell.c
U src/external/public-domain/sqlite/dist/sqlite3.h
U src/external/public-domain/sqlite/dist/README.txt
U src/external/public-domain/sqlite/dist/sqlite3ext.h
U src/external/public-domain/sqlite/dist/configure
U src/external/public-domain/sqlite/dist/Replace.cs
U src/external/public-domain/sqlite/dist/sqlite3rc.h
U src/external/public-domain/sqlite/dist/sqlite3.pc.in
N src/external/public-domain/sqlite/dist/autosetup/jimsh0.c
N src/external/public-domain/sqlite/dist/autosetup/find_tclconfig.tcl
N src/external/public-domain/sqlite/dist/autosetup/system.tcl
N src/external/public-domain/sqlite/dist/autosetup/pkg-config.tcl
N src/external/public-domain/sqlite/dist/autosetup/autosetup-config.sub
N src/external/public-domain/sqlite/dist/autosetup/cc.tcl
N src/external/public-domain/sqlite/dist/autosetup/LICENSE
N src/external/public-domain/sqlite/dist/autosetup/autosetup
N src/external/public-domain/sqlite/dist/autosetup/sqlite-config.tcl
N src/external/public-domain/sqlite/dist/autosetup/proj.tcl
N src/external/public-domain/sqlite/dist/autosetup/cc-db.tcl
N src/external/public-domain/sqlite/dist/autosetup/README.autosetup
N src/external/public-domain/sqlite/dist/autosetup/cc-lib.tcl
N src/external/public-domain/sqlite/dist/autosetup/autosetup-config.guess
N src/external/public-domain/sqlite/dist/autosetup/autosetup-test-tclsh
N src/external/public-domain/sqlite/dist/autosetup/README.md
N src/external/public-domain/sqlite/dist/autosetup/autosetup-find-tclsh
N src/external/public-domain/sqlite/dist/autosetup/cc-shared.tcl
N src/external/public-domain/sqlite/dist/autosetup/teaish/core.tcl
N src/external/public-domain/sqlite/dist/autosetup/teaish/feature.tcl
N src/external/public-domain/sqlite/dist/autosetup/teaish/README.txt
N src/external/public-domain/sqlite/dist/autosetup/teaish/tester.tcl
N src/external/public-domain/sqlite/dist/tea/teaish.tcl
N src/external/public-domain/sqlite/dist/tea/auto.def
N src/external/public-domain/sqlite/dist/tea/teaish.test.tcl
U src/external/public-domain/sqlite/dist/tea/Makefile.in
N src/external/public-domain/sqlite/dist/tea/README.txt
N src/external/public-domain/sqlite/dist/tea/_teaish.tester.tcl.in
U src/external/public-domain/sqlite/dist/tea/pkgIndex.tcl.in
U src/external/public-domain/sqlite/dist/tea/configure
U src/external/public-domain/sqlite/dist/tea/license.terms
U src/external/public-domain/sqlite/dist/tea/generic/tclsqlite3.c

3 conflicts created by this import.
Use the following command to help the merge:

        cvs checkout -jSQLITE:yesterday -jSQLITE src/external/public-domain/sqlite/dist




Home | Main Index | Thread Index | Old Index