summaryrefslogtreecommitdiff
path: root/ndb/src/old_files/client/odbc/codegen/Code_table.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'ndb/src/old_files/client/odbc/codegen/Code_table.hpp')
-rw-r--r--ndb/src/old_files/client/odbc/codegen/Code_table.hpp202
1 files changed, 0 insertions, 202 deletions
diff --git a/ndb/src/old_files/client/odbc/codegen/Code_table.hpp b/ndb/src/old_files/client/odbc/codegen/Code_table.hpp
deleted file mode 100644
index 8a95b8fa26c..00000000000
--- a/ndb/src/old_files/client/odbc/codegen/Code_table.hpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/* Copyright (C) 2003 MySQL AB
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-
-#ifndef ODBC_CODEGEN_Code_table_hpp
-#define ODBC_CODEGEN_Code_table_hpp
-
-#include <vector>
-#include <common/common.hpp>
-#include "Code_base.hpp"
-
-class DictTable;
-class DictColumn;
-class DictIndex;
-class Plan_query_filter;
-class Plan_query_lookup;
-class Plan_query_range;
-class Plan_column;
-class Plan_expr_column;
-class Plan_select;
-class Plan_delete;
-class Plan_delete_lookup;
-class Plan_update;
-class Plan_update_lookup;
-
-/**
- * @class Plan_table
- * @brief Table node in PlanTree
- *
- * This is a pure Plan node. Final executable nodes have table
- * information built-in.
- */
-class Plan_table : public Plan_base {
-public:
- Plan_table(Plan_root* root, const BaseString& name);
- virtual ~Plan_table();
- Plan_base* analyze(Ctx& ctx, Ctl& ctl);
- Exec_base* codegen(Ctx& ctx, Ctl& ctl);
- void print(Ctx& ctx);
- // attributes
- const BaseString& getName() const;
- const BaseString& getCname() const;
- const char* getPrintName() const;
- void setCname(const BaseString& cname);
- const DictTable& dictTable() const;
- unsigned indexCount() const;
- // resolve
- const ColumnVector& exprColumns() const;
- const ColumnVector& dmlColumns() const;
-protected:
- friend class Plan_column;
- friend class Plan_query_filter;
- friend class Plan_query_lookup;
- friend class Plan_query_index;
- friend class Plan_query_range;
- friend class Plan_expr_column;
- friend class Plan_select;
- friend class Plan_delete;
- friend class Plan_delete_lookup;
- friend class Plan_delete_index;
- friend class Plan_update;
- friend class Plan_update_lookup;
- friend class Plan_update_index;
- BaseString m_name;
- BaseString m_cname;
- BaseString m_printName;
- DictTable* m_dictTable;
- /*
- * Resolve column. Returns 1 on found, 0 on not found, and -1 on error.
- * Modifies both table and column data.
- */
- int resolveColumn(Ctx& ctx, Plan_column* column, bool stripSchemaName = false);
- ColumnVector m_exprColumns;
- ColumnVector m_dmlColumns;
- /*
- * Offset for resolved columns in join. This is sum over m_exprColumns
- * lengths for all preceding tables.
- */
- unsigned m_resOff;
- /*
- * Each column in primary key and unique hash index has list of
- * expressions it is set equal to in the where-clause (at top level).
- */
- bool resolveEq(Ctx& ctx, Plan_expr_column* column, Plan_expr* expr);
- /*
- * Index struct for primary key and indexes.
- */
- struct Index {
- Index() :
- m_pos(0),
- m_keyFound(false),
- m_dictIndex(0),
- m_rank(~0),
- m_keyCount(0),
- m_keyCountUsed(0) {
- }
- unsigned m_pos;
- ExprListVector m_keyEqList;
- bool m_keyFound;
- ExprVector m_keyEq;
- TableSet m_keySet;
- const DictIndex* m_dictIndex; // for index only
- unsigned m_rank; // 0-pk 1-hash index 2-ordered index
- unsigned m_keyCount; // number of columns
- unsigned m_keyCountUsed; // may be less for ordered index
- unsigned m_keyCountUnused; // m_keyCount - m_keyCountUsed
- };
- typedef std::vector<Index> IndexList; // primary key is entry 0
- IndexList m_indexList;
- /*
- * Find set of additional tables (maybe empty) required to resolve the key
- * columns.
- */
- void resolveSet(Ctx& ctx, Index& index, const TableSet& tsDone);
- void resolveSet(Ctx& ctx, Index& index, const TableSet& tsDone, ExprVector& keyEq, unsigned n);
- /*
- * Check for exactly one key or index match.
- */
- bool exactKey(Ctx& ctx, const Index* indexKey) const;
-};
-
-inline
-Plan_table::Plan_table(Plan_root* root, const BaseString& name) :
- Plan_base(root),
- m_name(name),
- m_printName(name),
- m_dictTable(0),
- m_exprColumns(1), // 1-based
- m_dmlColumns(1), // 1-based
- m_resOff(0),
- m_indexList(1)
-{
-}
-
-inline const BaseString&
-Plan_table::getName() const
-{
- return m_name;
-}
-
-inline const BaseString&
-Plan_table::getCname() const
-{
- return m_cname;
-}
-
-inline const char*
-Plan_table::getPrintName() const
-{
- return m_printName.c_str();
-}
-
-inline void
-Plan_table::setCname(const BaseString& cname)
-{
- m_cname.assign(cname);
- m_printName.assign(m_name);
- if (! m_cname.empty()) {
- m_printName.append(" ");
- m_printName.append(m_cname);
- }
-}
-
-inline const DictTable&
-Plan_table::dictTable() const
-{
- ctx_assert(m_dictTable != 0);
- return *m_dictTable;
-}
-
-inline unsigned
-Plan_table::indexCount() const
-{
- ctx_assert(m_indexList.size() > 0);
- return m_indexList.size() - 1;
-}
-
-inline const Plan_table::ColumnVector&
-Plan_table::exprColumns() const
-{
- return m_exprColumns;
-}
-
-inline const Plan_table::ColumnVector&
-Plan_table::dmlColumns() const
-{
- return m_dmlColumns;
-}
-
-#endif