11#define META_FILE_NAME "Sq3LiteC_tcl.c"
15#define OT_CLASS NS(Sq3LiteC)
16#define OT_CLASS_NAME "Sq3LiteC"
18#define OBJECT2LITE(O) MkAssertCastM(Sq3LiteC,(Tcl_ObjectGetMetadata(O, &MK(AtomMeta))))
48#define OT_SETUP_hdl_static_constr_pre
49#define OT_SETUP_hdl_static_constr \
50 OT_SETUP_hdl_static_constr_pre; \
53#define OT_SETUP_hdl_static \
54 int __skip=Tcl_ObjectContextSkippedArgs(objCtx); \
56 __attribute__((unused)) OT_SELF_T selfO = Tcl_ObjectContextObject(objCtx); \
57 __attribute__((unused)) MK_TYP hdl = Sq3LiteC##_TT;
59#define OT_SETUP_hdl SetupHdlFromMetaData_2(LITE,SQ3_LITE);
60#define OT_SETUP_hdl__null_allow SetupHdlFromMetaData__null_allow_2(LITE,SQ3_LITE);
61#define OT_SETUP_hdl_destr SetupHdlFromMetaData__null_allow_2(LITE,SQ3_LITE);
63#define OT_SETUP_hdl_constr_pre
64#define OT_SETUP_hdl_constr \
65 OT_SETUP_hdl_constr_pre; \
66 int __skip=Tcl_ObjectContextSkippedArgs(objCtx); \
68 MK_RT_UNUSED OT_SELF_T selfO = Tcl_ObjectContextObject(objCtx); \
69 SQ3_LITE hdl = (SQ3_LITE) &MkERROR;
71#if !defined(SetupRtFromHdl_XN)
72 #define SetupRtFromHdl_XN(hdl) AllRtSetup_XN(hdl)
73 #define SetupRtFromHdl_X(hdl) AllRtSetup_X(hdl)
79 if (Sq3LiteCTT == NULL) Sq3LiteCTT = Sq3LiteSTT; \
82 if (Sq3LiteCTT->selfCreate == NS(Sq3LiteC_selfCreate)) return MK_OK; \
85 Sq3LiteCTT->selfCreate = NS(Sq3LiteC_selfCreate); \
86 Sq3LiteCTT->selfDelete = NS(Sq3LiteC_selfDelete); \
87 Sq3LiteCTT->selfUnlink = NS(Sq3LiteC_selfUnlink); \
90 OT_SELF_T classO = MK(ClassDef)(interp,ns,Sq3LiteCTT); \
91 check_NULL(classO) goto error; \
92 OT_CLASS = Tcl_GetObjectAsClass(classO); \
95 static MkThreadLocal OtUnknownS NS(sClassUnknown) = {OT_UNKNOWN_CLASS}; \
96 check_LNG(MK(UnknownSetup) (interp,classO,NS(sOtClassDef),&NS(sClassUnknown))) goto error; \
99 static MkThreadLocal OtUnknownS NS(sInstanceUnknown) = {OT_UNKNOWN_INSTANCE}; \
100 check_LNG(MK(UnknownSetup) (interp,classO,NS(sInstanceDef),&NS(sInstanceUnknown))) goto error; \
103 SQ3(Sq3LiteC_MK_NULL) = Tcl_GetObjectName(interp, \
104 MK(AtomCreate) (MK_RT_CALL interp, NULL , OT_CLASS, "MK_NULL" , "::tclsq3lite::Sq3LiteC" ) \
106 Tcl_IncrRefCount(SQ3(Sq3LiteC_MK_NULL));
108#define VER TCL_OO_METHOD_VERSION_CURRENT
115#define CTOR_doc "Sq3LiteC [Sq3LiteC CTOR filename:string ?flags:Sq3OpenEF={SQ3_OPEN_READWRITE SQ3_OPEN_CREATE}? ?zVfs:string=\"MK_NULL\"?]"
116#define OpenV2_doc "Sq3LiteC [Sq3LiteC OpenV2 filename:string ?flags:Sq3OpenEF={SQ3_OPEN_READWRITE SQ3_OPEN_CREATE}? ?zVfs:string=\"MK_NULL\"?]"
119#define GetNull_doc "Sq3LiteC [Sq3LiteC GetNull]"
120#define HandleResolve_doc "Sq3LiteC [Sq3LiteC HandleResolve netHdl:MK_HDL]"
121#define Instances_doc "Sq3LiteC [Sq3LiteC Instances]"
124#define ErrStr_doc "string [Sq3LiteC ErrStr arg0:int32]"
125#define Sleep_doc "Sq3LiteC Sleep arg0:int32"
128#define Next_doc "Sq3LiteC [$lite Next]"
129#define Prev_doc "Sq3LiteC [$lite Prev]"
132#define DbStatusBFL_doc "MkBufferListC [$sq3lite DbStatusBFL op:Sq3DbStatusE resetFlg:bool]"
133#define PrepareV2_doc "Sq3StmtC [$db PrepareV2 zSql:string]"
136#define BusyTimeout_doc "$sq3lite BusyTimeout ms:int32"
137#define Changes_doc "int32 [$sq3lite Changes]"
138#define Changes64_doc "int64 [$sq3lite Changes64]"
139#define CloseV2_doc "$sq3lite CloseV2"
140#define DbCacheflush_doc "$sq3lite DbCacheflush"
141#define DbFilename_doc "string [$db DbFilename zDbName:string]"
142#define DbName_doc "string [$db DbName N:int32]"
143#define DbReadonly_doc "$db DbReadonly zDbName:string"
144#define DbReleaseMemory_doc "$sq3lite DbReleaseMemory"
145#define DeclareVtab_doc "$sq3lite DeclareVtab zSQL:string"
146#define Deserialize_doc "$sq3lite Deserialize zSchema:string pData:binary mFlags:Sq3DeSerializeEF"
147#define DropModules_doc "$sq3lite DropModules azKeepBfl:MkBufferListC"
148#define ErrCode_doc "Sq3ErrorE [$db ErrCode]"
149#define ErrMsg_doc "string [$sq3lite ErrMsg]"
150#define ErrorOffset_doc "$db ErrorOffset"
151#define Exec_doc "$sq3lite Exec sql:string ?callback_data:callable=\"MK_NULL\"?"
152#define ExecV2_doc "$sq3lite ExecV2 sql:string ?callback:callable=\"MK_NULL\"?"
153#define ExtendedResultCodes_doc "$sq3lite ExtendedResultCodes onoff:int32"
154#define ExtendetErrCode_doc "Sq3ExtendetResultCodesE [$db ExtendetErrCode]"
155#define GetAutocommit_doc "int32 [$sq3lite GetAutocommit]"
157#define Interrupt_doc "$sq3lite Interrupt"
158#define IsInterrupted_doc "bool [$sq3lite IsInterrupted]"
159#define LastInsertRowid_doc "int64 [$sq3lite LastInsertRowid]"
160#define Limit_doc "$sq3lite Limit id:Sq3LimitE newVal:int32"
162#define OverloadFunction_doc "$sq3lite OverloadFunction zFuncName:string nArg:int32"
163#define Serialize_doc "binary [$sq3lite Serialize zSchema:string mFlags:Sq3SerializeE]"
164#define SetLastInsertRowid_doc "$sq3lite SetLastInsertRowid arg1:int64"
165#define SystemErrno_doc "$sq3lite SystemErrno"
166#define TotalChanges_doc "int32 [$sq3lite TotalChanges]"
167#define TotalChanges64_doc "int64 [$sq3lite TotalChanges64]"
168#define TxnState_doc "$sq3lite TxnState zSchema:string"
169#define VtabOnConflict_doc "$sq3lite VtabOnConflict"
170#define WalAutocheckpoint_doc "$db WalAutocheckpoint N:int32"
173#define DbStatus_doc "{pCur:int32 pHiwtr:int32} [$sq3lite DbStatus op:Sq3DbStatusE resetFlg:bool]"
174#define TableColumnMetadata_doc "{pzDataType:string pzCollSeq:string pNotNull:int32 pPrimaryKey:int32 pAutoinc:int32} [$db TableColumnMetadata zDbName:string zTableName:string zColumnName:string]"
175#define WalCheckpointV2_doc "{pnLog:int32 pnCkpt:int32} [$db WalCheckpointV2 zDb:string eMode:int32]"
1079static Tcl_MethodType
NS(sOtClassDef)[] = {
1083 {
VER,
"OpenV2" ,
NS(Sq3LiteC_OpenV2) , NULL, NULL},
1086 {
VER,
"GetNull" ,
NS(Sq3LiteC_GetNull) , NULL, NULL},
1087 {
VER,
"HandleResolve" ,
NS(Sq3LiteC_HandleResolve) , NULL, NULL},
1088 {
VER,
"Instances" ,
NS(Sq3LiteC_Instances) , NULL, NULL},
1091 {
VER,
"ErrStr" ,
NS(Sq3LiteC_ErrStr) , NULL, NULL},
1092 {
VER,
"Sleep" ,
NS(Sq3LiteC_Sleep) , NULL, NULL},
1095 {0, NULL, NULL, NULL}
1100static Tcl_MethodType
NS(sInstanceDef)[] = {
1104 {
VER,
"<constructor>" ,
NS(Sq3LiteC_CTOR) , NULL, NULL},
1107 {
VER,
"Next" ,
NS(Sq3LiteC_Next) , NULL, NULL},
1108 {
VER,
"Prev" ,
NS(Sq3LiteC_Prev) , NULL, NULL},
1111 {
VER,
"DbStatusBFL" ,
NS(Sq3LiteC_DbStatusBFL) , NULL, NULL},
1112 {
VER,
"PrepareV2" ,
NS(Sq3LiteC_PrepareV2) , NULL, NULL},
1115 {
VER,
"BusyTimeout" ,
NS(Sq3LiteC_BusyTimeout) , NULL, NULL},
1116 {
VER,
"Changes" ,
NS(Sq3LiteC_Changes) , NULL, NULL},
1117 {
VER,
"Changes64" ,
NS(Sq3LiteC_Changes64) , NULL, NULL},
1118 {
VER,
"CloseV2" ,
NS(Sq3LiteC_CloseV2) , NULL, NULL},
1119 {
VER,
"DbCacheflush" ,
NS(Sq3LiteC_DbCacheflush) , NULL, NULL},
1120 {
VER,
"DbFilename" ,
NS(Sq3LiteC_DbFilename) , NULL, NULL},
1121 {
VER,
"DbName" ,
NS(Sq3LiteC_DbName) , NULL, NULL},
1122 {
VER,
"DbReadonly" ,
NS(Sq3LiteC_DbReadonly) , NULL, NULL},
1123 {
VER,
"DbReleaseMemory" ,
NS(Sq3LiteC_DbReleaseMemory) , NULL, NULL},
1124 {
VER,
"DeclareVtab" ,
NS(Sq3LiteC_DeclareVtab) , NULL, NULL},
1125 {
VER,
"Deserialize" ,
NS(Sq3LiteC_Deserialize) , NULL, NULL},
1126 {
VER,
"DropModules" ,
NS(Sq3LiteC_DropModules) , NULL, NULL},
1127 {
VER,
"ErrCode" ,
NS(Sq3LiteC_ErrCode) , NULL, NULL},
1128 {
VER,
"ErrMsg" ,
NS(Sq3LiteC_ErrMsg) , NULL, NULL},
1129 {
VER,
"ErrorOffset" ,
NS(Sq3LiteC_ErrorOffset) , NULL, NULL},
1130 {
VER,
"Exec" ,
NS(Sq3LiteC_Exec) , NULL, NULL},
1131 {
VER,
"ExecV2" ,
NS(Sq3LiteC_ExecV2) , NULL, NULL},
1132 {
VER,
"ExtendedResultCodes" ,
NS(Sq3LiteC_ExtendedResultCodes) , NULL, NULL},
1133 {
VER,
"ExtendetErrCode" ,
NS(Sq3LiteC_ExtendetErrCode) , NULL, NULL},
1134 {
VER,
"GetAutocommit" ,
NS(Sq3LiteC_GetAutocommit) , NULL, NULL},
1136 {
VER,
"Interrupt" ,
NS(Sq3LiteC_Interrupt) , NULL, NULL},
1137 {
VER,
"IsInterrupted" ,
NS(Sq3LiteC_IsInterrupted) , NULL, NULL},
1138 {
VER,
"LastInsertRowid" ,
NS(Sq3LiteC_LastInsertRowid) , NULL, NULL},
1139 {
VER,
"Limit" ,
NS(Sq3LiteC_Limit) , NULL, NULL},
1141 {
VER,
"OverloadFunction" ,
NS(Sq3LiteC_OverloadFunction) , NULL, NULL},
1142 {
VER,
"Serialize" ,
NS(Sq3LiteC_Serialize) , NULL, NULL},
1143 {
VER,
"SetLastInsertRowid" ,
NS(Sq3LiteC_SetLastInsertRowid) , NULL, NULL},
1144 {
VER,
"SystemErrno" ,
NS(Sq3LiteC_SystemErrno) , NULL, NULL},
1145 {
VER,
"TotalChanges" ,
NS(Sq3LiteC_TotalChanges) , NULL, NULL},
1146 {
VER,
"TotalChanges64" ,
NS(Sq3LiteC_TotalChanges64) , NULL, NULL},
1147 {
VER,
"TxnState" ,
NS(Sq3LiteC_TxnState) , NULL, NULL},
1148 {
VER,
"VtabOnConflict" ,
NS(Sq3LiteC_VtabOnConflict) , NULL, NULL},
1149 {
VER,
"WalAutocheckpoint" ,
NS(Sq3LiteC_WalAutocheckpoint) , NULL, NULL},
1152 {
VER,
"DbStatus" ,
NS(Sq3LiteC_DbStatus) , NULL, NULL},
1153 {
VER,
"TableColumnMetadata" ,
NS(Sq3LiteC_TableColumnMetadata) , NULL, NULL},
1154 {
VER,
"WalCheckpointV2" ,
NS(Sq3LiteC_WalCheckpointV2) , NULL, NULL},
1157 {0, NULL, NULL, NULL, NULL}
#define OT_CHECK_bool(val)
#define OT_SETUP_VARARGS(min, max, d)
#define OT_CHECK_NIH(val)
#define OT_retObj_SET_BOL(nat)
#define OT_SETUP_NOARG(d)
#define OT_SETUP_ONEARG(d)
#define OT_ERROR_LNG_RETURN
#define OT_CHECK_NI4(val)
#define OT_CHECK_NI8(val)
#define OT_retObj_SET_Error
#define OT_CONSTRUCTOR_POST(x)
#define OT_retObj_SET_I64(nat)
#define OT_retObj_SET_List
#define OT_CHECK_REQUIRED(val)
#define OT_retObj_SET_None
#define OT_retObj_SET_I32(nat)
#define OT_retObj_SET_BFL(nat)
#define OT_TMP_I32_OBJ(val)
#define OT_GET__ME_REF_MkBinaryR(b)
#define OT_SETUP_CONSTRUCTOR_ARGS(...)
#define OT_CHECK_ENUM(ename, val)
#define OT_retObj_APPEND(var)
#define OT_CHECK__ME_REF_MkStringR(val)
#define OT_CHECK__ME_REF_MkBinaryR(val)
#define OT_retObj_SET_STR(nat)
#define OT_CHECK_OPTIONAL(val)
#define OT_TMP_STR_OBJ(val)
#define OT_retObj_SET(val)
#define OT_retObj_CONSTR(x)
#define MkErrorC_Check(mng, PROC)
#define OT_CHECK_STRN(val)
#define OT_NEW_Sq3_enum_OBJ(typ, val)
#define OT_retObj_SET_LITE(nat)
#define OT_retObj_SET_STMT(nat)
#define OT_SETUP_hdl_static_constr
#define ExtendedResultCodes_doc
#define DbReleaseMemory_doc
#define WalAutocheckpoint_doc
#define ExtendetErrCode_doc
#define OverloadFunction_doc
#define SetLastInsertRowid_doc
#define OT_SETUP_hdl_destr
#define LastInsertRowid_doc
#define TotalChanges64_doc
#define HandleResolve_doc
#define OT_SETUP_hdl_static
#define OT_SETUP_hdl_constr
#define TableColumnMetadata_doc
#define WalCheckpointV2_doc
#define GetAutocommit_doc
#define IsInterrupted_doc
static __thread MK_TYP Sq3LiteCTT
#define VtabOnConflict_doc
#define MkBufferListCreateTLS_T(name, num)
static SQ3_LITE Sq3LiteNext(SQ3_LITE const lite)
get next instance from linked-list of Sq3LiteS type
#define Sq3LiteInstances()
static SQ3_LITE Sq3LiteGetNull(void)
Null-Slot - return a Sq3LiteC typed NULL instance …
static SQ3_LITE Sq3LitePrev(SQ3_LITE const lite)
get previous instance from linked-list of Sq3LiteS type
#define Sq3LiteHandleResolve(...)
static enum MkErrorE Sq3LiteBusyTimeout(SQ3_LITE sq3lite, MK_I32 ms)
Set A Busy Timeout …
static enum MkErrorE Sq3LiteLimit(SQ3_LITE sq3lite, enum Sq3LimitE id, MK_I32 newVal)
Run-time Limits …
static enum MkErrorE Sq3LiteDeclareVtab(SQ3_LITE sq3lite, MK_STRN zSQL)
Declare The Schema Of A Virtual Table …
static enum MkErrorE Sq3LiteExtendedResultCodes(SQ3_LITE sq3lite, MK_I32 onoff)
Enable Or Disable Extended Result Codes …
static enum MkErrorE Sq3LiteErrorOffset(SQ3_LITE db)
Error Codes And Messages …
static enum MkErrorE Sq3LiteSystemErrno(SQ3_LITE sq3lite)
Low-level system error code …
static enum Sq3ErrorE Sq3LiteErrCode(SQ3_LITE db)
Error Codes And Messages …
static MK_STRN Sq3LiteErrMsg(SQ3_LITE sq3lite)
Error Codes And Messages …
static MK_STRN Sq3LiteErrStr(MK_I32 arg0)
Error Codes And Messages …
static enum Sq3ExtendetResultCodesE Sq3LiteExtendetErrCode(SQ3_LITE db)
Error Codes And Messages …
static enum MkErrorE Sq3LiteSleep(MK_I32 arg0)
Suspend Execution For A Short Time …
static enum MkErrorE Sq3LiteExec(SQ3_LITE sq3lite, MK_STRN sql, Sq3Fupu_Sq3LiteExec_callback_call callback_call, MK_CBP callback_data)
One-Step Query Execution Interface …
#define Sq3LiteExecV2(...)
Sq3Fupu_Sq3LiteExec_callback_call_ret(* Sq3Fupu_Sq3LiteExec_callback_call)(Sq3Fupu_Sq3LiteExec_callback_call_args)
enum MkErrorE(* Sq3LiteExecV2CB)(MK_RT mkrt, MK_CBP callV2, MK_BFL vals, MK_BFL cols)
callback for Sq3LiteExecV2
static enum MkErrorE Sq3LiteTxnState(SQ3_LITE sq3lite, MK_STRN zSchema)
Determine the transaction state of a database …
static MK_I32 Sq3LiteGetAutocommit(SQ3_LITE sq3lite)
Test For Auto-Commit Mode …
static enum MkErrorE Sq3LiteVtabOnConflict(SQ3_LITE sq3lite)
Determine The Virtual Table Conflict Policy …
static MK_I64 Sq3LiteLastInsertRowid(SQ3_LITE sq3lite)
Last Insert Rowid …
static enum MkErrorE Sq3LiteDbCacheflush(SQ3_LITE sq3lite)
Flush caches to disk mid-transaction …
static enum MkErrorE Sq3LiteTableColumnMetadata(SQ3_LITE db, MK_STRN zDbName, MK_STRN zTableName, MK_STRN zColumnName, MK_STRN *pzDataType, MK_STRN *pzCollSeq, MK_I32 *pNotNull, MK_I32 *pPrimaryKey, MK_I32 *pAutoinc)
Extract Metadata About A Column Of A Table …
static enum MkErrorE Sq3LiteDbReleaseMemory(SQ3_LITE sq3lite)
Free Memory Used By A Database Connection …
static MK_STRN Sq3LiteDbName(SQ3_LITE db, MK_I32 N)
Return The Schema Name For A Database Connection …
#define Sq3LiteDbStatusBFL(...)
#define Sq3LiteDropModules(...)
static enum MkErrorE Sq3LiteDbStatus(SQ3_LITE sq3lite, enum Sq3DbStatusE op, MK_I32 *pCur, MK_I32 *pHiwtr, MK_BOOL resetFlg)
Database Connection Status …
static MkBinaryR Sq3LiteSerialize(SQ3_LITE sq3lite, MK_STRN zSchema, enum Sq3SerializeE mFlags)
Serialize a database …
static SQ3_FILENAME Sq3LiteDbFilename(SQ3_LITE db, MK_STRN zDbName)
Return The Filename For A Database Connection …
static enum MkErrorE Sq3LiteOverloadFunction(SQ3_LITE sq3lite, MK_STRN zFuncName, MK_I32 nArg)
Overload A Function For A Virtual Table …
#define Sq3LiteDeserialize(...)
static enum MkErrorE Sq3LiteDbReadonly(SQ3_LITE db, MK_STRN zDbName)
Determine if a database is read-only …
static enum MkErrorE Sq3LiteWalAutocheckpoint(SQ3_LITE db, MK_I32 N)
Configure an auto-checkpoint …
static enum MkErrorE Sq3LiteWalCheckpointV2(SQ3_LITE db, MK_STRN zDb, MK_I32 eMode, MK_I32 *pnLog, MK_I32 *pnCkpt)
Checkpoint a database …
static void Sq3LiteInterrupt(SQ3_LITE sq3lite)
Interrupt A Long-Running Query …
static MK_BOOL Sq3LiteIsInterrupted(SQ3_LITE sq3lite)
Interrupt A Long-Running Query …
static MK_I64 Sq3LiteChanges64(SQ3_LITE sq3lite)
Count The Number Of Rows Modified …
static MK_I64 Sq3LiteTotalChanges64(SQ3_LITE sq3lite)
Total Number Of Rows Modified …
static MK_I32 Sq3LiteChanges(SQ3_LITE sq3lite)
Count The Number Of Rows Modified …
static MK_I32 Sq3LiteTotalChanges(SQ3_LITE sq3lite)
Total Number Of Rows Modified …
static void Sq3LiteSetLastInsertRowid(SQ3_LITE sq3lite, MK_I64 arg1)
Set the Last Insert Rowid value …
static enum MkErrorE Sq3LiteCloseV2(SQ3_LITE sq3lite)
Closing A Database Connection …
static enum MkErrorE Sq3LiteOpenV2(MK_STRN filename, SQ3_LITE *ppDb, enum Sq3OpenEF flags, MK_STRN zVfs)
Opening A New Database Connection …
Sq3OpenEF
Flags For File Open Operations.
Sq3LimitE
Run-Time Limit Categories.
Sq3SerializeE
Flags for sqlite3_serialize.
Sq3DeSerializeEF
Flags for sqlite3_deserialize()
Sq3DbStatusE
Status Parameters for database connections.
static enum MkErrorE Sq3LitePrepareV2(SQ3_LITE db, MkStringR zSql, SQ3_STMT *ppStmt)
Compiling An SQL Statement …
#define OT_CHECK_CALLABLE(val)
#define OT_SETUP_CALLABLE_ONCE(val)
#define OT_CLEANUP_CALLABLE_ONCE(val)
#define OT_CHECK_BFL(val, nullB)
Struct to represent the data of the Sq3LiteC …
Struct to represent the data of the Sq3StmtC …