1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-12-18 13:54:11 +03:00
Files
mariadb-columnstore-engine/dbcon/mysql/ha_view.h
Gagan Goel 22c7fb7c01 MCOL-4680 FROM subquery containing nested joins returns an error.
Main theme of the patch is to fix joins processing in the plugin
code. We now use SELECT_LEX::top_join_list and process the nested
joins recursively, instead of SELECT_LEX::table_list struct which
we earlier used to build the join filters. The earlier approach
did not process certain nested join ON expressions, causing certain
queries to incorrectly error out such as that described in MCOL-4680.

In addition, some legacy code is also removed.
2021-05-03 06:28:27 +00:00

67 lines
1.8 KiB
C++

/* Copyright (C) 2014 InfiniDB, Inc.
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; version 2 of
the License.
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., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA. */
/***********************************************************************
* $Id: ha_view.h 9210 2013-01-21 14:10:42Z rdempsey $
*
*
***********************************************************************/
/** @file */
/** class View interface */
#ifndef HA_VIEW
#define HA_VIEW
//#undef LOG_INFO
#include "ha_mcs_impl_if.h"
#include "idb_mysql.h"
namespace execplan
{
class CalpontSystemCatalog;
}
namespace cal_impl_if
{
class View
{
public:
View(SELECT_LEX& select, gp_walk_info* parentGwip) :
fSelect(select),
fParentGwip(parentGwip) {}
~View() {}
execplan::CalpontSystemCatalog::TableAliasName& viewName();
void viewName(execplan::CalpontSystemCatalog::TableAliasName& viewName);
/** get execution plan for this view. merge the table list and join list to the
parent select.
*/
void transform();
uint32_t processJoin(gp_walk_info& gwi, std::stack<execplan::ParseTree*>&);
private:
SELECT_LEX fSelect;
gp_walk_info* fParentGwip;
execplan::CalpontSystemCatalog::TableAliasName fViewName;
};
}
#endif