What Is New in SQLite 1
| Category | Description |
|---|---|
| Initial Release | The very first public version of the SQLite database engine. |
| Core Features | Basic SQL support including CREATE TABLE, INSERT, SELECT, UPDATE, and DELETE. |
| Transaction Support | Atomic commit and rollback capabilities using a transaction log. |
| API | The foundational C API for opening/closing databases and executing SQL statements. |
What core functionality did SQLite 1.0 introduce?
SQLite 1.0 established the fundamental architecture that the entire project is built upon. It provided a serverless, self-contained, zero-configuration SQL database engine. The core innovation was implementing atomic commit and rollback without a separate server process.
This initial version handled all the basics: creating tables, inserting data, and running queries. It used a custom disk format with a rollback journal to guarantee transaction atomicity even if the operating system crashed or power failed. The entire library was packed into a single C source file, making it incredibly easy to integrate into other projects.
How did the first version handle transactions?
Transaction integrity was the standout feature of this release. SQLite 1.0 used a rollback journal to achieve atomic commits. Before making changes, the original database pages were copied to a separate journal file.
If a commit succeeded, the journal was deleted. If anything went wrong during the transaction--like a program crash or power loss--the journal file remained. On the next database open, SQLite would detect the journal and use it to automatically roll back the incomplete changes, restoring the database to its pre-transaction state. This was a robust solution for embedded systems.
What was the API like in the initial release?
The C API was minimal and straightforward, focusing on the essential operations. You would use sqlite_open to connect to a database file and sqlite_close when finished. To execute SQL, you called sqlite_exec and provided a callback function to process the results of any SELECT queries.
This simple design meant developers could get a database up and running in their applications with just a few function calls. The entire API was contained within a single header file, aligning with the project's philosophy of simplicity and ease of deployment.
FAQ
Did SQLite 1.0 support multiple simultaneous writers?
No, the initial version used a coarse-grained lock on the entire database file. This meant that while one process was writing, all other processes were blocked from either reading or writing, limiting concurrency.
What SQL commands were available in version 1.0?
It supported the essential CRUD operations: CREATE TABLE, INSERT, SELECT, UPDATE, and DELETE. More advanced features like joins, aggregations, and ALTER TABLE were not part of this first release.
How was SQLite 1.0 distributed?
It was distributed as a single C source code file, sqlite.c, along with a header file. This made integration as simple as compiling the file directly into an application project.
Was the file format the same as modern SQLite?
No, the disk format has evolved significantly. The current format is not backward-compatible with the version 1.0 file format.
What platforms did it run on?
As a lightweight C library with minimal dependencies, it was designed to run on virtually any platform with an ANSI C compiler, including Unix and Windows.