patch #1034566 from Filip Van Raemdonck

This commit is contained in:
brianb
2004-11-14 01:56:37 +00:00
parent 95ab6ad817
commit b721bcc6f4
3 changed files with 42 additions and 17 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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;