Add sqlite error codes

This commit is contained in:
Folkert Kevelam 2025-07-26 22:38:24 +02:00
parent 984b74032a
commit 39da07a2cb

View File

@ -1,7 +1,23 @@
with Ada.Finalization; with Ada.Finalization;
with Interfaces.c; use Interfaces.c;
package Sqlite is package Sqlite is
type Statement is tagged private;
type Statement_Status is (
Row,
Done,
Busy
);
procedure Close (Stmt : in out Statement);
function Step (Stmt : in out Statement) return Statement_Status;
function Column (Stmt : in out Statement; Col : Int) return Int;
function Column (Stmt : in out Statement; Col : Int) return String;
type Database_Open is ( type Database_Open is (
ReadOnly, ReadOnly,
ReadWrite ReadWrite
@ -35,24 +51,33 @@ package Sqlite is
Expres_Code : Boolean := False; Expres_Code : Boolean := False;
No_Follow : Boolean := False); No_Follow : Boolean := False);
function Prepare (
Db : in out Database'Class;
SQL_Statement : String ) return Statement;
procedure Close (Db : in out Database); procedure Close (Db : in out Database);
private private
type Statement_Record_Int is null record;
type Statement_Int is access all Statement_Record_Int;
type Statement is tagged
record
Internal : Statement_Int := null;
end record;
type Database_Record_Int is null record; type Database_Record_Int is null record;
type Database_Int is access all Database_Record_Int; type Database_Int is access all Database_Record_Int;
type Database_Version is (v1, v2); type Database_Version is (v1, v2);
type Database is new Ada.Finalization.Controlled with type Database is tagged
record record
Internal : Database_Int; Internal : Database_Int;
Version : Database_Version; Version : Database_Version;
end record; end record;
overriding
procedure Finalize (Db : in out Database);
type Bit_10 is mod 2**10 type Bit_10 is mod 2**10
with Size => 10; with Size => 10;
@ -111,4 +136,220 @@ private
Reserved at 0 range 22 .. 31; Reserved at 0 range 22 .. 31;
end record; end record;
type Error_Codes is (
SQLITE_OK,
SQLITE_ERROR,
SQLITE_INTERNAL,
SQLITE_PERM,
SQLITE_ABORT,
SQLITE_BUSY,
SQLITE_LOCKED,
SQLITE_NOMEM,
SQLITE_READONLY,
SQLITE_INTERRUPT,
SQLITE_IOERR,
SQLITE_CORRUPT,
SQLITE_NOTFOUND,
SQLITE_FULL,
SQLITE_CANTOPEN,
SQLITE_PROTOCOL,
SQLITE_EMPTY,
SQLITE_SCHEMA,
SQLITE_TOOBIG,
SQLITE_CONSTRAINT,
SQLITE_MISMATCH,
SQLITE_MISUSE,
SQLITE_NOLFS,
SQLITE_AUTH,
SQLITE_FORMAT,
SQLITE_RANGE,
SQLITE_NOTADB,
SQLITE_NOTICE,
SQLITE_WARNING,
SQLITE_ROW,
SQLITE_DONE,
SQLITE_OK_LOAD_PERMANENTLY,
SQLITE_ERROR_MISSING_COLLSEQ,
SQLITE_BUSY_RECOVERY,
SQLITE_LOCKED_SHAREDCACHE,
SQLITE_READONLY_RECOVERY,
SQLITE_IOERR_READ,
SQLITE_CORRUPT_VTAB,
SQLITE_CANTOPEN_NOTEMPDIR,
SQLITE_CONSTRAINT_CHECK,
SQLITE_AUTH_USER,
SQLITE_NOTICE_RECOVER_WAL,
SQLITE_WARNING_AUTOINDEX,
SQLITE_ERROR_ENTRY,
SQLITE_ABORT_ROLLBACK,
SQLITE_BUSY_SNAPSHOT,
SQLITE_LOCKED_VTAB,
SQLITE_READONLY_CANTLOCK,
SQLITE_IOERR_SHORT_READ,
SQLITE_CORRUPT_SEQUENCE,
SQLITE_CANTOPEN_ISDIR,
SQLITE_CONSTRAINT_COMMITHOOK,
SQLITE_NOTICE_RECOVER_ROLLBACK,
SQLITE_ERROR_SNAPSHOT,
SQLITE_BUSY_TIMEOUT,
SQLITE_READONLY_ROLLBACK,
SQLITE_IOERR_WRITE,
SQLITE_CORRUPT_INDEX,
SQLITE_CANTOPEN_FULLPATH,
SQLITE_CONSTRAINT_FOREIGNKEY,
SQLITE_READONLY_DBMOVED,
SQLITE_IOERR_FSYNC,
SQLITE_CANTOPEN_CONVPATH,
SQLITE_CONSTRAINT_FUNCTION,
SQLITE_READONLY_CANTINIT,
SQLITE_IOERR_DIR_FSYNC,
SQLITE_CANTOPEN_DIRTYWAL,
SQLITE_CONSTRAINT_NOTNULL,
SQLITE_READONLY_DIRECTORY,
SQLITE_IOERR_TRUNCATE,
SQLITE_CANTOPEN_SYMLINK,
SQLITE_CONSTRAINT_PRIMARYKEY,
SQLITE_IOERR_FSTAT,
SQLITE_CONSTRAINT_TRIGGER,
SQLITE_IOERR_UNLOCK,
SQLITE_CONSTRAINT_UNIQUE,
SQLITE_IOERR_RDLOCK,
SQLITE_CONSTRAINT_VTAB,
SQLITE_IOERR_DELETE,
SQLITE_CONSTRAINT_ROWID,
SQLITE_IOERR_BLOCKED,
SQLITE_CONSTRAINT_PINNED,
SQLITE_IOERR_NOMEM,
SQLITE_CONSTRAINT_DATATYPE,
SQLITE_IOERR_ACCESS,
SQLITE_IOERR_CHECKRESERVEDLOCK,
SQLITE_IOERR_LOCK,
SQLITE_IOERR_CLOSE,
SQLITE_IOERR_DIR_CLOSE,
SQLITE_IOERR_SHMOPEN,
SQLITE_IOERR_SHMSIZE,
SQLITE_IOERR_SHMLOCK,
SQLITE_IOERR_SHMMAP,
SQLITE_IOERR_SEEK,
SQLITE_IOERR_DELETE_NOENT,
SQLITE_IOERR_MMAP,
SQLITE_IOERR_GETTEMPPATH,
SQLITE_IOERR_CONVPATH,
SQLITE_IOERR_VNODE,
SQLITE_IOERR_AUTH,
SQLITE_IOERR_BEGIN_ATOMIC,
SQLITE_IOERR_COMMIT_ATOMIC,
SQLITE_IOERR_ROLLBACK_ATOMIC,
SQLITE_IOERR_DATA,
SQLITE_IOERR_CORRUPTFS)
with Convention => C, Size => 32;
for Error_Codes use (
SQLITE_OK => 0,
SQLITE_ERROR => 1,
SQLITE_INTERNAL => 2,
SQLITE_PERM => 3,
SQLITE_ABORT => 4,
SQLITE_BUSY => 5,
SQLITE_LOCKED => 6,
SQLITE_NOMEM => 7,
SQLITE_READONLY => 8,
SQLITE_INTERRUPT => 9,
SQLITE_IOERR => 10,
SQLITE_CORRUPT => 11,
SQLITE_NOTFOUND => 12,
SQLITE_FULL => 13,
SQLITE_CANTOPEN => 14,
SQLITE_PROTOCOL => 15,
SQLITE_EMPTY => 16,
SQLITE_SCHEMA => 17,
SQLITE_TOOBIG => 18,
SQLITE_CONSTRAINT => 19,
SQLITE_MISMATCH => 20,
SQLITE_MISUSE => 21,
SQLITE_NOLFS => 22,
SQLITE_AUTH => 23,
SQLITE_FORMAT => 24,
SQLITE_RANGE => 25,
SQLITE_NOTADB => 26,
SQLITE_NOTICE => 27,
SQLITE_WARNING => 28,
SQLITE_ROW => 100,
SQLITE_DONE => 101,
SQLITE_OK_LOAD_PERMANENTLY => 256,
SQLITE_ERROR_MISSING_COLLSEQ => 257,
SQLITE_BUSY_RECOVERY => 261,
SQLITE_LOCKED_SHAREDCACHE => 262,
SQLITE_READONLY_RECOVERY => 264,
SQLITE_IOERR_READ => 266,
SQLITE_CORRUPT_VTAB => 267,
SQLITE_CANTOPEN_NOTEMPDIR => 270,
SQLITE_CONSTRAINT_CHECK => 275,
SQLITE_AUTH_USER => 279,
SQLITE_NOTICE_RECOVER_WAL => 283,
SQLITE_WARNING_AUTOINDEX => 284,
SQLITE_ERROR_ENTRY => 513,
SQLITE_ABORT_ROLLBACK => 516,
SQLITE_BUSY_SNAPSHOT => 517,
SQLITE_LOCKED_VTAB => 518,
SQLITE_READONLY_CANTLOCK => 520,
SQLITE_IOERR_SHORT_READ => 522,
SQLITE_CORRUPT_SEQUENCE => 523,
SQLITE_CANTOPEN_ISDIR => 526,
SQLITE_CONSTRAINT_COMMITHOOK => 531,
SQLITE_NOTICE_RECOVER_ROLLBACK => 539,
SQLITE_ERROR_SNAPSHOT => 769,
SQLITE_BUSY_TIMEOUT => 773,
SQLITE_READONLY_ROLLBACK => 776,
SQLITE_IOERR_WRITE => 778,
SQLITE_CORRUPT_INDEX => 779,
SQLITE_CANTOPEN_FULLPATH => 782,
SQLITE_CONSTRAINT_FOREIGNKEY => 787,
SQLITE_READONLY_DBMOVED => 1032,
SQLITE_IOERR_FSYNC => 1034,
SQLITE_CANTOPEN_CONVPATH => 1038,
SQLITE_CONSTRAINT_FUNCTION => 1043,
SQLITE_READONLY_CANTINIT => 1288,
SQLITE_IOERR_DIR_FSYNC => 1290,
SQLITE_CANTOPEN_DIRTYWAL => 1294,
SQLITE_CONSTRAINT_NOTNULL => 1299,
SQLITE_READONLY_DIRECTORY => 1544,
SQLITE_IOERR_TRUNCATE => 1546,
SQLITE_CANTOPEN_SYMLINK => 1550,
SQLITE_CONSTRAINT_PRIMARYKEY => 1555,
SQLITE_IOERR_FSTAT => 1802,
SQLITE_CONSTRAINT_TRIGGER => 1811,
SQLITE_IOERR_UNLOCK => 2058,
SQLITE_CONSTRAINT_UNIQUE => 2067,
SQLITE_IOERR_RDLOCK => 2314,
SQLITE_CONSTRAINT_VTAB => 2323,
SQLITE_IOERR_DELETE => 2570,
SQLITE_CONSTRAINT_ROWID => 2579,
SQLITE_IOERR_BLOCKED => 2826,
SQLITE_CONSTRAINT_PINNED => 2835,
SQLITE_IOERR_NOMEM => 3082,
SQLITE_CONSTRAINT_DATATYPE => 3091,
SQLITE_IOERR_ACCESS => 3338,
SQLITE_IOERR_CHECKRESERVEDLOCK => 3594,
SQLITE_IOERR_LOCK => 3850,
SQLITE_IOERR_CLOSE => 4106,
SQLITE_IOERR_DIR_CLOSE => 4362,
SQLITE_IOERR_SHMOPEN => 4618,
SQLITE_IOERR_SHMSIZE => 4874,
SQLITE_IOERR_SHMLOCK => 5130,
SQLITE_IOERR_SHMMAP => 5386,
SQLITE_IOERR_SEEK => 5642,
SQLITE_IOERR_DELETE_NOENT => 5898,
SQLITE_IOERR_MMAP => 6154,
SQLITE_IOERR_GETTEMPPATH => 6410,
SQLITE_IOERR_CONVPATH => 6666,
SQLITE_IOERR_VNODE => 6922,
SQLITE_IOERR_AUTH => 7178,
SQLITE_IOERR_BEGIN_ATOMIC => 7434,
SQLITE_IOERR_COMMIT_ATOMIC => 7690,
SQLITE_IOERR_ROLLBACK_ATOMIC => 7946,
SQLITE_IOERR_DATA => 8202,
SQLITE_IOERR_CORRUPTFS => 8458
);
end Sqlite; end Sqlite;