|
@@ -1,34 +1,100 @@
|
|
|
DEFINITION MODULE FOR "C" SQLite;
|
|
DEFINITION MODULE FOR "C" SQLite;
|
|
|
-(* Minimal first SQLite binding: open an in-memory database, execute SQL,
|
|
|
|
|
- and close it. The full binding stays in m2SQLITE for later porting. *)
|
|
|
|
|
|
|
+(* Scalar SQLite binding: connection setup, prepared statements,
|
|
|
|
|
+ scalar binding/results, column metadata and error reporting.
|
|
|
|
|
+ The full binding stays in m2SQLITE for later porting. *)
|
|
|
|
|
|
|
|
FROM SYSTEM IMPORT ADDRESS;
|
|
FROM SYSTEM IMPORT ADDRESS;
|
|
|
FROM CStr IMPORT CString;
|
|
FROM CStr IMPORT CString;
|
|
|
|
|
|
|
|
EXPORT UNQUALIFIED
|
|
EXPORT UNQUALIFIED
|
|
|
- SQLiteOk, SQLiteRow, SQLiteDone,
|
|
|
|
|
|
|
+ SQLiteOk, SQLiteError, SQLiteInternal, SQLitePerm, SQLiteAbort,
|
|
|
|
|
+ SQLiteBusy, SQLiteLocked, SQLiteNoMem, SQLiteReadOnly,
|
|
|
|
|
+ SQLiteInterrupt, SQLiteIoErr, SQLiteCorrupt, SQLiteNotFound,
|
|
|
|
|
+ SQLiteFull, SQLiteCantOpen, SQLiteProtocol, SQLiteEmpty,
|
|
|
|
|
+ SQLiteSchema, SQLiteTooBig, SQLiteConstraint, SQLiteMismatch,
|
|
|
|
|
+ SQLiteMisuse, SQLiteNoLfs, SQLiteAuth, SQLiteFormat, SQLiteRange,
|
|
|
|
|
+ SQLiteNotADb, SQLiteNotice, SQLiteWarning, SQLiteRow, SQLiteDone,
|
|
|
|
|
+ SQLiteInteger, SQLiteFloat, SQLiteText, SQLiteBlob, SQLiteNull,
|
|
|
|
|
+ SQLiteConstraintPrimaryKey, SQLiteConstraintUnique,
|
|
|
sqlite3_open,
|
|
sqlite3_open,
|
|
|
sqlite3_exec,
|
|
sqlite3_exec,
|
|
|
sqlite3_close,
|
|
sqlite3_close,
|
|
|
sqlite3_prepare_v2,
|
|
sqlite3_prepare_v2,
|
|
|
sqlite3_bind_int,
|
|
sqlite3_bind_int,
|
|
|
|
|
+ sqlite3_bind_int64,
|
|
|
|
|
+ sqlite3_bind_double,
|
|
|
|
|
+ sqlite3_bind_null,
|
|
|
sqlite3_bind_text,
|
|
sqlite3_bind_text,
|
|
|
sqlite3_step,
|
|
sqlite3_step,
|
|
|
|
|
+ sqlite3_reset,
|
|
|
|
|
+ sqlite3_clear_bindings,
|
|
|
|
|
+ sqlite3_column_count,
|
|
|
|
|
+ sqlite3_data_count,
|
|
|
|
|
+ sqlite3_column_type,
|
|
|
|
|
+ sqlite3_column_bytes,
|
|
|
sqlite3_column_int,
|
|
sqlite3_column_int,
|
|
|
|
|
+ sqlite3_column_int64,
|
|
|
|
|
+ sqlite3_column_double,
|
|
|
sqlite3_column_text,
|
|
sqlite3_column_text,
|
|
|
|
|
+ sqlite3_column_name,
|
|
|
|
|
+ sqlite3_column_decltype,
|
|
|
sqlite3_finalize,
|
|
sqlite3_finalize,
|
|
|
|
|
+ sqlite3_errmsg,
|
|
|
|
|
+ sqlite3_errstr,
|
|
|
|
|
+ sqlite3_errcode,
|
|
|
|
|
+ sqlite3_extended_errcode,
|
|
|
|
|
+ sqlite3_extended_result_codes,
|
|
|
|
|
+ sqlite3_free,
|
|
|
SQLiteTransient;
|
|
SQLiteTransient;
|
|
|
|
|
|
|
|
CONST
|
|
CONST
|
|
|
SQLiteOk = 0;
|
|
SQLiteOk = 0;
|
|
|
|
|
+ SQLiteError = 1;
|
|
|
|
|
+ SQLiteInternal = 2;
|
|
|
|
|
+ SQLitePerm = 3;
|
|
|
|
|
+ SQLiteAbort = 4;
|
|
|
|
|
+ SQLiteBusy = 5;
|
|
|
|
|
+ SQLiteLocked = 6;
|
|
|
|
|
+ SQLiteNoMem = 7;
|
|
|
|
|
+ SQLiteReadOnly = 8;
|
|
|
|
|
+ SQLiteInterrupt = 9;
|
|
|
|
|
+ SQLiteIoErr = 10;
|
|
|
|
|
+ SQLiteCorrupt = 11;
|
|
|
|
|
+ SQLiteNotFound = 12;
|
|
|
|
|
+ SQLiteFull = 13;
|
|
|
|
|
+ SQLiteCantOpen = 14;
|
|
|
|
|
+ SQLiteProtocol = 15;
|
|
|
|
|
+ SQLiteEmpty = 16;
|
|
|
|
|
+ SQLiteSchema = 17;
|
|
|
|
|
+ SQLiteTooBig = 18;
|
|
|
|
|
+ SQLiteConstraint = 19;
|
|
|
|
|
+ SQLiteMismatch = 20;
|
|
|
|
|
+ SQLiteMisuse = 21;
|
|
|
|
|
+ SQLiteNoLfs = 22;
|
|
|
|
|
+ SQLiteAuth = 23;
|
|
|
|
|
+ SQLiteFormat = 24;
|
|
|
|
|
+ SQLiteRange = 25;
|
|
|
|
|
+ SQLiteNotADb = 26;
|
|
|
|
|
+ SQLiteNotice = 27;
|
|
|
|
|
+ SQLiteWarning = 28;
|
|
|
SQLiteRow = 100;
|
|
SQLiteRow = 100;
|
|
|
SQLiteDone = 101;
|
|
SQLiteDone = 101;
|
|
|
|
|
|
|
|
|
|
+ SQLiteInteger = 1;
|
|
|
|
|
+ SQLiteFloat = 2;
|
|
|
|
|
+ SQLiteText = 3;
|
|
|
|
|
+ SQLiteBlob = 4;
|
|
|
|
|
+ SQLiteNull = 5;
|
|
|
|
|
+
|
|
|
|
|
+ SQLiteConstraintPrimaryKey = 1555;
|
|
|
|
|
+ SQLiteConstraintUnique = 2067;
|
|
|
|
|
+
|
|
|
PROCEDURE sqlite3_open (filename : ARRAY OF CHAR;
|
|
PROCEDURE sqlite3_open (filename : ARRAY OF CHAR;
|
|
|
VAR db : ADDRESS) : INTEGER;
|
|
VAR db : ADDRESS) : INTEGER;
|
|
|
PROCEDURE sqlite3_exec (db : ADDRESS;
|
|
PROCEDURE sqlite3_exec (db : ADDRESS;
|
|
|
sql : ARRAY OF CHAR;
|
|
sql : ARRAY OF CHAR;
|
|
|
- callback, arg, errmsg : ADDRESS) : INTEGER;
|
|
|
|
|
|
|
+ callback, arg : ADDRESS;
|
|
|
|
|
+ VAR errmsg : ADDRESS) : INTEGER;
|
|
|
PROCEDURE sqlite3_close (db : ADDRESS) : INTEGER;
|
|
PROCEDURE sqlite3_close (db : ADDRESS) : INTEGER;
|
|
|
|
|
|
|
|
PROCEDURE sqlite3_prepare_v2 (db : ADDRESS;
|
|
PROCEDURE sqlite3_prepare_v2 (db : ADDRESS;
|
|
@@ -39,18 +105,51 @@ PROCEDURE sqlite3_prepare_v2 (db : ADDRESS;
|
|
|
PROCEDURE sqlite3_bind_int (stmt : ADDRESS;
|
|
PROCEDURE sqlite3_bind_int (stmt : ADDRESS;
|
|
|
idx : INTEGER;
|
|
idx : INTEGER;
|
|
|
value : INTEGER) : INTEGER;
|
|
value : INTEGER) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_bind_int64 (stmt : ADDRESS;
|
|
|
|
|
+ idx : INTEGER;
|
|
|
|
|
+ value : LONGINT) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_bind_double (stmt : ADDRESS;
|
|
|
|
|
+ idx : INTEGER;
|
|
|
|
|
+ value : REAL) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_bind_null (stmt : ADDRESS;
|
|
|
|
|
+ idx : INTEGER) : INTEGER;
|
|
|
PROCEDURE sqlite3_bind_text (stmt : ADDRESS;
|
|
PROCEDURE sqlite3_bind_text (stmt : ADDRESS;
|
|
|
idx : INTEGER;
|
|
idx : INTEGER;
|
|
|
value : ARRAY OF CHAR;
|
|
value : ARRAY OF CHAR;
|
|
|
nBytes : INTEGER;
|
|
nBytes : INTEGER;
|
|
|
destructor : ADDRESS) : INTEGER;
|
|
destructor : ADDRESS) : INTEGER;
|
|
|
PROCEDURE sqlite3_step (stmt : ADDRESS) : INTEGER;
|
|
PROCEDURE sqlite3_step (stmt : ADDRESS) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_reset (stmt : ADDRESS) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_clear_bindings (stmt : ADDRESS) : INTEGER;
|
|
|
|
|
+
|
|
|
|
|
+PROCEDURE sqlite3_column_count (stmt : ADDRESS) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_data_count (stmt : ADDRESS) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_column_type (stmt : ADDRESS;
|
|
|
|
|
+ col : INTEGER) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_column_bytes (stmt : ADDRESS;
|
|
|
|
|
+ col : INTEGER) : INTEGER;
|
|
|
PROCEDURE sqlite3_column_int (stmt : ADDRESS;
|
|
PROCEDURE sqlite3_column_int (stmt : ADDRESS;
|
|
|
col : INTEGER) : INTEGER;
|
|
col : INTEGER) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_column_int64 (stmt : ADDRESS;
|
|
|
|
|
+ col : INTEGER) : LONGINT;
|
|
|
|
|
+PROCEDURE sqlite3_column_double (stmt : ADDRESS;
|
|
|
|
|
+ col : INTEGER) : REAL;
|
|
|
PROCEDURE sqlite3_column_text (stmt : ADDRESS;
|
|
PROCEDURE sqlite3_column_text (stmt : ADDRESS;
|
|
|
col : INTEGER) : CString;
|
|
col : INTEGER) : CString;
|
|
|
|
|
+PROCEDURE sqlite3_column_name (stmt : ADDRESS;
|
|
|
|
|
+ col : INTEGER) : CString;
|
|
|
|
|
+PROCEDURE sqlite3_column_decltype (stmt : ADDRESS;
|
|
|
|
|
+ col : INTEGER) : CString;
|
|
|
PROCEDURE sqlite3_finalize (stmt : ADDRESS) : INTEGER;
|
|
PROCEDURE sqlite3_finalize (stmt : ADDRESS) : INTEGER;
|
|
|
|
|
|
|
|
|
|
+PROCEDURE sqlite3_errmsg (db : ADDRESS) : CString;
|
|
|
|
|
+PROCEDURE sqlite3_errstr (code : INTEGER) : CString;
|
|
|
|
|
+PROCEDURE sqlite3_errcode (db : ADDRESS) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_extended_errcode (db : ADDRESS) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_extended_result_codes (db : ADDRESS;
|
|
|
|
|
+ onoff : INTEGER) : INTEGER;
|
|
|
|
|
+PROCEDURE sqlite3_free (p : ADDRESS);
|
|
|
|
|
+
|
|
|
PROCEDURE SQLiteTransient () : ADDRESS;
|
|
PROCEDURE SQLiteTransient () : ADDRESS;
|
|
|
EXTERNAL "m2_sqlite_transient";
|
|
EXTERNAL "m2_sqlite_transient";
|
|
|
(* The SQLITE_TRANSIENT destructor sentinel: SQLite copies bound text. *)
|
|
(* The SQLITE_TRANSIENT destructor sentinel: SQLite copies bound text. *)
|