4449
4449
Values may be converted with 'replace_column'
4452
static void append_result(string *ds, drizzle_result_st *res)
4452
static void append_result(string *ds, drizzle::result_c& res)
4454
uint32_t num_fields= drizzle_result_column_count(res);
4455
while (drizzle_row_t row = drizzle_row_next(res))
4454
uint32_t num_fields= res.column_count();
4455
while (drizzle_row_t row = res.row_next())
4457
size_t* lengths = drizzle_row_field_sizes(res);
4458
drizzle_column_seek(res, 0);
4457
size_t* lengths = res.row_field_sizes();
4459
4459
for (uint32_t i = 0; i < num_fields; i++)
4461
drizzle_column_st* column= drizzle_column_next(res);
4462
if (row[i] && (drizzle_column_type(column) == DRIZZLE_COLUMN_TYPE_TINY))
4461
drizzle_column_st* column= res.column_next();
4462
if (row[i] && drizzle_column_type(column) == DRIZZLE_COLUMN_TYPE_TINY)
4464
4464
if (boost::lexical_cast<uint32_t>(row[i]))
4466
if ((drizzle_column_flags(column) & DRIZZLE_COLUMN_FLAGS_UNSIGNED))
4466
if (drizzle_column_flags(column) & DRIZZLE_COLUMN_FLAGS_UNSIGNED)
4468
4468
append_field(ds, i, column, "YES", 3, false);
4499
4499
Append metadata for fields to output
4502
static void append_metadata(string *ds, drizzle_result_st *res)
4502
static void append_metadata(string *ds, drizzle::result_c& res)
4504
drizzle_column_st *column;
4505
4504
ds->append("Catalog\tDatabase\tTable\tTable_alias\tColumn\t"
4506
4505
"Column_alias\tType\tLength\tMax length\tIs_null\t"
4507
4506
"Flags\tDecimals\tCharsetnr\n");
4509
drizzle_column_seek(res, 0);
4510
while ((column= drizzle_column_next(res)))
4509
while (drizzle_column_st* column= res.column_next())
4512
ds->append(drizzle_column_catalog(column),
4513
strlen(drizzle_column_catalog(column)));
4514
ds->append("\t", 1);
4511
ds->append(drizzle_column_catalog(column), strlen(drizzle_column_catalog(column)));
4515
4513
ds->append(drizzle_column_db(column), strlen(drizzle_column_db(column)));
4516
ds->append("\t", 1);
4517
ds->append(drizzle_column_orig_table(column),
4518
strlen(drizzle_column_orig_table(column)));
4519
ds->append("\t", 1);
4520
ds->append(drizzle_column_table(column),
4521
strlen(drizzle_column_table(column)));
4522
ds->append("\t", 1);
4523
ds->append(drizzle_column_orig_name(column),
4524
strlen(drizzle_column_orig_name(column)));
4525
ds->append("\t", 1);
4526
ds->append(drizzle_column_name(column),
4527
strlen(drizzle_column_name(column)));
4528
ds->append("\t", 1);
4515
ds->append(drizzle_column_orig_table(column), strlen(drizzle_column_orig_table(column)));
4517
ds->append(drizzle_column_table(column), strlen(drizzle_column_table(column)));
4519
ds->append(drizzle_column_orig_name(column), strlen(drizzle_column_orig_name(column)));
4521
ds->append(drizzle_column_name(column), strlen(drizzle_column_name(column)));
4529
4523
replace_append_uint(ds, drizzle_column_type_drizzle(column));
4530
ds->append("\t", 1);
4531
4525
replace_append_uint(ds, drizzle_column_size(column));
4532
ds->append("\t", 1);
4533
if (drizzle_column_type(column) == DRIZZLE_COLUMN_TYPE_TINY)
4535
replace_append_uint(ds, 1);
4539
replace_append_uint(ds, drizzle_column_max_size(column));
4541
ds->append("\t", 1);
4542
ds->append((char*) ((drizzle_column_flags(column) & DRIZZLE_COLUMN_FLAGS_NOT_NULL) ? "N" : "Y"), 1);
4543
ds->append("\t", 1);
4527
replace_append_uint(ds, drizzle_column_type(column) == DRIZZLE_COLUMN_TYPE_TINY ? 1 : drizzle_column_max_size(column));
4529
ds->append((drizzle_column_flags(column) & DRIZZLE_COLUMN_FLAGS_NOT_NULL) ? "N" : "Y", 1);
4544
4531
replace_append_uint(ds, drizzle_column_flags(column));
4545
ds->append("\t", 1);
4546
4533
replace_append_uint(ds, drizzle_column_decimals(column));
4547
ds->append("\t", 1);
4548
4535
replace_append_uint(ds, drizzle_column_charset(column));
4549
ds->append("\n", 1);
4574
4561
Display the table headings with the names tab separated
4577
static void append_table_headings(string& ds, drizzle_result_st* res)
4564
static void append_table_headings(string& ds, drizzle::result_c& res)
4579
4566
uint32_t col_idx= 0;
4580
drizzle_column_seek(res, 0);
4581
while (drizzle_column_st* column= drizzle_column_next(res))
4568
while (drizzle_column_st* column= res.column_next())
4595
4582
Number of warnings appended to ds
4598
static int append_warnings(string& ds, drizzle_con_st *con, drizzle_result_st *res)
4585
static int append_warnings(string& ds, drizzle_con_st *con, drizzle::result_c& res)
4600
uint32_t count= drizzle_result_warning_count(res);
4587
uint32_t count= drizzle_result_warning_count(&res.b_);
4634
4621
static void run_query_normal(st_connection *cn,
4635
4622
st_command* command,
4636
4623
int flags, char *query, int query_len,
4637
string *ds, string *ds_warnings)
4624
string *ds, string& ds_warnings)
4639
4626
drizzle_return_t ret;
4640
4627
drizzle_con_st *con= &cn->con;
4709
4696
if (res.column_count())
4711
4698
if (display_metadata)
4712
append_metadata(ds, &res.b_);
4699
append_metadata(ds, res);
4714
4701
if (!display_result_vertically)
4715
append_table_headings(*ds, &res.b_);
4702
append_table_headings(*ds, res);
4717
append_result(ds, &res.b_);
4704
append_result(ds, res);
4732
4719
if (!disable_warnings)
4734
4721
drizzle_con_remove_options(con, DRIZZLE_CON_NO_RESULT_READ);
4735
if (append_warnings(*ds_warnings, con, &res.b_) || ds_warnings->length())
4722
if (append_warnings(ds_warnings, con, res) || not ds_warnings.empty())
4737
4724
ds->append("Warnings:\n", 10);
4738
*ds += *ds_warnings;
4955
4942
Always run with normal C API if it's not a complete
4958
run_query_normal(cn, command, flags, query, query_len, ds, &ds_warnings);
4945
run_query_normal(cn, command, flags, query, query_len, ds, ds_warnings);
4960
4947
if (display_result_sorted)