Moved createColString into db_column as createColumn
This commit is contained in:
@@ -372,7 +372,7 @@ int setColumnValue(struct column_data_t *col, uint64_t row, const char *value, s
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct column_data_t *selectColumn(struct column_data_t **col_data, size_t n_cols, const char *name)
|
struct column_data_t *findColumn(struct column_data_t **col_data, size_t n_cols, const char *name)
|
||||||
{
|
{
|
||||||
struct column_data_t *col = 0;
|
struct column_data_t *col = 0;
|
||||||
size_t idx = 0;
|
size_t idx = 0;
|
||||||
@@ -388,3 +388,81 @@ struct column_data_t *selectColumn(struct column_data_t **col_data, size_t n_col
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *createColumn(struct column_data_t *col, char **str, size_t *len)
|
||||||
|
{
|
||||||
|
str_builder *sb;
|
||||||
|
|
||||||
|
if ((sb = strbld_create()) == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
createColumn_sb(sb, col);
|
||||||
|
if (strbld_finalize_or_destroy(&sb, str, len) != 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return *str;
|
||||||
|
}
|
||||||
|
void createColumn_sb(str_builder *sb, struct column_data_t *col)
|
||||||
|
{
|
||||||
|
strbld_str(sb, ", `", 3);
|
||||||
|
strbld_str(sb, col->name, col->name_len);
|
||||||
|
strbld_str(sb, "` ", 2);
|
||||||
|
|
||||||
|
switch(col->type) {
|
||||||
|
case TYPE_RAW:
|
||||||
|
strbld_str(sb, "MEDIUMBLOB", 10);
|
||||||
|
break;
|
||||||
|
case TYPE_BOOL:
|
||||||
|
strbld_str(sb, "BOOLEAN", 7);
|
||||||
|
break;
|
||||||
|
case TYPE_INT8:
|
||||||
|
case TYPE_UINT8:
|
||||||
|
strbld_str(sb, "TINYINT", 7);
|
||||||
|
break;
|
||||||
|
case TYPE_INT16:
|
||||||
|
case TYPE_UINT16:
|
||||||
|
strbld_str(sb, "SMALLINT", 8);
|
||||||
|
break;
|
||||||
|
case TYPE_INT32:
|
||||||
|
case TYPE_UINT32:
|
||||||
|
strbld_str(sb, "INT", 3);
|
||||||
|
break;
|
||||||
|
case TYPE_INT64:
|
||||||
|
case TYPE_UINT64:
|
||||||
|
strbld_str(sb, "BIGINT", 6);
|
||||||
|
break;
|
||||||
|
case TYPE_FLOAT:
|
||||||
|
strbld_str(sb, "FLOAT", 5);
|
||||||
|
break;
|
||||||
|
case TYPE_DOUBLE:
|
||||||
|
strbld_str(sb, "DOUBLE", 6);
|
||||||
|
break;
|
||||||
|
case TYPE_STRING:
|
||||||
|
strbld_str(sb, "VARCHAR(4096)", 13);
|
||||||
|
break;
|
||||||
|
case TYPE_BLOB:
|
||||||
|
strbld_str(sb, "MEDIUMBLOB", 10);
|
||||||
|
break;
|
||||||
|
case TYPE_TIMESTAMP:
|
||||||
|
strbld_str(sb, "TIMESTAMP", 8);
|
||||||
|
break;
|
||||||
|
case TYPE_ID:
|
||||||
|
strbld_str(sb, "INT", 3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (col->isUnsigned) {
|
||||||
|
strbld_str(sb, " UNSIGNED", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (col->isNullable) {
|
||||||
|
strbld_str(sb, " NULL", 0);
|
||||||
|
} else {
|
||||||
|
strbld_str(sb, " NOT NULL", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (col->isAutoIncrement) {
|
||||||
|
strbld_str(sb, " AUTO_INCREMENT", 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include <mysql.h>
|
#include <mysql.h>
|
||||||
|
|
||||||
#include "db_connection.h"
|
#include "db_connection.h"
|
||||||
|
#include "strext.h"
|
||||||
|
|
||||||
enum e_column_type_t {
|
enum e_column_type_t {
|
||||||
TYPE_RAW = 0 << 0,
|
TYPE_RAW = 0 << 0,
|
||||||
@@ -100,7 +101,12 @@ void freeColumns(struct column_data_t **col_data, size_t n_cols);
|
|||||||
|
|
||||||
int setColumnValue(struct column_data_t *col, uint64_t row, const char *value, size_t value_size);
|
int setColumnValue(struct column_data_t *col, uint64_t row, const char *value, size_t value_size);
|
||||||
|
|
||||||
struct column_data_t *selectColumn(struct column_data_t **col_data, size_t n_cols,
|
struct column_data_t *findColumn(struct column_data_t **col_data, size_t n_cols,
|
||||||
const char *name);
|
const char *name);
|
||||||
|
|
||||||
|
|
||||||
|
char *createColumn(struct column_data_t *col_data, char **str, size_t *len);
|
||||||
|
void createColumn_sb(str_builder *sb, struct column_data_t *col);
|
||||||
|
|
||||||
|
|
||||||
#endif // H__DB_COLUMN__
|
#endif // H__DB_COLUMN__
|
||||||
|
|||||||
@@ -221,82 +221,6 @@ uint64_t createUserGroupsTable(stored_conn *sconn, modb_ref *modb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char *createColString(column_data *col)
|
|
||||||
{
|
|
||||||
char *colstr;
|
|
||||||
size_t colstr_len;
|
|
||||||
str_builder *sb;
|
|
||||||
|
|
||||||
if ((sb = strbld_create()) == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
strbld_str(sb, ", `", 3);
|
|
||||||
strbld_str(sb, col->name, col->name_len);
|
|
||||||
strbld_str(sb, "` ", 2);
|
|
||||||
|
|
||||||
switch(col->type) {
|
|
||||||
case TYPE_RAW:
|
|
||||||
strbld_str(sb, "MEDIUMBLOB", 10);
|
|
||||||
break;
|
|
||||||
case TYPE_BOOL:
|
|
||||||
strbld_str(sb, "BOOLEAN", 7);
|
|
||||||
break;
|
|
||||||
case TYPE_INT8:
|
|
||||||
case TYPE_UINT8:
|
|
||||||
strbld_str(sb, "TINYINT", 7);
|
|
||||||
break;
|
|
||||||
case TYPE_INT16:
|
|
||||||
case TYPE_UINT16:
|
|
||||||
strbld_str(sb, "SMALLINT", 8);
|
|
||||||
break;
|
|
||||||
case TYPE_INT32:
|
|
||||||
case TYPE_UINT32:
|
|
||||||
strbld_str(sb, "INT", 3);
|
|
||||||
break;
|
|
||||||
case TYPE_INT64:
|
|
||||||
case TYPE_UINT64:
|
|
||||||
strbld_str(sb, "BIGINT", 6);
|
|
||||||
break;
|
|
||||||
case TYPE_FLOAT:
|
|
||||||
strbld_str(sb, "FLOAT", 5);
|
|
||||||
break;
|
|
||||||
case TYPE_DOUBLE:
|
|
||||||
strbld_str(sb, "DOUBLE", 6);
|
|
||||||
break;
|
|
||||||
case TYPE_STRING:
|
|
||||||
strbld_str(sb, "VARCHAR(4096)", 13);
|
|
||||||
break;
|
|
||||||
case TYPE_BLOB:
|
|
||||||
strbld_str(sb, "MEDIUMBLOB", 10);
|
|
||||||
break;
|
|
||||||
case TYPE_TIMESTAMP:
|
|
||||||
strbld_str(sb, "TIMESTAMP", 8);
|
|
||||||
break;
|
|
||||||
case TYPE_ID:
|
|
||||||
strbld_str(sb, "INT", 3);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (col->isUnsigned) {
|
|
||||||
strbld_str(sb, " UNSIGNED", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (col->isNullable) {
|
|
||||||
strbld_str(sb, " NULL", 0);
|
|
||||||
} else {
|
|
||||||
strbld_str(sb, " NOT NULL", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (col->isAutoIncrement) {
|
|
||||||
strbld_str(sb, " AUTO_INCREMENT", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strbld_finalize_or_destroy(&sb, &colstr, &colstr_len) != 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return colstr;
|
|
||||||
}
|
|
||||||
uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb,
|
uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb,
|
||||||
column_data **col_data, size_t cols)
|
column_data **col_data, size_t cols)
|
||||||
{
|
{
|
||||||
@@ -304,7 +228,6 @@ uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb,
|
|||||||
uint64_t res;
|
uint64_t res;
|
||||||
size_t qry_len;
|
size_t qry_len;
|
||||||
str_builder *sb;
|
str_builder *sb;
|
||||||
char *colstr;
|
|
||||||
|
|
||||||
if ((sb = strbld_create()) == 0) {
|
if ((sb = strbld_create()) == 0) {
|
||||||
return (uint64_t)-1;
|
return (uint64_t)-1;
|
||||||
@@ -314,13 +237,7 @@ uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb,
|
|||||||
strbld_str(sb, "` ("
|
strbld_str(sb, "` ("
|
||||||
"`mdo_id` INT UNSIGNED NOT NULL", 0);
|
"`mdo_id` INT UNSIGNED NOT NULL", 0);
|
||||||
for (size_t c = 0; c < cols; c++) {
|
for (size_t c = 0; c < cols; c++) {
|
||||||
column_data *col = *(col_data + c);
|
createColumn_sb(sb, *(col_data + c));
|
||||||
if ((colstr = createColString(col)) == 0) {
|
|
||||||
strbld_destroy(&sb);
|
|
||||||
return (uint64_t)-1;
|
|
||||||
}
|
|
||||||
strbld_str(sb, colstr, 0);
|
|
||||||
free(colstr);
|
|
||||||
}
|
}
|
||||||
strbld_str(sb, ", INDEX (`mdo_id`))", 0);
|
strbld_str(sb, ", INDEX (`mdo_id`))", 0);
|
||||||
if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) {
|
if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user