OmniSciDB  c1a53651b2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Parser::DDLStmt Class Referenceabstract

#include <ParserNode.h>

+ Inheritance diagram for Parser::DDLStmt:
+ Collaboration diagram for Parser::DDLStmt:

Public Member Functions

virtual void execute (const Catalog_Namespace::SessionInfo &session, bool read_only_mode)=0
 
void setColumnDescriptor (ColumnDescriptor &cd, const ColumnDef *coldef)
 
- Public Member Functions inherited from Parser::Node
virtual ~Node ()
 

Detailed Description

Definition at line 760 of file ParserNode.h.

Member Function Documentation

void Parser::DDLStmt::setColumnDescriptor ( ColumnDescriptor cd,
const ColumnDef coldef 
)

Definition at line 4998 of file ParserNode.cpp.

References Parser::ColumnDef::get_column_constraint(), Parser::ColumnDef::get_column_name(), Parser::ColumnDef::get_column_type(), Parser::ColumnDef::get_compression(), Parser::ColumnConstraintDef::get_defaultval(), ddl_utils::SqlType::get_is_array(), Parser::ColumnConstraintDef::get_notnull(), Parser::StringLiteral::get_stringval(), and ddl_utils::set_column_descriptor().

Referenced by Parser::CreateDataframeStmt::execute(), Parser::AddColumnStmt::execute(), and Parser::CreateTableStmt::executeDryRun().

4998  {
4999  bool not_null;
5000  const ColumnConstraintDef* cc = coldef->get_column_constraint();
5001  if (cc == nullptr) {
5002  not_null = false;
5003  } else {
5004  not_null = cc->get_notnull();
5005  }
5006  std::string default_value;
5007  const std::string* default_value_ptr = nullptr;
5008  if (cc) {
5009  if (auto def_val_literal = cc->get_defaultval()) {
5010  auto defaultsp = dynamic_cast<const StringLiteral*>(def_val_literal);
5011  default_value =
5012  defaultsp ? *defaultsp->get_stringval() : def_val_literal->to_string();
5013  // The preprocessing below is needed because:
5014  // a) TypedImportBuffer expects arrays in the {...} format
5015  // b) TypedImportBuffer expects string literals inside arrays w/o any quotes
5016  if (coldef->get_column_type()->get_is_array()) {
5017  std::regex array_re(R"(^ARRAY\s*\[(.*)\]$)", std::regex_constants::icase);
5018  default_value = std::regex_replace(default_value, array_re, "{$1}");
5019  boost::erase_all(default_value, "\'");
5020  }
5021  default_value_ptr = &default_value;
5022  }
5023  }
5024  ddl_utils::set_column_descriptor(*coldef->get_column_name(),
5025  cd,
5026  coldef->get_column_type(),
5027  not_null,
5028  coldef->get_compression(),
5029  default_value_ptr);
5030 }
void set_column_descriptor(const std::string &column_name, ColumnDescriptor &cd, SqlType *column_type, const bool not_null, const Encoding *encoding, const std::string *default_value)
Definition: DdlUtils.cpp:661

+ Here is the call graph for this function:

+ Here is the caller graph for this function:


The documentation for this class was generated from the following files: