Query to get ID maps
This commit is contained in:
@@ -471,6 +471,59 @@ int64_t syncIdMap_va(struct stored_conn_t *sconn, const char *table, size_t tabl
|
|||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t getIdMaps(struct stored_conn_t *sconn, const char *table, size_t table_len,
|
||||||
|
const char *primary_col, const char *map_col,
|
||||||
|
unsigned int primary_id, size_t *n_maps, unsigned int **map_ids)
|
||||||
|
{
|
||||||
|
char *qry;
|
||||||
|
size_t qry_len;
|
||||||
|
uint64_t qry_ret;
|
||||||
|
|
||||||
|
str_builder *sb;
|
||||||
|
where_builder *wb;
|
||||||
|
|
||||||
|
column_data **col_data;
|
||||||
|
size_t n_cols;
|
||||||
|
|
||||||
|
if ((sb = strbld_create()) == 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
strbld_str(sb, "SELECT ", 7);
|
||||||
|
escapeColumnName_sb(sb, 0, 0, map_col, 0);
|
||||||
|
strbld_str(sb, " FROM ", 6);
|
||||||
|
escapeTableName_sb(sb, table, table_len);
|
||||||
|
wb = where(0, primary_col, EQ, TYPE_ID, 1, primary_id);
|
||||||
|
compileWhereBuilder_sb(sb, wb, 1);
|
||||||
|
|
||||||
|
if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
qry_ret = tableQuery(sconn, qry, qry_len, 0, &col_data, &n_cols);
|
||||||
|
free(qry);
|
||||||
|
|
||||||
|
// Query failed
|
||||||
|
if (qry_ret == (uint64_t)-1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Zero row result
|
||||||
|
if (qry_ret == 0) {
|
||||||
|
freeColumns(col_data, n_cols);
|
||||||
|
*n_maps = 0;
|
||||||
|
*map_ids = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*map_ids = (*col_data)->data.ptr_uint32;
|
||||||
|
*n_maps = (*col_data)->n_values;
|
||||||
|
(*col_data)->data.ptr_uint32 = 0;
|
||||||
|
|
||||||
|
freeColumns(col_data, n_cols);
|
||||||
|
|
||||||
|
return (int64_t)n_maps;
|
||||||
|
}
|
||||||
|
|
||||||
int64_t hasIdMap(struct stored_conn_t *sconn, const char *table, size_t table_len,
|
int64_t hasIdMap(struct stored_conn_t *sconn, const char *table, size_t table_len,
|
||||||
const char *primary_col, const char *map_col,
|
const char *primary_col, const char *map_col,
|
||||||
|
|||||||
@@ -55,6 +55,10 @@ int64_t syncIdMap_va(struct stored_conn_t *sconn, const char *table, size_t tabl
|
|||||||
const char *primary_col, const char *map_col,
|
const char *primary_col, const char *map_col,
|
||||||
unsigned int primary_id, size_t n_maps, va_list args);
|
unsigned int primary_id, size_t n_maps, va_list args);
|
||||||
|
|
||||||
|
int64_t getIdMaps(struct stored_conn_t *sconn, const char *table, size_t table_len,
|
||||||
|
const char *primary_col, const char *map_col,
|
||||||
|
unsigned int primary_id, size_t *n_maps, unsigned int **map_ids);
|
||||||
|
|
||||||
int64_t hasIdMap(struct stored_conn_t *sconn, const char *table, size_t table_len,
|
int64_t hasIdMap(struct stored_conn_t *sconn, const char *table, size_t table_len,
|
||||||
const char *primary_col, const char *map_col,
|
const char *primary_col, const char *map_col,
|
||||||
unsigned int primary_id, unsigned int map_id);
|
unsigned int primary_id, unsigned int map_id);
|
||||||
|
|||||||
Reference in New Issue
Block a user