MCPcopy Create free account
hub / github.com/bloomberg/comdb2 / append_column

Method append_column

tools/cdb2sql/cdb2sql.cpp:1199–1355  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1197}
1198
1199int Result_buffer::append_column(cdb2_hndl_tp *hndl, int col) {
1200 std::string typeStr;
1201 std::string column;
1202 char buffer[512];
1203 void *val;
1204
1205 val = cdb2_column_value(hndl, col);
1206
1207 if (val == NULL) {
1208 if (printmode & DISP_COLTYPE) {
1209 typeStr = "NULL";
1210 }
1211 column = "NULL";
1212 } else {
1213 int type = cdb2_column_type(hndl, col);
1214
1215 if (printmode & DISP_COLTYPE) {
1216 if (type >= MIN_COL_TYPE_NAME && type <= MAX_COL_TYPE_NAME) {
1217 typeStr = col_type_names[type];
1218 } else {
1219 typeStr = "UNKNOWN";
1220 }
1221 }
1222
1223 switch (type) {
1224 case CDB2_INTEGER:
1225 column = std::to_string(*(long long *)val);
1226 break;
1227 case CDB2_REAL: {
1228 int len =
1229 snprintf(buffer, sizeof(buffer), doublefmt, *(double *)val);
1230 assert(len < sizeof(buffer));
1231 column = buffer;
1232 break;
1233 }
1234 case CDB2_CSTRING: {
1235 char *c = (char *)val;
1236 column += "'";
1237
1238 while (*c) {
1239 if (*c == '\'')
1240 column += "''";
1241 else
1242 column += *c;
1243 c++;
1244 }
1245 column += "'";
1246 break;
1247 }
1248 case CDB2_BLOB: {
1249 int len = cdb2_column_size(cdb2h, col);
1250
1251 if (string_blobs) {
1252 char *c = (char *)val;
1253 column += '\'';
1254 while (len > 0) {
1255 if (isprint(*c) || *c == '\n' || *c == '\t') {
1256 column += *c;

Callers 1

run_statementFunction · 0.80

Calls 3

cdb2_column_valueFunction · 0.85
cdb2_column_typeFunction · 0.85
cdb2_column_sizeFunction · 0.85

Tested by

no test coverage detected