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"
42 #include "../Fragmenter/InsertDataLoader.h"
48 namespace query_state {
108 virtual std::shared_ptr<Analyzer::Expr>
analyze(
112 virtual std::string
to_string()
const = 0;
121 std::shared_ptr<Analyzer::Expr>
analyze(
125 std::string
to_string()
const override = 0;
135 std::shared_ptr<Analyzer::Expr>
analyze(
139 std::string
to_string()
const override {
return "NULL"; }
150 std::shared_ptr<Analyzer::Expr>
analyze(
154 static std::shared_ptr<Analyzer::Expr>
analyzeValue(
const std::string&);
169 std::shared_ptr<Analyzer::Expr>
analyze(
175 return boost::lexical_cast<std::string>(
intval);
190 std::shared_ptr<Analyzer::Expr>
analyze(
194 static std::shared_ptr<Analyzer::Expr>
analyzeValue(
const int64_t numericval,
196 const int precision);
211 std::shared_ptr<Analyzer::Expr>
analyze(
216 return boost::lexical_cast<std::string>(
floatval);
231 std::shared_ptr<Analyzer::Expr>
analyze(
236 return boost::lexical_cast<std::string>(
doubleval);
250 std::shared_ptr<Analyzer::Expr>
analyze(
254 static std::shared_ptr<Analyzer::Expr>
get(
const int64_t);
272 std::shared_ptr<Analyzer::Expr>
analyze(
276 std::string
to_string()
const override {
return "USER"; }
288 for (
const auto e : *v) {
294 std::shared_ptr<Analyzer::Expr>
analyze(
317 std::shared_ptr<Analyzer::Expr>
analyze(
321 static std::shared_ptr<Analyzer::Expr>
normalize(
324 std::shared_ptr<Analyzer::Expr> left_expr,
325 std::shared_ptr<Analyzer::Expr> right_expr);
346 std::shared_ptr<Analyzer::Expr>
analyze(
360 std::shared_ptr<Analyzer::Expr>
analyze(
368 std::unique_ptr<Expr>
arg;
380 std::shared_ptr<Analyzer::Expr>
analyze(
388 std::unique_ptr<Expr>
arg;
399 std::shared_ptr<Analyzer::Expr>
analyze(
417 for (
const auto e : *v) {
423 std::shared_ptr<Analyzer::Expr>
analyze(
445 std::shared_ptr<Analyzer::Expr>
analyze(
453 std::unique_ptr<Expr>
arg;
468 std::shared_ptr<Analyzer::Expr>
analyze(
475 std::unique_ptr<Expr>
arg;
488 std::shared_ptr<Analyzer::Expr>
analyze(
495 std::unique_ptr<Expr>
arg;
510 std::shared_ptr<Analyzer::Expr>
analyze(
514 static std::shared_ptr<Analyzer::Expr>
get(std::shared_ptr<Analyzer::Expr> arg_expr,
515 std::shared_ptr<Analyzer::Expr> like_expr,
516 std::shared_ptr<Analyzer::Expr> escape_expr,
524 std::unique_ptr<Expr>
arg;
528 static void check_like_expr(
const std::string& like_str,
char escape_char);
545 std::shared_ptr<Analyzer::Expr>
analyze(
549 static std::shared_ptr<Analyzer::Expr>
get(std::shared_ptr<Analyzer::Expr> arg_expr,
550 std::shared_ptr<Analyzer::Expr> pattern_expr,
551 std::shared_ptr<Analyzer::Expr> escape_expr,
557 std::unique_ptr<Expr>
arg;
575 std::shared_ptr<Analyzer::Expr>
analyze(
579 static std::shared_ptr<Analyzer::Expr>
get(std::shared_ptr<Analyzer::Expr> arg_expr,
586 std::unique_ptr<Expr>
arg;
598 std::shared_ptr<Analyzer::Expr>
analyze(
618 std::shared_ptr<Analyzer::Expr>
analyze(
641 std::shared_ptr<Analyzer::Expr>
analyze(
648 std::unique_ptr<std::string>
name;
650 std::unique_ptr<Expr>
arg;
656 std::shared_ptr<Analyzer::Expr>
analyze(
661 return "CAST(" +
arg->to_string() +
" AS " +
target_type->to_string() +
")";
665 std::unique_ptr<Expr>
arg;
684 for (
const auto e : *w) {
689 std::shared_ptr<Analyzer::Expr>
analyze(
693 static std::shared_ptr<Analyzer::Expr>
normalize(
695 std::pair<std::shared_ptr<Analyzer::Expr>, std::shared_ptr<Analyzer::Expr>>>&,
696 const std::shared_ptr<Analyzer::Expr>);
845 for (
const auto s : *cl) {
866 ForeignKeyDef(std::list<std::string*>* cl, std::string* t, std::list<std::string*>* fcl)
869 for (
const auto s : *cl) {
874 for (
const auto s : *fcl) {
915 const std::string& foreign_table,
916 const std::string foreign_column)
956 std::unique_ptr<std::string>
name;
967 std::list<TableElement*>* table_elems,
970 std::list<NameValueAssign*>* s)
973 for (
const auto e : *table_elems) {
978 for (
const auto e : *s) {
992 std::list<ColumnDescriptor>& columns,
993 std::vector<SharedDictionaryDef>& shared_dict_defs);
1011 const std::string* select_query,
1012 std::list<std::string*>* c)
1022 delete select_query;
1044 std::string& sql_query_string,
1045 bool validate_only);
1049 const size_t leaf_idx,
1072 const std::string* select_query,
1073 const bool is_temporary,
1074 const bool if_not_exists,
1075 std::list<NameValueAssign*>* s)
1080 for (
const auto& e : *s) {
1128 throw std::runtime_error(
"Table name is required for OPTIMIZE command.");
1131 for (
const auto e : *o) {
1142 if (boost::iequals(*(e->get_name()),
"VACUUM")) {
1163 throw std::runtime_error(
"Validation Type is required for VALIDATE command.");
1165 std::list<std::unique_ptr<NameValueAssign>> options;
1167 for (
const auto e : *with_opts) {
1168 options.emplace_back(e);
1172 for (
const auto& opt : options) {
1173 if (boost::iequals(*opt->get_name(),
"REPAIR_TYPE")) {
1174 const auto repair_type =
1175 static_cast<const StringLiteral*
>(opt->get_value())->get_stringval();
1177 if (boost::iequals(*repair_type,
"REMOVE")) {
1180 throw std::runtime_error(
"REPAIR_TYPE must be REMOVE.");
1183 throw std::runtime_error(
"The only VALIDATE WITH options is REPAIR_TYPE.");
1257 for (
const auto coldef : *coldefs) {
1258 this->coldefs.emplace_back(
coldef);
1280 std::list<NameValueAssign*>* options,
1281 const bool is_restore)
1282 :
table(tab), path(path) {
1283 auto options_deleter = [](std::list<NameValueAssign*>* options) {
1284 for (
auto option : *options) {
1289 std::unique_ptr<std::list<NameValueAssign*>, decltype(options_deleter)> options_ptr(
1290 options, options_deleter);
1291 std::vector<std::string> allowed_compression_programs{
"lz4",
"gzip",
"none"};
1294 for (
const auto option : *options) {
1295 if (boost::iequals(*option->get_name(),
"compression")) {
1296 if (
const auto str_literal =
1297 dynamic_cast<const StringLiteral*>(option->get_value())) {
1299 const std::string lowercase_compression =
1301 if (allowed_compression_programs.end() ==
1302 std::find(allowed_compression_programs.begin(),
1303 allowed_compression_programs.end(),
1304 lowercase_compression)) {
1305 throw std::runtime_error(
"Compression program " +
compression +
1306 " is not supported.");
1309 throw std::runtime_error(
"Compression option must be a string.");
1312 throw std::runtime_error(
"Invalid WITH option: " + *option->get_name());
1318 if (boost::process::search_path(
compression =
"gzip").string().empty()) {
1319 if (boost::process::search_path(
compression =
"lz4").string().empty()) {
1327 std::map<std::string, std::string> decompression{{
"lz4",
"unlz4"},
1328 {
"gzip",
"gunzip"}};
1330 const auto prog_path = boost::process::search_path(use_program);
1331 if (prog_path.string().empty()) {
1332 throw std::runtime_error(
"Compression program " + use_program +
" is not found.");
1334 compression =
"--use-compress-program=" + use_program;
1362 std::list<NameValueAssign*>* options)
1376 for (
const auto e : *o) {
1384 const std::function<std::unique_ptr<Importer_NS::Importer>(
1399 std::string& geo_copy_from_file_name,
1401 std::string& geo_copy_from_partitions) {
1402 geo_copy_from_table = *
table;
1412 std::list<std::unique_ptr<NameValueAssign>>
options;
1449 std::vector<std::string>& v) {
1451 for (
auto str : *l) {
1467 std::list<std::string*>* g)
1495 std::list<std::string*>* g)
1619 std::list<SelectEntry*>* s,
1620 std::list<TableRef*>* f,
1622 std::list<Expr*>* g,
1626 for (
const auto e : *s) {
1632 for (
const auto e : *f) {
1637 for (
const auto e : *g) {
1707 for (
const auto e : *o) {
1750 for (
const auto e : *o) {
1762 std::list<std::unique_ptr<NameValueAssign>>
options;
1772 const std::string& select_query,
1773 const bool if_not_exists)
1808 CreateDBStmt(std::string* n, std::list<NameValueAssign*>* l,
const bool if_not_exists)
1811 for (
const auto e : *l) {
1849 for (
const auto e : *l) {
1870 for (
const auto e : *l) {
1905 for (
const auto e : *c) {
1932 for (
const auto e : *v) {
1987 for (
const auto e : *a) {
2023 template <
typename LITERAL_TYPE>
2028 template <
typename T>
2029 decltype(
auto) operator()(T t) {
2030 const std::string property_name(boost::to_upper_copy<std::string>(*t->get_name()));
2031 if (!dynamic_cast<const IntLiteral*>(t->get_value())) {
2032 throw std::runtime_error(property_name +
" must be an integer literal.");
2034 const auto val =
static_cast<const IntLiteral*
>(t->get_value())->get_intval();
2036 throw std::runtime_error(property_name +
" must be a positive number.");
2044 template <
typename T>
2045 decltype(
auto) operator()(T t) {
2046 const auto val =
static_cast<const StringLiteral*
>(t->get_value())->get_stringval();
2048 const auto val_upper = boost::to_upper_copy<std::string>(*val);
2053 template <
typename T>
2055 template <
typename T>
2069 #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)
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)
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
const Literal * get_value() const
LikelihoodExpr(bool n, Expr *a, float l)
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
InsertQueryStmt(std::string *t, std::list< std::string * > *c, QuerySpec *q)
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
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
CreateTableStmt(std::string *tab, std::list< TableElement * > *table_elems, bool is_temporary, bool if_not_exists, std::list< NameValueAssign * > *s)
std::unique_ptr< SQLType > target_type
std::unique_ptr< QuerySpec > query
const Expr * get_arg() const
std::unique_ptr< std::string > table
std::unique_ptr< std::string > table
void execute(const Catalog_Namespace::SessionInfo &session) override
std::vector< std::string > roles
void execute(const Catalog_Namespace::SessionInfo &session) override
std::string to_string() const
std::string & get_table()
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_
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)
void populateData(QueryStateProxy, bool is_temporary, bool validate_table)
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
const std::string * get_prev_table() const
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 std::string * get_table() const
void get_geo_copy_from_payload(std::string &geo_copy_from_table, std::string &geo_copy_from_file_name, Importer_NS::CopyParams &geo_copy_from_copy_params, std::string &geo_copy_from_partitions)
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_
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
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
virtual void checkpoint(const Catalog_Namespace::SessionInfo &parent_session_info, int tableId)=0
void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const override=0
std::string to_string() const override
const std::string * get_new_table() const
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)
ShardKeyDef(const std::string &column)
CreateDBStmt(std::string *n, std::list< NameValueAssign * > *l, const bool if_not_exists)
std::unique_ptr< Literal > defaultval
static void check_pattern_expr(const std::string &pattern_str, char escape_char)
std::unique_ptr< std::string > table
const Expr * get_where_clause() const
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
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
std::unique_ptr< std::string > object_type
const std::string & get_column() const
TableRef(std::string *t, std::string *r)
const std::string * get_table() const
const bool if_not_exists_
std::unique_ptr< Expr > arg
std::unique_ptr< std::string > table
const Expr * get_arg() const
std::unique_ptr< std::string > object_type
const Expr * get_arg() const
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
void insertDataToLeaf(const Catalog_Namespace::SessionInfo &session, const size_t leaf_idx, Fragmenter_Namespace::InsertData &insert_data) override
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 >)
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
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
bool get_is_array() const
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
virtual ~LocalConnector()
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
Importer_NS::CopyParams _geo_copy_from_copy_params
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
virtual AggregatedResult query(QueryStateProxy, std::string &sql_query_string)=0
std::unique_ptr< SQLType > column_type
const std::string * get_encoding_name() const
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
const std::string & get_foreign_column() const
std::list< ColumnDescriptor > getColumnDescriptors(AggregatedResult &result, bool for_create)
void analyze_where_clause(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const
void execute(const Catalog_Namespace::SessionInfo &session) override
void set_is_array(bool a)
void check_executable(const Catalog_Namespace::SessionInfo &session)
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
RevokeRoleStmt(std::list< std::string * > *r, std::list< std::string * > *g)
const int32_t groups_buffer_size return nullptr
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)
DropUserStmt(std::string *n)
std::unique_ptr< QueryExpr > right
std::unique_ptr< Expr > escape_string
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
const std::string select_query_
std::unique_ptr< Expr > pattern_string
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
std::string to_string() const override
std::unique_ptr< std::string > database_name_
TruncateTableStmt(std::string *tab)
const std::list< std::unique_ptr< TableElement > > & get_table_element_list() const
std::unique_ptr< std::string > new_table_name
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
void analyze(const Catalog_Namespace::Catalog &catalog, Analyzer::Query &query) const override
std::unique_ptr< Expr > left
void execute(const Catalog_Namespace::SessionInfo &session) 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
void set_array_size(int s)
std::unique_ptr< std::string > column_name
bool get_distinct() const
const bool if_not_exists_
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
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
const std::string view_name_
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
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
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
std::unique_ptr< std::string > encoding_name
std::unique_ptr< std::string > object
void rollback(const Catalog_Namespace::SessionInfo &session, int tableId) override
CharLengthExpr(Expr *a, bool e)
void execute(const Catalog_Namespace::SessionInfo &session) override
std::string to_string() const override
AggregatedResult query(QueryStateProxy, std::string &sql_query_string, bool validate_only)
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
size_t leafCount() 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
int get_array_size() 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
DistributedConnector * leafs_connector_
std::unique_ptr< QuerySpec > query
RenameUserStmt(std::string *username, std::string *new_username)
std::string to_string() const override
std::unique_ptr< ColumnDef > coldef
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)
std::string get_create_stmt()
const QuerySpec * get_query() const
const std::vector< std::string > & get_privs() const
SQLTypes get_type() 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
std::string to_string() const override
The data to be inserted using the fragment manager.
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
auto const & getOldUserName()
const std::string & get_object() const
std::unique_ptr< Expr > having_clause
std::unique_ptr< std::string > db_name
specifies the content in-memory of a row in the table metadata table
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
virtual void rollback(const Catalog_Namespace::SessionInfo &parent_session_info, int tableId)=0
std::unique_ptr< Expr > else_expr
void checkpoint(const Catalog_Namespace::SessionInfo &session, int tableId) override
const Expr * get_escape_string() const
std::unique_ptr< Expr > upper
FunctionRef(std::string *n)
int get_encoding_param() const
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::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 > table
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::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)
RenameTableStmt(std::string *tab, std::string *new_tab_name)
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