mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-04-05 20:31:00 +08:00
Merge pull request 78
This commit is contained in:
commit
428834bbc4
@ -1300,6 +1300,8 @@ static SQLRETURN SQL_API _SQLFreeEnv(
|
||||
return SQL_ERROR;
|
||||
}
|
||||
g_ptr_array_free(env->connections, TRUE);
|
||||
mdb_sql_exit(env->sql);
|
||||
g_free(env);
|
||||
|
||||
return SQL_SUCCESS;
|
||||
}
|
||||
@ -1797,7 +1799,7 @@ static SQLRETURN SQL_API _SQLGetData(
|
||||
{
|
||||
char *str = mdb_col_to_string(mdb, mdb->pg_buf,
|
||||
col->cur_value_start, col->col_type, col->cur_value_len);
|
||||
int len = strlen(str) + 1; // including \0
|
||||
int len = strlen(str);
|
||||
if (stmt->pos >= len) {
|
||||
free(str);
|
||||
return SQL_NO_DATA;
|
||||
|
@ -457,9 +457,18 @@ void mdb_sql_dump(MdbSQL *sql)
|
||||
}
|
||||
void mdb_sql_exit(MdbSQL *sql)
|
||||
{
|
||||
mdb_sql_reset(sql); // Free memory
|
||||
/* Free the memory associated with the SQL engine */
|
||||
mdb_sql_reset(sql);
|
||||
|
||||
g_ptr_array_free(sql->columns, TRUE);
|
||||
g_ptr_array_free(sql->tables, TRUE);
|
||||
|
||||
/* If libmdb has been initialized, terminate it */
|
||||
if (sql->mdb)
|
||||
mdb_close(sql->mdb);
|
||||
|
||||
/* Cleanup the SQL engine object */
|
||||
g_free(sql);
|
||||
}
|
||||
void mdb_sql_reset(MdbSQL *sql)
|
||||
{
|
||||
@ -473,6 +482,13 @@ void mdb_sql_reset(MdbSQL *sql)
|
||||
sql->cur_table = NULL;
|
||||
}
|
||||
|
||||
/* Reset bound values */
|
||||
unsigned int i;
|
||||
for (i=0;i<sql->num_columns;i++) {
|
||||
g_free(sql->bound_values[i]);
|
||||
sql->bound_values[i] = NULL;
|
||||
}
|
||||
|
||||
/* Reset columns */
|
||||
mdb_sql_free_columns(sql->columns);
|
||||
sql->num_columns = 0;
|
||||
|
@ -205,14 +205,14 @@ run_query(FILE *out, MdbSQL *sql, char *mybuf, char *delimiter)
|
||||
else
|
||||
printf("Index scanning %s using %s\n", table->name, table->scan_idx->name);
|
||||
}
|
||||
if (noexec) {
|
||||
mdb_sql_reset(sql);
|
||||
return;
|
||||
/* If noexec != on, dump results */
|
||||
if (!noexec) {
|
||||
if (pretty_print)
|
||||
dump_results_pp(out, sql);
|
||||
else
|
||||
dump_results(out, sql, delimiter);
|
||||
}
|
||||
if (pretty_print)
|
||||
dump_results_pp(out, sql);
|
||||
else
|
||||
dump_results(out, sql, delimiter);
|
||||
mdb_sql_reset(sql);
|
||||
}
|
||||
}
|
||||
|
||||
@ -281,8 +281,6 @@ dump_results(FILE *out, MdbSQL *sql, char *delimiter)
|
||||
if (footers) {
|
||||
print_rows_retrieved(out, row_count);
|
||||
}
|
||||
|
||||
mdb_sql_reset(sql);
|
||||
}
|
||||
|
||||
void
|
||||
@ -338,13 +336,6 @@ dump_results_pp(FILE *out, MdbSQL *sql)
|
||||
if (footers) {
|
||||
print_rows_retrieved(out, row_count);
|
||||
}
|
||||
|
||||
/* clean up */
|
||||
for (j=0;j<sql->num_columns;j++) {
|
||||
g_free(sql->bound_values[j]);
|
||||
}
|
||||
|
||||
mdb_sql_reset(sql);
|
||||
}
|
||||
|
||||
int
|
||||
|
Loading…
Reference in New Issue
Block a user