You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-12-18 13:54:11 +03:00
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.
67 lines
1.8 KiB
C++
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
|