4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing:
7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give.
11 *************************************************************************
12 ** Main file for the SQLite library. The routines in this file
13 ** implement the programmer interface to the library. Routines in
14 ** other files are for internal use by SQLite and should not be
15 ** accessed by users of the library.
18 #include "sqliteInt.h"
21 ** Execute SQL code. Return one of the SQLITE_ success/failure
22 ** codes. Also write an error message into memory obtained from
23 ** malloc() and make *pzErrMsg point to that message.
25 ** If the SQL is a query, then for each row in the query result
26 ** the xCallback() function is called. pArg becomes the first
27 ** argument to xCallback(). If xCallback=NULL then no callback
28 ** is invoked, even for queries.
31 sqlite3
*db
, /* The database on which the SQL executes */
32 const char *zSql
, /* The SQL to be executed */
33 sqlite3_callback xCallback
, /* Invoke this callback routine */
34 void *pArg
, /* First argument to xCallback() */
35 char **pzErrMsg
/* Write error messages here */
37 int rc
= SQLITE_OK
; /* Return code */
38 const char *zLeftover
; /* Tail of unprocessed SQL */
39 sqlite3_stmt
*pStmt
= 0; /* The current SQL statement */
40 char **azCols
= 0; /* Names of result columns */
41 int callbackIsInit
; /* True if callback data is initialized */
43 if( !sqlite3SafetyCheckOk(db
) ) return SQLITE_MISUSE_BKPT
;
44 if( zSql
==0 ) zSql
= "";
46 sqlite3_mutex_enter(db
->mutex
);
47 sqlite3Error(db
, SQLITE_OK
);
48 while( rc
==SQLITE_OK
&& zSql
[0] ){
53 rc
= sqlite3_prepare_v2(db
, zSql
, -1, &pStmt
, &zLeftover
);
54 assert( rc
==SQLITE_OK
|| pStmt
==0 );
59 /* this happens for a comment or white-space */
65 nCol
= sqlite3_column_count(pStmt
);
69 rc
= sqlite3_step(pStmt
);
71 /* Invoke the callback function if required */
72 if( xCallback
&& (SQLITE_ROW
==rc
||
73 (SQLITE_DONE
==rc
&& !callbackIsInit
74 && db
->flags
&SQLITE_NullCallback
)) ){
75 if( !callbackIsInit
){
76 azCols
= sqlite3DbMallocRaw(db
, (2*nCol
+1)*sizeof(const char*));
80 for(i
=0; i
<nCol
; i
++){
81 azCols
[i
] = (char *)sqlite3_column_name(pStmt
, i
);
82 /* sqlite3VdbeSetColName() installs column names as UTF8
83 ** strings so there is no way for sqlite3_column_name() to fail. */
84 assert( azCols
[i
]!=0 );
89 azVals
= &azCols
[nCol
];
90 for(i
=0; i
<nCol
; i
++){
91 azVals
[i
] = (char *)sqlite3_column_text(pStmt
, i
);
92 if( !azVals
[i
] && sqlite3_column_type(pStmt
, i
)!=SQLITE_NULL
){
99 if( xCallback(pArg
, nCol
, azVals
, azCols
) ){
100 /* EVIDENCE-OF: R-38229-40159 If the callback function to
101 ** sqlite3_exec() returns non-zero, then sqlite3_exec() will
102 ** return SQLITE_ABORT. */
104 sqlite3VdbeFinalize((Vdbe
*)pStmt
);
106 sqlite3Error(db
, SQLITE_ABORT
);
111 if( rc
!=SQLITE_ROW
){
112 rc
= sqlite3VdbeFinalize((Vdbe
*)pStmt
);
115 while( sqlite3Isspace(zSql
[0]) ) zSql
++;
120 sqlite3DbFree(db
, azCols
);
125 if( pStmt
) sqlite3VdbeFinalize((Vdbe
*)pStmt
);
126 sqlite3DbFree(db
, azCols
);
128 rc
= sqlite3ApiExit(db
, rc
);
129 if( rc
!=SQLITE_OK
&& pzErrMsg
){
130 *pzErrMsg
= sqlite3DbStrDup(0, sqlite3_errmsg(db
));
132 rc
= SQLITE_NOMEM_BKPT
;
133 sqlite3Error(db
, SQLITE_NOMEM
);
135 }else if( pzErrMsg
){
139 assert( (rc
&db
->errMask
)==rc
);
140 sqlite3_mutex_leave(db
->mutex
);