23 #include <drizzled/memory/sql_alloc.h>
24 #include <drizzled/sql_list.h>
25 #include <drizzled/natural_join_column.h>
26 #include <drizzled/item/field.h>
39 virtual void next()= 0;
40 virtual bool end_of_fields()
const= 0;
41 virtual const char *name()
const= 0;
43 virtual Field *field()= 0;
58 void set_table(
Table *table);
59 void next() { ptr++; }
60 bool end_of_fields()
const {
return *ptr == 0; }
61 const char *name()
const;
63 Field *field() {
return *ptr; }
82 bool end_of_fields()
const {
return not cur_column_ref; }
83 const char *name()
const {
return cur_column_ref->name(); }
84 Item *create_item(
Session *session) {
return cur_column_ref->create_item(session); }
85 Field *field() {
return cur_column_ref->field(); }
108 TableList *table_ref, *first_leaf, *last_leaf;
112 void set_field_iterator();
117 bool end_of_fields()
const
118 {
return (table_ref == last_leaf && field_it->end_of_fields()); }
119 const char *name()
const {
return field_it->name(); }
120 const char *table_name();
121 const char *db_name();
122 Item *create_item(
Session *session) {
return field_it->create_item(session); }
123 Field *field() {
return field_it->field(); }