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 */
67 rc
= sqlite3_step(pStmt
);
69 /* Invoke the callback function if required */
70 if( xCallback
&& (SQLITE_ROW
==rc
||
71 (SQLITE_DONE
==rc
&& !callbackIsInit
72 && db
->flags
&SQLITE_NullCallback
)) ){
73 if( !callbackIsInit
){
74 nCol
= sqlite3_column_count(pStmt
);
75 azCols
= sqlite3DbMallocRaw(db
, (2*nCol
+1)*sizeof(const char*));
79 for(i
=0; i
<nCol
; i
++){
80 azCols
[i
] = (char *)sqlite3_column_name(pStmt
, i
);
81 /* sqlite3VdbeSetColName() installs column names as UTF8
82 ** strings so there is no way for sqlite3_column_name() to fail. */
83 assert( azCols
[i
]!=0 );
88 azVals
= &azCols
[nCol
];
89 for(i
=0; i
<nCol
; i
++){
90 azVals
[i
] = (char *)sqlite3_column_text(pStmt
, i
);
91 if( !azVals
[i
] && sqlite3_column_type(pStmt
, i
)!=SQLITE_NULL
){
98 if( xCallback(pArg
, nCol
, azVals
, azCols
) ){
99 /* EVIDENCE-OF: R-38229-40159 If the callback function to
100 ** sqlite3_exec() returns non-zero, then sqlite3_exec() will
101 ** return SQLITE_ABORT. */
103 sqlite3VdbeFinalize((Vdbe
*)pStmt
);
105 sqlite3Error(db
, SQLITE_ABORT
);
110 if( rc
!=SQLITE_ROW
){
111 rc
= sqlite3VdbeFinalize((Vdbe
*)pStmt
);
114 while( sqlite3Isspace(zSql
[0]) ) zSql
++;
119 sqlite3DbFree(db
, azCols
);
124 if( pStmt
) sqlite3VdbeFinalize((Vdbe
*)pStmt
);
125 sqlite3DbFree(db
, azCols
);
127 rc
= sqlite3ApiExit(db
, rc
);
128 if( rc
!=SQLITE_OK
&& pzErrMsg
){
129 *pzErrMsg
= sqlite3DbStrDup(0, sqlite3_errmsg(db
));
131 rc
= SQLITE_NOMEM_BKPT
;
132 sqlite3Error(db
, SQLITE_NOMEM
);
134 }else if( pzErrMsg
){
138 assert( (rc
&db
->errMask
)==rc
);
139 sqlite3_mutex_leave(db
->mutex
);