00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #pragma once
00021
00022 namespace drizzled {
00023
00028 class CacheField {
00029
00030
00031
00032
00033 public:
00034 unsigned char *str;
00035 uint32_t length;
00036 uint32_t blob_length;
00037 Field_blob *blob_field;
00038 bool strip;
00039 Table *get_rowid;
00040
00041 CacheField():
00042 str(NULL),
00043 length(0),
00044 blob_length(0),
00045 blob_field(NULL),
00046 strip(false),
00047 get_rowid(NULL)
00048 {}
00049
00050 };
00051
00052 class JoinCache
00053 {
00054 public:
00055 unsigned char *buff;
00056 unsigned char *pos;
00057 unsigned char *end;
00058 uint32_t records;
00059 uint32_t record_nr;
00060 uint32_t ptr_record;
00061
00062
00063
00064
00065
00066
00067
00068 uint32_t fields;
00069 uint32_t length;
00070 uint32_t blobs;
00071 CacheField *field;
00072 CacheField **blob_ptr;
00073 optimizer::SqlSelect *select;
00074
00075 JoinCache():
00076 buff(NULL),
00077 pos(NULL),
00078 end(NULL),
00079 records(0),
00080 record_nr(0),
00081 ptr_record(0),
00082 fields(0),
00083 length(0),
00084 blobs(0),
00085 field(NULL),
00086 blob_ptr(NULL),
00087 select(NULL)
00088 {}
00089
00090 void reset_cache_read();
00091 void reset_cache_write();
00092 bool store_record_in_cache();
00093 };
00094
00095 int join_init_cache(Session *session, JoinTable *tables, uint32_t table_count);
00096
00097 }
00098