23 #include <boost/lexical_cast.hpp>
24 #include <drizzled/field.h>
25 #include <drizzled/plugin/client/concurrent.h>
26 #include <drizzled/sql/result_set.h>
54 while (
Item* item= it++)
57 item->make_field(&field);
60 _result_set->setColumnCount(max_column);
65 virtual void sendError(drizzled::error_t error_code,
const char *error_message)
67 _result_set->pushException(
sql::Exception(error_message, error_code));
70 virtual void checkRowBegin()
72 if (currentColumn() == 0)
74 _result_set->createRow();
78 virtual void checkRowEnd()
85 virtual void store(Field *from)
90 char buff[MAX_FIELD_WIDTH];
91 String str(buff,
sizeof(buff), &my_charset_bin);
92 from->val_str_internal(&str);
94 return store(str.ptr(), str.length());
100 _result_set->setColumnNull(currentColumn());
104 virtual void store(int32_t from)
107 _result_set->setColumn(currentColumn(), boost::lexical_cast<std::string>(from));
111 virtual void store(uint32_t from)
114 _result_set->setColumn(currentColumn(), boost::lexical_cast<std::string>(from));
118 virtual void store(int64_t from)
121 _result_set->setColumn(currentColumn(), boost::lexical_cast<std::string>(from));
125 virtual void store(uint64_t from)
128 _result_set->setColumn(currentColumn(), boost::lexical_cast<std::string>(from));
132 virtual void store(
double from, uint32_t decimals, String *buffer)
135 buffer->set_real(from, decimals, &my_charset_bin);
136 return store(buffer->ptr(), buffer->length());
139 virtual void store(
const char *from,
size_t length)
142 _result_set->setColumn(currentColumn(), std::string(from, length));
146 inline uint32_t currentColumn()
const
148 return column % max_column;