24 #ifndef PARSER_NODE_H_
25 #define PARSER_NODE_H_
32 #include <boost/algorithm/string/predicate.hpp>
33 #include <boost/process/search_path.hpp>
35 #include "../Analyzer/Analyzer.h"
36 #include "../Catalog/Catalog.h"
37 #include "../Distributed/AggregatedResult.h"
38 #include "../Shared/sqldefs.h"
39 #include "../Shared/sqltypes.h"
43 #include "../Fragmenter/InsertDataLoader.h"
50 namespace query_state {
78 : ddl_utils::
SqlType(t, p1, p2, a, array_size) {}
80 : ddl_utils::
SqlType(t, -1, 0, a, array_size) {}
95 virtual std::shared_ptr<Analyzer::Expr>
analyze(
99 virtual std::string
to_string()
const = 0;
108 std::shared_ptr<Analyzer::Expr>
analyze(
112 std::string
to_string()
const override = 0;
122 std::shared_ptr<Analyzer::Expr>
analyze(
126 std::string
to_string()
const override {
return "NULL"; }
137 std::shared_ptr<Analyzer::Expr>
analyze(
141 static std::shared_ptr<Analyzer::Expr>
analyzeValue(
const std::string&);
156 std::shared_ptr<Analyzer::Expr>
analyze(
162 return boost::lexical_cast<std::string>(
intval);
177 std::shared_ptr<Analyzer::Expr>
analyze(
181 static std::shared_ptr<Analyzer::Expr>
analyzeValue(
const int64_t numericval,
183 const int precision);
198 std::shared_ptr<Analyzer::Expr>
analyze(
203 return boost::lexical_cast<std::string>(
floatval);
218 std::shared_ptr<Analyzer::Expr>
analyze(
223 return boost::lexical_cast<std::string>(
doubleval);
237 std::shared_ptr<Analyzer::Expr>
analyze(
241 static std::shared_ptr<Analyzer::Expr>
get(
const int64_t);
259 std::shared_ptr<Analyzer::Expr>
analyze(
263 static std::shared_ptr<Analyzer::Expr>
get(
const std::string&);
264 std::string
to_string()
const override {
return "USER"; }
276 for (
const auto e : *v) {
282 std::shared_ptr<Analyzer::Expr>
analyze(
305 std::shared_ptr<Analyzer::Expr>
analyze(
309 static std::shared_ptr<Analyzer::Expr>
normalize(
312 std::shared_ptr<Analyzer::Expr> left_expr,
313 std::shared_ptr<Analyzer::Expr> right_expr);
334 std::shared_ptr<Analyzer::Expr>
analyze(
348 std::shared_ptr<Analyzer::Expr>
analyze(
356 std::unique_ptr<Expr>
arg;
368 std::shared_ptr<Analyzer::Expr>
analyze(
376 std::unique_ptr<Expr>
arg;
387 std::shared_ptr<Analyzer::Expr>
analyze(
405 for (
const auto e : *v) {
411 std::shared_ptr<Analyzer::Expr>
analyze(
433 std::shared_ptr<Analyzer::Expr>
analyze(
441 std::unique_ptr<Expr>
arg;
456 std::shared_ptr<Analyzer::Expr>
analyze(
463 std::unique_ptr<Expr>
arg;
476 std::shared_ptr<Analyzer::Expr>
analyze(
483 std::unique_ptr<Expr>
arg;
498 std::shared_ptr<Analyzer::Expr>
analyze(
502 static std::shared_ptr<Analyzer::Expr>
get(std::shared_ptr<Analyzer::Expr> arg_expr,
503 std::shared_ptr<Analyzer::Expr> like_expr,
504 std::shared_ptr<Analyzer::Expr> escape_expr,
512 std::unique_ptr<Expr>
arg;
516 static void check_like_expr(
const std::string& like_str,
char escape_char);
533 std::shared_ptr<Analyzer::Expr>
analyze(
537 static std::shared_ptr<Analyzer::Expr>
get(std::shared_ptr<Analyzer::Expr> arg_expr,
538 std::shared_ptr<Analyzer::Expr> pattern_expr,
539 std::shared_ptr<Analyzer::Expr> escape_expr,
545 std::unique_ptr<Expr>
arg;
563 std::shared_ptr<Analyzer::Expr>
analyze(
567 static std::shared_ptr<Analyzer::Expr>
get(std::shared_ptr<Analyzer::Expr> arg_expr,
574 std::unique_ptr<Expr>
arg;
586 std::shared_ptr<Analyzer::Expr>
analyze(
606 std::shared_ptr<Analyzer::Expr>
analyze(
629 std::shared_ptr<Analyzer::Expr>
analyze(
636 std::unique_ptr<std::string>
name;
638 std::unique_ptr<Expr>
arg;
644 std::shared_ptr<Analyzer::Expr>
analyze(
649 return "CAST(" +
arg->to_string() +
" AS " +
target_type->to_string() +
")";
653 std::unique_ptr<Expr>
arg;
672 for (
const auto e : *w) {
677 std::shared_ptr<Analyzer::Expr>
analyze(
681 static std::shared_ptr<Analyzer::Expr>
normalize(
683 std::pair<std::shared_ptr<Analyzer::Expr>, std::shared_ptr<Analyzer::Expr>>>&,
684 const std::shared_ptr<Analyzer::Expr>);
827 for (
const auto s : *cl) {
848 ForeignKeyDef(std::list<std::string*>* cl, std::string*
t, std::list<std::string*>* fcl)
851 for (
const auto s : *cl) {
856 for (
const auto s : *fcl) {
897 const std::string& foreign_table,
898 const std::string foreign_column)
938 std::unique_ptr<std::string>
name;
947 virtual const std::string*
get_table()
const = 0;
959 const std::string* storage,
960 std::list<TableElement*>* table_elems,
963 std::list<NameValueAssign*>* s)
966 for (
const auto e : *table_elems) {
971 for (
const auto e : *s) {
989 std::list<ColumnDescriptor>& columns,
990 std::vector<SharedDictionaryDef>& shared_dict_defs);
1005 std::string& sql_query_string) = 0;
1007 std::string& sql_query_string,
1008 std::vector<size_t> outer_frag_indices,
1009 bool allow_interrupt) = 0;
1022 std::string& sql_query_string,
1023 std::vector<size_t> outer_frag_indices,
1025 bool allow_interrupt);
1027 std::string& sql_query_string,
1028 std::vector<size_t> outer_frag_indices,
1029 bool allow_interrupt)
override;
1032 const size_t leaf_idx,
1047 std::list<TableElement*>* table_elems,
1049 std::list<NameValueAssign*>* s)
1052 for (
const auto e : *table_elems) {
1057 for (
const auto e : *s) {
1086 const std::string* select_query,
1087 std::list<std::string*>* c)
1097 delete select_query;
1102 bool validate_table,
1103 bool for_CTAS =
false);
1125 const std::string* select_query,
1126 const bool is_temporary,
1127 const bool if_not_exists,
1128 std::list<NameValueAssign*>* s)
1133 for (
const auto& e : *s) {
1183 throw std::runtime_error(
"Table name is required for OPTIMIZE command.");
1186 for (
const auto e : *o) {
1197 if (boost::iequals(*(e->get_name()),
"VACUUM")) {
1218 throw std::runtime_error(
"Validation Type is required for VALIDATE command.");
1220 std::list<std::unique_ptr<NameValueAssign>> options;
1222 for (
const auto e : *with_opts) {
1223 options.emplace_back(e);
1227 for (
const auto& opt : options) {
1228 if (boost::iequals(*opt->get_name(),
"REPAIR_TYPE")) {
1229 const auto repair_type =
1230 static_cast<const StringLiteral*
>(opt->get_value())->get_stringval();
1232 if (boost::iequals(*repair_type,
"REMOVE")) {
1235 throw std::runtime_error(
"REPAIR_TYPE must be REMOVE.");
1238 throw std::runtime_error(
"The only VALIDATE WITH options is REPAIR_TYPE.");
1285 std::pair<std::unique_ptr<std::string>, std::unique_ptr<std::string>>;
1294 RenameTableStmt(std::list<std::pair<std::string, std::string>> tableNames);
1318 for (
const auto coldef : *coldefs) {
1319 this->coldefs.emplace_back(
coldef);
1337 for (
const auto col : *cols) {
1338 this->
columns.emplace_back(col);
1368 std::list<NameValueAssign*>* options,
1369 const bool is_restore)
1370 :
table(tab), path(path) {
1371 auto options_deleter = [](std::list<NameValueAssign*>* options) {
1372 for (
auto option : *options) {
1377 std::unique_ptr<std::list<NameValueAssign*>, decltype(options_deleter)> options_ptr(
1378 options, options_deleter);
1379 std::vector<std::string> allowed_compression_programs{
"lz4",
"gzip",
"none"};
1382 for (
const auto option : *options) {
1383 if (boost::iequals(*option->get_name(),
"compression")) {
1384 if (
const auto str_literal =
1385 dynamic_cast<const StringLiteral*>(option->get_value())) {
1387 const std::string lowercase_compression =
1389 if (allowed_compression_programs.end() ==
1390 std::find(allowed_compression_programs.begin(),
1391 allowed_compression_programs.end(),
1392 lowercase_compression)) {
1393 throw std::runtime_error(
"Compression program " +
compression +
1394 " is not supported.");
1397 throw std::runtime_error(
"Compression option must be a string.");
1400 throw std::runtime_error(
"Invalid WITH option: " + *option->get_name());
1406 if (boost::process::search_path(
compression =
"gzip").string().empty()) {
1407 if (boost::process::search_path(
compression =
"lz4").string().empty()) {
1415 std::map<std::string, std::string> decompression{{
"lz4",
"unlz4"},
1416 {
"gzip",
"gunzip"}};
1418 const auto prog_path = boost::process::search_path(use_program);
1419 if (prog_path.string().empty()) {
1420 throw std::runtime_error(
"Compression program " + use_program +
" is not found.");
1422 compression =
"--use-compress-program=" + use_program;
1450 std::list<NameValueAssign*>* options)
1464 for (
const auto e : *o) {
1472 const std::function<std::unique_ptr<import_export::Importer>(
1489 std::string& geo_copy_from_file_name,
1491 std::string& geo_copy_from_partitions) {
1492 geo_copy_from_table = *
table;
1503 std::list<std::unique_ptr<NameValueAssign>>
options;
1540 std::vector<std::string>& v) {
1542 for (
auto str : *l) {
1558 std::list<std::string*>* g)
1586 std::list<std::string*>* g)
1710 std::list<SelectEntry*>* s,
1711 std::list<TableRef*>*
f,
1713 std::list<Expr*>* g,
1717 for (
const auto e : *s) {
1723 for (
const auto e : *f) {
1728 for (
const auto e : *g) {
1798 for (
const auto e : *o) {
1842 for (
const auto e : *o) {
1856 std::list<std::unique_ptr<NameValueAssign>>
options;
1861 std::string& layer_name,
1873 const std::string& select_query,
1874 const bool if_not_exists)
1914 CreateDBStmt(std::string* n, std::list<NameValueAssign*>* l,
const bool if_not_exists)
1917 for (
const auto e : *l) {
1955 for (
const auto e : *l) {
1976 for (
const auto e : *l) {
2011 for (
const auto e : *c) {
2038 for (
const auto e : *v) {
2079 for (
const auto e : *a) {
2115 template <
typename LITERAL_TYPE>
2120 template <
typename T>
2121 decltype(
auto) operator()(
T t) {
2122 const std::string property_name(boost::to_upper_copy<std::string>(*t->get_name()));
2123 if (!dynamic_cast<const IntLiteral*>(t->get_value())) {
2124 throw std::runtime_error(property_name +
" must be an integer literal.");
2126 const auto val =
static_cast<const IntLiteral*
>(t->get_value())->get_intval();
2128 throw std::runtime_error(property_name +
" must be a positive number.");
2135 template <
typename T>
2136 decltype(
auto) operator()(
T t) {
2137 const std::string property_name(boost::to_upper_copy<std::string>(*t->get_name()));
2138 if (!dynamic_cast<const IntLiteral*>(t->get_value())) {
2139 throw std::runtime_error(property_name +
" must be an integer literal.");
2141 const auto val =
static_cast<const IntLiteral*
>(t->get_value())->get_intval();
2143 throw std::runtime_error(property_name +
" must be greater than or equal to 0.");
2151 template <
typename T>
2152 decltype(
auto) operator()(
T t) {
2153 const auto val =
static_cast<const StringLiteral*
>(t->get_value())->get_stringval();
2155 const auto val_upper = boost::to_upper_copy<std::string>(*val);
2161 template <
typename T>
2162 decltype(
auto) operator()(
T t) {
2163 const auto val =
static_cast<const StringLiteral*
>(t->get_value())->get_stringval();
2169 template <
typename T>
2171 template <
typename T>
2190 const std::string& plan_result,
2191 std::shared_ptr<Catalog_Namespace::SessionInfo const> session_ptr);
2195 #endif // PARSERNODE_H_
virtual void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const =0
const ColumnConstraintDef * get_column_constraint() const
std::list< std::unique_ptr< ColumnDef > > coldefs
virtual void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const =0
OperExpr(SQLOps t, SQLQualifier q, Expr *l, Expr *r)
void execute_calcite_ddl(const std::string &ddl_statement, std::shared_ptr< Catalog_Namespace::SessionInfo const > session_ptr)
DumpRestoreTableStmtBase(std::string *tab, std::string *path, std::list< NameValueAssign * > *options, const bool is_restore)
const std::string foreign_column_
std::string & get_table() const
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
QuerySpec(bool d, std::list< SelectEntry * > *s, std::list< TableRef * > *f, Expr *w, std::list< Expr * > *g, Expr *h)
import_export::CopyParams _geo_copy_from_copy_params
std::unique_ptr< std::string > table_name
void execute(const Catalog_Namespace::SessionInfo &session) override
void execute(const Catalog_Namespace::SessionInfo &session) override
ValidateStmt(std::string *type, std::list< NameValueAssign * > *with_opts)
std::unique_ptr< std::string > username_
std::unique_ptr< std::string > name
std::unique_ptr< std::string > view_name
std::string filename(char const *path)
const Literal * get_value() const
LikelihoodExpr(bool n, Expr *a, float l)
std::unique_ptr< std::string > table
std::unique_ptr< std::string > role
const std::string & get_column() const
const std::string * get_table() const
const Expr * get_arg() const
std::list< std::unique_ptr< ExprPair > > when_then_list
std::unique_ptr< std::string > table
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
RevokePrivilegesStmt(std::list< std::string * > *p, std::string *t, std::string *o, std::list< std::string * > *g)
void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const override
GrantPrivilegesStmt(std::list< std::string * > *p, std::string *t, std::string *o, std::list< std::string * > *g)
std::unique_ptr< Expr > select_expr
ExportQueryStmt(std::string *q, std::string *p, std::list< NameValueAssign * > *o)
std::unique_ptr< Expr > where_clause
RestoreTableStmt(std::string *tab, std::string *path, std::list< NameValueAssign * > *options)
std::string to_string() const override
std::unique_ptr< Expr > arg
SQLType * get_column_type() const
std::unique_ptr< std::string > foreign_column
float get_likelihood() const
std::list< std::unique_ptr< TableRef > > from_clause
const std::string * get_table() const override
std::list< std::unique_ptr< NameValueAssign > > storage_options_
void setColumnDescriptor(ColumnDescriptor &cd, const ColumnDef *coldef)
void execute(const Catalog_Namespace::SessionInfo &session) override
const std::string * get_table() const
void execute(const Catalog_Namespace::SessionInfo &session) override
std::unique_ptr< std::string > table
class for a per-database catalog. also includes metadata for the current database and the current use...
const std::string getCompression() const
const std::string * get_table() const
const std::string * get_column() const
std::unique_ptr< std::string > column
void executeDryRun(const Catalog_Namespace::SessionInfo &session, TableDescriptor &td, std::list< ColumnDescriptor > &columns, std::vector< SharedDictionaryDef > &shared_dict_defs)
std::unique_ptr< std::string > user_name
std::unique_ptr< SQLType > target_type
const Expr * get_arg() const
SqlType(SQLTypes type, int param1, int param2, bool is_array, int array_size)
std::unique_ptr< std::string > table
std::unique_ptr< std::string > table
void parseOptions(import_export::CopyParams ©_params, import_export::QueryExporter::FileType &file_type, std::string &layer_name, import_export::QueryExporter::FileCompression &file_compression, import_export::QueryExporter::ArrayNullHandling &array_null_handling)
void execute(const Catalog_Namespace::SessionInfo &session) override
std::vector< std::string > roles
void execute(const Catalog_Namespace::SessionInfo &session) override
CreateTableStmt(std::string *tab, const std::string *storage, std::list< TableElement * > *table_elems, bool is_temporary, bool if_not_exists, std::list< NameValueAssign * > *s)
std::string & get_table()
virtual const std::list< std::unique_ptr< TableElement > > & get_table_element_list() const =0
const std::list< std::unique_ptr< TableElement > > & get_table_element_list() const override
std::unique_ptr< Expr > arg
std::list< std::unique_ptr< TableElement > > table_element_list_
CastExpr(Expr *a, SQLType *t)
float get_floatval() const
std::list< std::unique_ptr< NameValueAssign > > options
std::unique_ptr< Expr > lower
DropViewStmt(std::string *v, bool i)
FixedPtLiteral(std::string *n)
SQLType(SQLTypes t, int p1)
std::unique_ptr< std::string > table_
virtual ~LocalConnector()
const std::string getType() const
const std::string & get_role() const
static std::shared_ptr< Analyzer::Expr > analyzeValue(const int64_t intval)
auto const & getPreviousDatabaseName()
std::unique_ptr< QuerySpec > query
const Expr * get_pattern_string() const
const std::string column_
std::string to_string() const
std::unique_ptr< std::string > alias
std::unique_ptr< std::string > return_message
StringLiteral(std::string *s)
const Expr * get_select_expr() const
void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const override
const std::string getTableName() const
InsertStmt(std::string *t, std::list< std::string * > *c)
std::string to_string() const override
void populateData(QueryStateProxy, const TableDescriptor *td, bool validate_table, bool for_CTAS=false)
std::string to_string() const override
std::string to_string() const override
auto const & getNewDatabaseName()
std::vector< std::string > grantees
InsertValuesStmt(std::string *t, std::list< std::string * > *c, std::list< Expr * > *v)
const Expr * get_check_condition() const
UpdateStmt(std::string *t, std::list< Assignment * > *a, Expr *w)
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::unique_ptr< Expr > arg
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::unique_ptr< std::string > object
std::unique_ptr< Expr > check_condition
std::unique_ptr< std::string > table
const std::string * get_table() const
std::string to_string() const override
std::list< std::unique_ptr< std::string > > column_list
void execute(const Catalog_Namespace::SessionInfo &session) override
std::unique_ptr< std::string > path
const std::list< std::unique_ptr< OrderSpec > > & get_orderby_clause() const
AddColumnStmt(std::string *tab, std::list< ColumnDef * > *coldefs)
std::string to_string() const override=0
const std::list< std::unique_ptr< std::string > > & get_foreign_column_list() const
std::unique_ptr< std::string > object
std::unique_ptr< std::string > new_username_
DropColumnStmt(std::string *tab, std::list< std::string * > *cols)
void execute(const Catalog_Namespace::SessionInfo &session) override
DropDBStmt(std::string *n, bool if_exists)
void execute(const Catalog_Namespace::SessionInfo &session) override
const std::string & get_foreign_table() const
std::unique_ptr< Expr > where_clause
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
DistributedConnector * leafs_connector_
std::unique_ptr< std::string > user_name
SQLOps get_optype() const
std::unique_ptr< Expr > assignment
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::unique_ptr< std::string > table
void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const override=0
std::string to_string() const override
DropRoleStmt(std::string *r)
void parser_slistval_to_vector(std::list< std::string * > *l, std::vector< std::string > &v)
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
OptimizeTableStmt(std::string *table, std::list< NameValueAssign * > *o)
const Literal * get_defaultval() const
std::string to_string() const
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override=0
const Expr * get_arg() const
void execute(const Catalog_Namespace::SessionInfo &session) override
CaseExpr(std::list< ExprPair * > *w, Expr *e)
void insertDataToLeaf(const Catalog_Namespace::SessionInfo &session, const size_t leaf_idx, Fragmenter_Namespace::InsertData &insert_data) override
ShardKeyDef(const std::string &column)
CreateDBStmt(std::string *n, std::list< NameValueAssign * > *l, const bool if_not_exists)
std::unique_ptr< Literal > defaultval
std::unique_ptr< std::string > table_
static void check_pattern_expr(const std::string &pattern_str, char escape_char)
std::unique_ptr< std::string > table
size_t leafCount() override
const Expr * get_where_clause() const
void execute(const Catalog_Namespace::SessionInfo &session) override
std::unique_ptr< std::string > new_column_name
const std::vector< std::string > & get_roles() const
std::string to_string() const override
bool get_is_unionall() const
virtual ~DistributedConnector()
std::unique_ptr< ColumnConstraintDef > column_constraint
size_t determineLeafIndex(const Catalog_Namespace::Catalog &catalog, size_t num_leafs)
SQLType(SQLTypes t, int p1, int p2, bool a)
std::unique_ptr< Expr > arg
AlterTableParamStmt(std::string *tab, NameValueAssign *p)
std::unique_ptr< std::string > object_type
const std::string & get_column() const
TableRef(std::string *t, std::string *r)
AggregatedResult query(QueryStateProxy, std::string &sql_query_string, std::vector< size_t > outer_frag_indices, bool validate_only, bool allow_interrupt)
const std::string * get_table() const
const bool if_not_exists_
std::unique_ptr< Expr > arg
const Expr * get_arg() const
std::unique_ptr< std::string > object_type
const Expr * get_arg() const
SQLType(SQLTypes t, bool a, int array_size)
std::unique_ptr< Expr > arg
static bool translate_to_like_pattern(std::string &pattern_str, char escape_char)
void execute(const Catalog_Namespace::SessionInfo &session) override
const std::list< std::unique_ptr< Expr > > & get_value_list() const
ColumnConstraintDef(bool n, bool u, bool p, Literal *d)
std::unique_ptr< std::string > file_path
ColumnRef(std::string *n1, std::string *n2)
SelectStmt(QueryExpr *q, std::list< OrderSpec * > *o, int64_t l, int64_t f)
void execute(const Catalog_Namespace::SessionInfo &session) override
std::unique_ptr< std::string > column
void execute(const Catalog_Namespace::SessionInfo &session) override
const std::string & get_object_type() const
const Expr * get_escape_string() const
std::unique_ptr< std::string > db_name
IsNullExpr(bool n, Expr *a)
const std::string & get_object() const
std::vector< std::string > roles
std::list< std::unique_ptr< Expr > > value_list
std::vector< std::string > privs
void execute(const Catalog_Namespace::SessionInfo &session) override
static std::shared_ptr< Analyzer::Expr > normalize(const std::list< std::pair< std::shared_ptr< Analyzer::Expr >, std::shared_ptr< Analyzer::Expr >>> &, const std::shared_ptr< Analyzer::Expr >)
std::list< std::unique_ptr< std::string > > columns
void analyze_having_clause(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const
std::string to_string() const override
const Expr * get_like_string() const
const std::string get_select_stmt() const
std::list< TableNamePair > tablesToRename
const std::vector< std::string > & get_grantees() const
void execute(const Catalog_Namespace::SessionInfo &session) override
const Expr * get_arg() const
std::string to_string() const override
const std::string & get_role() const
bool get_calc_encoded_length() const
std::unique_ptr< std::string > table
const SubqueryExpr * get_subquery() const
const std::list< std::unique_ptr< SelectEntry > > & get_select_clause() const
const std::string * getPath() const
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::list< std::unique_ptr< std::string > > foreign_column_list
std::string to_string() const override
const std::string * getTable() const
bool was_geo_copy_from() const
InSubquery(bool n, Expr *a, SubqueryExpr *q)
CreateRoleStmt(std::string *r)
const std::string * get_table_name() const
std::unique_ptr< Expr > expr2
const ColumnRef * get_column() const
std::unique_ptr< Expr > arg
const Expr * get_right() const
const std::string * get_stringval() const
std::list< std::unique_ptr< SelectEntry > > select_clause
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::list< std::unique_ptr< NameValueAssign > > name_value_list
std::list< std::unique_ptr< Expr > > value_list
std::string to_string() const override
ExprPair(Expr *e1, Expr *e2)
const std::string * get_fixedptval() const
const std::list< std::unique_ptr< Expr > > & get_value_list() const
const std::string & get_role() const
std::list< std::unique_ptr< NameValueAssign > > storage_options_
std::unique_ptr< ColumnRef > column
ForeignKeyDef(std::list< std::string * > *cl, std::string *t, std::list< std::string * > *fcl)
const std::vector< std::string > & get_grantees() const
std::unique_ptr< Expr > where_clause
std::unique_ptr< std::string > type_
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::unique_ptr< std::string > foreign_table
std::vector< std::string > grantees
std::unique_ptr< SQLType > column_type
const std::list< std::unique_ptr< std::string > > & get_column_list() const
std::unique_ptr< Expr > expr1
const std::list< std::unique_ptr< Expr > > & get_value_list() const
void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const override
std::list< std::unique_ptr< NameValueAssign > > name_value_list
SharedDictionaryDef(const std::string &column, const std::string &foreign_table, const std::string foreign_column)
std::unique_ptr< Expr > right
const Expr * get_check_condition() const
std::string & get_select_query()
const QueryExpr * get_left() const
virtual const std::string * get_table() const =0
const std::string & get_foreign_column() const
void analyze_where_clause(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const
void execute(const Catalog_Namespace::SessionInfo &session) override
const std::string * get_table() const
auto const & getUserName()
int64_t get_intval() const
void execute(const Catalog_Namespace::SessionInfo &session) override
const Expr * get_upper() const
std::unique_ptr< std::string > role
const std::list< std::unique_ptr< std::string > > & get_column_list() const
const Expr * get_where_clause() const
ColumnDef(std::string *c, SQLType *t, CompressDef *cp, ColumnConstraintDef *cc)
void execute(const Catalog_Namespace::SessionInfo &session) override
std::string select_query_
virtual size_t getOuterFragmentCount(QueryStateProxy, std::string &sql_query_string)=0
RevokeRoleStmt(std::list< std::string * > *r, std::list< std::string * > *g)
void execute(const Catalog_Namespace::SessionInfo &session) override
std::string _geo_copy_from_partitions
const std::string * get_column_name() const
void execute(const Catalog_Namespace::SessionInfo &session) override
const std::string & get_select_query() const
std::unique_ptr< std::string > table
std::list< std::unique_ptr< std::string > > column_list
const Expr * get_having_clause() const
std::string to_string() const override
static std::shared_ptr< Analyzer::Expr > analyzeValue(const std::string &)
FunctionRef(std::string *n, Expr *a)
std::string getCreateStmt()
DropUserStmt(std::string *n)
std::unique_ptr< QueryExpr > right
std::unique_ptr< Expr > escape_string
RenameTableStmt(const rapidjson::Value &payload)
CreateTableAsSelectStmt(const std::string *table_name, const std::string *select_query, const bool is_temporary, const bool if_not_exists, std::list< NameValueAssign * > *s)
specifies the content in-memory of a row in the column metadata table
const Expr * get_where_clause() const
const std::string * get_alias() const
void execute(const Catalog_Namespace::SessionInfo &session) override
BetweenExpr(bool n, Expr *a, Expr *l, Expr *u)
std::list< std::unique_ptr< NameValueAssign > > options_
std::string to_string() const override
const std::vector< std::string > & get_roles() const
const std::string foreign_table_
bool g_enable_smem_group_by true
static void erase_cntl_chars(std::string &like_str, char escape_char)
const std::string * get_name() const
std::string to_string() const
AddColumnStmt(std::string *tab, ColumnDef *coldef)
bool get_is_primarykey() const
std::unique_ptr< Expr > pattern_string
void check_executable(const Catalog_Namespace::SessionInfo &session, const TableDescriptor *td)
virtual void execute(const Catalog_Namespace::SessionInfo &session)=0
void execute(const Catalog_Namespace::SessionInfo &session) override
static std::shared_ptr< Analyzer::Expr > normalize(const SQLOps optype, const SQLQualifier qual, std::shared_ptr< Analyzer::Expr > left_expr, std::shared_ptr< Analyzer::Expr > right_expr)
void execute(const Catalog_Namespace::SessionInfo &session) override
SQLType(SQLTypes t, int p1, int p2, bool a, int array_size)
std::string to_string() const override
std::unique_ptr< std::string > database_name_
TruncateTableStmt(std::string *tab)
std::unique_ptr< std::string > user_name
GrantRoleStmt(std::list< std::string * > *r, std::list< std::string * > *g)
const std::list< std::unique_ptr< Expr > > & get_groupby_clause() const
UnionQuery(bool u, QueryExpr *l, QueryExpr *r)
void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const override
const std::string * get_name() const
std::list< std::unique_ptr< Expr > > groupby_clause
std::unique_ptr< Expr > left
void execute(const Catalog_Namespace::SessionInfo &session) override
void checkpoint(const Catalog_Namespace::SessionInfo &session, int tableId) override
void execute(const Catalog_Namespace::SessionInfo &session) override
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::unique_ptr< Expr > arg
const std::string * get_range_var() const
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::unique_ptr< std::string > column_name
bool get_distinct() const
virtual std::vector< AggregatedResult > query(QueryStateProxy, std::string &sql_query_string, std::vector< size_t > outer_frag_indices, bool allow_interrupt)=0
std::pair< std::unique_ptr< std::string >, std::unique_ptr< std::string >> TableNamePair
std::string to_string() const override
const std::vector< std::string > & get_grantees() const
RenameDatabaseStmt(std::string *database_name, std::string *new_database_name)
const CompressDef * get_compression() const
virtual void rollback(const Catalog_Namespace::SessionInfo &parent_session_info, int tableId)=0
const std::list< std::unique_ptr< TableElement > > & get_table_element_list() const override
CreateUserStmt(std::string *n, std::list< NameValueAssign * > *l)
std::string to_string() const override
std::unique_ptr< Literal > value
std::list< std::unique_ptr< Assignment > > assignment_list
const Expr * get_lower() const
std::unique_ptr< QueryExpr > left
std::unique_ptr< std::string > column
void execute(const Catalog_Namespace::SessionInfo &session) override
ArrayLiteral(std::list< Expr * > *v)
const std::list< std::unique_ptr< std::string > > & get_column_list() const
std::unique_ptr< QueryExpr > query_expr
bool isRepairTypeRemove() const
DropTableStmt(std::string *tab, bool i)
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override=0
std::unique_ptr< Expr > like_string
CompressDef(std::string *n, int p)
std::list< std::unique_ptr< NameValueAssign > > options
Encoding(std::string *encoding_name, int encoding_param)
std::unique_ptr< std::string > table
std::unique_ptr< std::string > range_var
std::string select_query_
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
InsertIntoTableAsSelectStmt(const std::string *table_name, const std::string *select_query, std::list< std::string * > *c)
InValues(bool n, Expr *a, std::list< Expr * > *v)
const std::string * get_foreign_table() const
std::string to_string() const override
NameValueAssign(std::string *n, Literal *v)
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
void rollback(const Catalog_Namespace::SessionInfo &session, int tableId) override
std::list< std::unique_ptr< NameValueAssign > > storage_options_
const std::string column_
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
virtual void checkpoint(const Catalog_Namespace::SessionInfo &parent_session_info, int tableId)=0
std::unique_ptr< std::string > object
CharLengthExpr(Expr *a, bool e)
void execute(const Catalog_Namespace::SessionInfo &session) override
std::string to_string() const override
static std::shared_ptr< Analyzer::Expr > analyzeValue(const int64_t numericval, const int scale, const int precision)
auto const & getNewUserName()
std::string to_string() const override
void analyze_select_clause(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const
static bool test_is_simple_expr(const std::string &like_str, char escape_char)
CreateViewStmt(const std::string &view_name, const std::string &select_query, const bool if_not_exists)
const std::string * get_foreign_table() const
virtual std::string to_string() const =0
std::vector< std::string > privs
void analyze_from_clause(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const
bool get_nulls_first() const
std::vector< std::unique_ptr< std::string > > column_list_
bool shouldVacuumDeletedRows() const
void execute(const Catalog_Namespace::SessionInfo &session) override
std::unique_ptr< std::string > table_
DistributedConnector * leafs_connector_
std::unique_ptr< QuerySpec > query
RenameUserStmt(std::string *username, std::string *new_username)
std::string to_string() const override
void get_geo_copy_from_payload(std::string &geo_copy_from_table, std::string &geo_copy_from_file_name, import_export::CopyParams &geo_copy_from_copy_params, std::string &geo_copy_from_partitions)
std::unique_ptr< ColumnDef > coldef
std::unique_ptr< NameValueAssign > param
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::string to_string() const override
std::unique_ptr< std::string > name
std::unique_ptr< std::string > fixedptval
bool get_is_primarykey() const
virtual std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const =0
std::unique_ptr< std::string > role
std::unique_ptr< std::string > file_pattern
std::unique_ptr< Expr > arg
bool g_enable_watchdog false
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::list< std::unique_ptr< std::string > > column_list
Assignment(std::string *c, Expr *a)
CreateDataframeStmt(std::string *tab, std::list< TableElement * > *table_elems, std::string *filename, std::list< NameValueAssign * > *s)
const std::vector< std::string > & get_privs() const
CopyTableStmt(std::string *t, std::string *f, std::list< NameValueAssign * > *o)
ShowCreateTableStmt(std::string *tab)
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
bool get_is_distinct() const
std::string to_string() const override
const std::string & get_object_type() const
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
const std::vector< std::string > & get_grantees() const
ColumnConstraintDef(std::string *t, std::string *c)
SubqueryExpr(QuerySpec *q)
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::string to_string() const override
const std::string * get_foreign_column() const
size_t getOuterFragmentCount(QueryStateProxy, std::string &sql_query_string) override
void execute(const Catalog_Namespace::SessionInfo &session) override
std::string to_string() const override
The data to be inserted using the fragment manager.
const std::string * get_table() const
const Expr * get_left() const
std::unique_ptr< std::string > stringval
std::unique_ptr< std::string > table
const std::vector< std::string > & get_privs() const
void analyze_group_by(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const
std::list< std::unique_ptr< Expr > > value_list
std::unique_ptr< std::string > object_type
void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const override
const Expr * get_expr2() const
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
const std::string * get_view_name() const
const QuerySpec * get_query() const
const std::string * get_table() const override
auto const & getOldUserName()
const std::string & get_object() const
std::unique_ptr< Expr > having_clause
std::unique_ptr< std::string > db_name
void execute(const Catalog_Namespace::SessionInfo &session)
ColumnRef(std::string *n1)
std::string to_string() const override
const QuerySpec * get_query() const
const std::string & get_view_name() const
LikeExpr(bool n, bool i, Expr *a, Expr *l, Expr *e)
std::unique_ptr< SubqueryExpr > subquery
std::unique_ptr< Expr > else_expr
const Expr * get_escape_string() const
std::unique_ptr< Expr > upper
FunctionRef(std::string *n)
std::unique_ptr< CompressDef > compression
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
std::string _geo_copy_from_file_name
std::unique_ptr< Expr > escape_string
OperExpr(SQLOps t, Expr *l, Expr *r)
std::list< std::unique_ptr< TableElement > > table_element_list_
std::unique_ptr< std::string > foreign_table
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
const QueryExpr * get_query_expr() const
RenameColumnStmt(std::string *tab, std::string *col, std::string *new_col_name)
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
const std::list< std::unique_ptr< Assignment > > & get_assignment_list() const
std::vector< std::string > grantees
FunctionRef(std::string *n, bool d, Expr *a)
AlterUserStmt(std::string *n, std::list< NameValueAssign * > *l)
std::unique_ptr< std::string > select_stmt
std::unique_ptr< std::string > table_
ColumnConstraintDef(Expr *c)
void execute(const Catalog_Namespace::SessionInfo &session) override
std::list< std::unique_ptr< NameValueAssign > > name_value_list
std::vector< std::string > grantees
const Expr * get_arg() const
OrderSpec(int n, ColumnRef *c, bool d, bool f)
void execute(const Catalog_Namespace::SessionInfo &session) override
double get_doubleval() const
RegexpExpr(bool n, Expr *a, Expr *p, Expr *e)
const std::string & get_object_type() const
std::unique_ptr< std::string > filename_
ShowPrivilegesStmt(std::string *t, std::string *o, std::string *r)
UniqueDef(bool p, std::list< std::string * > *cl)
void execute(const Catalog_Namespace::SessionInfo &session) override
const std::string * get_table() const
SelectEntry(Expr *e, std::string *r)
const QueryExpr * get_right() const
void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const override
std::string to_string() const override
const Expr * get_expr1() const
std::shared_ptr< Analyzer::Expr > analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query, TlistRefType allow_tlist_ref=TLIST_NONE) const override
const std::string & get_object() const
std::list< ColumnDescriptor > getColumnDescriptors(AggregatedResult &result, bool for_create)
std::unique_ptr< Expr > arg
const std::string * get_column() const
void execute(const Catalog_Namespace::SessionInfo &session) override
std::list< std::unique_ptr< OrderSpec > > orderby_clause
static void check_like_expr(const std::string &like_str, char escape_char)
std::unique_ptr< Expr > check_condition
DumpTableStmt(std::string *tab, std::string *path, std::list< NameValueAssign * > *options)
const std::list< std::unique_ptr< TableRef > > & get_from_clause() const
auto const & getDatabaseName()
DeleteStmt(std::string *t, Expr *w)
std::unique_ptr< std::string > new_database_name_
const Expr * get_assignment() const