mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-11-10 04:04:49 +08:00
patch #1034566 from Filip Van Raemdonck
This commit is contained in:
@@ -6,6 +6,8 @@ Sat Nov 13 20:33:42 EST 2004 Brian Bruns <brian@bruns.com>
|
|||||||
* src/gmdb2/schema.c:
|
* src/gmdb2/schema.c:
|
||||||
* src/gmdb2/sql.c:
|
* src/gmdb2/sql.c:
|
||||||
* src/gmdb2/table_export.c: patch #1038578 from Filip Van Raemdonck
|
* src/gmdb2/table_export.c: patch #1038578 from Filip Van Raemdonck
|
||||||
|
* src/sql/mdbsql.c:
|
||||||
|
* include/mdbsql.h: patch #1034566 from Filip Van Raemdonck
|
||||||
|
|
||||||
Wed Oct 27 22:32:33 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
|
Wed Oct 27 22:32:33 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
|
||||||
* src/util/mdb-sql.c: Various mdb-sql improvements
|
* src/util/mdb-sql.c: Various mdb-sql improvements
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ extern void mdb_sql_add_and(MdbSQL *sql);
|
|||||||
extern void mdb_sql_listtables(MdbSQL *sql);
|
extern void mdb_sql_listtables(MdbSQL *sql);
|
||||||
extern void mdb_sql_add_not(MdbSQL *sql);
|
extern void mdb_sql_add_not(MdbSQL *sql);
|
||||||
extern void mdb_sql_describe_table(MdbSQL *sql);
|
extern void mdb_sql_describe_table(MdbSQL *sql);
|
||||||
extern int mdb_sql_run_query(MdbSQL *sql, char *query);
|
extern MdbSQL* mdb_sql_run_query (MdbSQL*, const gchar*);
|
||||||
extern void mdb_sql_set_maxrow(MdbSQL *sql, int maxrow);
|
extern void mdb_sql_set_maxrow(MdbSQL *sql, int maxrow);
|
||||||
extern int mdb_sql_eval_expr(MdbSQL *sql, char *const1, int op, char *const2);
|
extern int mdb_sql_eval_expr(MdbSQL *sql, char *const1, int op, char *const2);
|
||||||
extern void mdb_sql_bind_all(MdbSQL *sql);
|
extern void mdb_sql_bind_all(MdbSQL *sql);
|
||||||
|
|||||||
@@ -71,28 +71,51 @@ MdbSQL *sql;
|
|||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _parse(MdbSQL *sql, char *buf)
|
#ifndef _
|
||||||
{
|
#define _(x) x
|
||||||
g_input_ptr = buf;
|
#endif
|
||||||
|
|
||||||
|
void mdb_sql_bind_all (MdbSQL*);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mdb_sql_run_query:
|
||||||
|
* @sql: MDB SQL object to execute the query on.
|
||||||
|
* @querystr: SQL query string to execute.
|
||||||
|
*
|
||||||
|
* Parses @querystr and executes it within the given @sql object.
|
||||||
|
*
|
||||||
|
* Returns: the updated MDB SQL object, or NULL on error
|
||||||
|
**/
|
||||||
|
MdbSQL*
|
||||||
|
mdb_sql_run_query (MdbSQL* sql, const gchar* querystr) {
|
||||||
|
g_return_val_if_fail (sql, NULL);
|
||||||
|
g_return_val_if_fail (querystr, NULL);
|
||||||
|
|
||||||
|
g_input_ptr = (gchar*) querystr;
|
||||||
|
|
||||||
|
/* calls to yyparse should be serialized for thread safety */
|
||||||
|
|
||||||
/* begin unsafe */
|
/* begin unsafe */
|
||||||
_mdb_sql(sql);
|
_mdb_sql (sql);
|
||||||
if (yyparse()) {
|
if (yyparse()) {
|
||||||
/* end unsafe */
|
/* end unsafe */
|
||||||
mdb_sql_reset(sql);
|
mdb_sql_error (_("Could not parse '%s' command"), querystr);
|
||||||
return 0;
|
mdb_sql_reset (sql);
|
||||||
} else {
|
return NULL;
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
int mdb_run_query(MdbSQL *sql, char *query)
|
if (sql->cur_table == NULL) {
|
||||||
{
|
/* Invalid column name? (should get caught by mdb_sql_select,
|
||||||
if (_parse(sql,query) && sql->cur_table) {
|
* but it appeared to happen anyway with 0.5) */
|
||||||
mdb_sql_bind_all(sql);
|
mdb_sql_error (_("Got no result for '%s' command"), querystr);
|
||||||
return 1;
|
return NULL;
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mdb_sql_bind_all (sql);
|
||||||
|
|
||||||
|
return sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mdb_sql_set_maxrow(MdbSQL *sql, int maxrow)
|
void mdb_sql_set_maxrow(MdbSQL *sql, int maxrow)
|
||||||
{
|
{
|
||||||
sql->max_rows = maxrow;
|
sql->max_rows = maxrow;
|
||||||
|
|||||||
Reference in New Issue
Block a user