Drizzled Public API Documentation

statement_transform.h

Go to the documentation of this file.
00001 /* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
00002  *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
00003  *
00004  *  Copyright (C) 2009 Sun Microsystems, Inc.
00005  *  Copyright (C) 2010 Jay Pipes <jaypipes@gmail.com>
00006  *
00007  *  Authors:
00008  *
00009  *    Jay Pipes <jaypipes@gmail.com>
00010  *
00011  *  This program is free software; you can redistribute it and/or modify
00012  *  it under the terms of the GNU General Public License as published by
00013  *  the Free Software Foundation; version 2 of the License.
00014  *
00015  *  This program is distributed in the hope that it will be useful,
00016  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  *  GNU General Public License for more details.
00019  *
00020  *  You should have received a copy of the GNU General Public License
00021  *  along with this program; if not, write to the Free Software
00022  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00023  */
00024 
00032 #pragma once
00033 
00034 #include <drizzled/message/table.pb.h>
00035 #include <string>
00036 #include <vector>
00037 
00038 #include <drizzled/common.h>
00039 
00040 namespace drizzled
00041 {
00042 namespace message
00043 {
00044 /* some forward declarations */
00045 class Transaction;
00046 class Statement;
00047 class InsertHeader;
00048 class InsertData;
00049 class InsertRecord;
00050 class UpdateHeader;
00051 class UpdateData;
00052 class UpdateRecord;
00053 class DeleteHeader;
00054 class DeleteData;
00055 class DeleteRecord;
00056 class DropTableStatement;
00057 class CreateTableStatement;
00058 class TruncateTableStatement;
00059 class CreateSchemaStatement;
00060 class DropSchemaStatement;
00061 class AlterSchemaStatement;
00062 class SetVariableStatement;
00063 
00065 enum TransformSqlVariant
00066 {
00067   ANSI,
00068   MYSQL_4,
00069   MYSQL_5,
00070   DRIZZLE
00071 };
00072 
00074 enum TransformSqlError
00075 {
00076   NONE= 0,
00077   MISSING_HEADER= 1, /* A data segment without a header segment was found */
00078   MISSING_DATA= 2,   /* A header segment without a data segment was found */
00079   UUID_MISMATCH= 3
00080 };
00081 
00096 enum TransformSqlError
00097 transformStatementToSql(const Statement &source,
00098                         std::vector<std::string> &sql_strings,
00099                         enum TransformSqlVariant sql_variant= DRIZZLE,
00100                         bool already_in_transaction= false);
00101 
00124 enum TransformSqlError
00125 transformInsertStatementToSql(const InsertHeader &header,
00126                               const InsertData &data,
00127                               std::string &destination,
00128                               enum TransformSqlVariant sql_variant= DRIZZLE);
00129 
00145 enum TransformSqlError
00146 transformInsertRecordToSql(const InsertHeader &header,
00147                            const InsertRecord &record,
00148                            std::string &destination,
00149                            enum TransformSqlVariant sql_variant= DRIZZLE);
00150 
00164 enum TransformSqlError
00165 transformInsertHeaderToSql(const InsertHeader &header,
00166                            std::string &destination,
00167                            enum TransformSqlVariant sql_variant= DRIZZLE);
00168 
00182 enum TransformSqlError
00183 transformUpdateHeaderToSql(const UpdateHeader &header,
00184                            std::string &destination,
00185                            enum TransformSqlVariant sql_variant= DRIZZLE);
00186 
00202 enum TransformSqlError
00203 transformUpdateRecordToSql(const UpdateHeader &header,
00204                            const UpdateRecord &record,
00205                            std::string &destination,
00206                            enum TransformSqlVariant sql_variant= DRIZZLE);
00207 
00228 enum TransformSqlError
00229 transformDeleteStatementToSql(const DeleteHeader &header,
00230                               const DeleteData &data,
00231                               std::string &destination,
00232                               enum TransformSqlVariant sql_variant= DRIZZLE);
00233 
00249 enum TransformSqlError
00250 transformDeleteRecordToSql(const DeleteHeader &header,
00251                            const DeleteRecord &record,
00252                            std::string &destination,
00253                            enum TransformSqlVariant sql_variant= DRIZZLE);
00254 
00268 enum TransformSqlError
00269 transformDeleteHeaderToSql(const DeleteHeader &header,
00270                            std::string &destination,
00271                            enum TransformSqlVariant sql_variant= DRIZZLE);
00272 
00287 enum TransformSqlError
00288 transformDropTableStatementToSql(const DropTableStatement &statement,
00289                                   std::string &destination,
00290                                   enum TransformSqlVariant sql_variant= DRIZZLE);
00291 
00306 enum TransformSqlError
00307 transformTruncateTableStatementToSql(const TruncateTableStatement &statement,
00308                                      std::string &destination,
00309                                      enum TransformSqlVariant sql_variant= DRIZZLE);
00310 
00325 enum TransformSqlError
00326 transformCreateSchemaStatementToSql(const CreateSchemaStatement &statement,
00327                                     std::string &destination,
00328                                     enum TransformSqlVariant sql_variant= DRIZZLE);
00329 
00344 enum TransformSqlError
00345 transformDropSchemaStatementToSql(const DropSchemaStatement &statement,
00346                                   std::string &destination,
00347                                   enum TransformSqlVariant sql_variant= DRIZZLE);
00348 
00363 enum TransformSqlError
00364 transformAlterSchemaStatementToSql(const AlterSchemaStatement &statement,
00365                                    std::string &destination,
00366                                    enum TransformSqlVariant sql_variant= DRIZZLE);
00367 
00382 enum TransformSqlError
00383 transformSetVariableStatementToSql(const SetVariableStatement &statement,
00384                                    std::string &destination,
00385                                    enum TransformSqlVariant sql_variant= DRIZZLE);
00386 
00392 enum TransformSqlError
00393 transformCreateTableStatementToSql(const CreateTableStatement &statement,
00394                                    std::string &destination,
00395                                    enum TransformSqlVariant sql_variant= DRIZZLE);
00396 
00409 enum TransformSqlError
00410 transformTableDefinitionToSql(const Table &table,
00411                               std::string &destination,
00412                               enum TransformSqlVariant sql_variant= DRIZZLE,
00413                               bool with_schema= true);
00414 
00432 enum TransformSqlError
00433 transformTableOptionsToSql(const Table::TableOptions &table_options,
00434                            std::string &destination,
00435                            enum TransformSqlVariant sql_variant= DRIZZLE);
00436 
00451 enum TransformSqlError
00452 transformIndexDefinitionToSql(const Table::Index &index,
00453                               const Table &table,
00454                               std::string &destination,
00455                               enum TransformSqlVariant sql_variant= DRIZZLE);
00456 
00471 enum TransformSqlError
00472 transformForeignKeyConstraintDefinitionToSql(const Table::ForeignKeyConstraint &fkey,
00473                                              const Table &table,
00474                                              std::string &destination,
00475                                              enum TransformSqlVariant sql_variant = DRIZZLE);
00476 
00490 enum TransformSqlError
00491 transformFieldDefinitionToSql(const Table::Field &field,
00492                               std::string &destination,
00493                               enum TransformSqlVariant sql_variant= DRIZZLE);
00494 
00501 bool shouldQuoteFieldValue(Table::Field::FieldType in_type);
00502 
00503 drizzled::message::Table::Field::FieldType internalFieldTypeToFieldProtoType(enum enum_field_types type);
00504 
00512 bool transactionContainsBulkSegment(const Transaction &transaction);
00513 
00514 } /* namespace message */
00515 } /* namespace drizzled */
00516