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/sql.c:
* 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>
* 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_add_not(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 int mdb_sql_eval_expr(MdbSQL *sql, char *const1, int op, char *const2);
extern void mdb_sql_bind_all(MdbSQL *sql);

View File

@@ -71,28 +71,51 @@ MdbSQL *sql;
return sql;
}
int _parse(MdbSQL *sql, char *buf)
{
g_input_ptr = buf;
#ifndef _
#define _(x) x
#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 */
_mdb_sql(sql);
_mdb_sql (sql);
if (yyparse()) {
/* end unsafe */
mdb_sql_reset(sql);
return 0;
} else {
return 1;
mdb_sql_error (_("Could not parse '%s' command"), querystr);
mdb_sql_reset (sql);
return NULL;
}
}
int mdb_run_query(MdbSQL *sql, char *query)
{
if (_parse(sql,query) && sql->cur_table) {
mdb_sql_bind_all(sql);
return 1;
} else {
return 0;
if (sql->cur_table == NULL) {
/* Invalid column name? (should get caught by mdb_sql_select,
* but it appeared to happen anyway with 0.5) */
mdb_sql_error (_("Got no result for '%s' command"), querystr);
return NULL;
}
mdb_sql_bind_all (sql);
return sql;
}
void mdb_sql_set_maxrow(MdbSQL *sql, int maxrow)
{
sql->max_rows = maxrow;