MySQL 9.3.0
Source Code Documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
mrs::database Namespace Reference

Namespaces

namespace  anonymous_namespace{filter_object_generator.cc}
 
namespace  anonymous_namespace{object_checksum.cc}
 
namespace  anonymous_namespace{query_entries_object.cc}
 
namespace  anonymous_namespace{query_entry_auth_user.cc}
 
namespace  anonymous_namespace{query_rest_task.cc}
 
namespace  anonymous_namespace{schema_monitor.cc}
 
namespace  anonymous_namespace{slow_query_monitor.cc}
 
namespace  anonymous_namespace{sp_function_query.cc}
 
namespace  dv
 
namespace  entry
 
namespace  inner
 
namespace  v2
 
namespace  v3
 
namespace  v4
 
namespace  v_2_3
 

Classes

class  AuditLogInconsistency
 
class  ColumnDatatypeConverter
 
class  ColumnMappingConverter
 
class  DataMappingViewError
 
class  DbAccess
 
class  FilterObjectGenerator
 
class  Gtid
 
class  GtidSet
 
class  IdGenerationTypeConverter
 
class  JSONInputError
 
class  JsonTemplate
 
class  JsonTemplateFactory
 
class  KindTypeConverter
 
class  MetadataSchemaVersionChange
 
struct  MrsSchemaVersion
 
class  MysqlBind
 
class  MysqlTaskMonitor
 
class  ObjectRowOwnership
 
class  QueryAuditLogEntries
 
class  QueryAuditLogMaxId
 
class  QueryChangesAuthApp
 
class  QueryChangesAuthUser
 
class  QueryChangesContentFile
 
class  QueryChangesContentSet
 
class  QueryChangesDbObject
 
class  QueryChangesDbSchema
 
class  QueryChangesDbService
 
class  QueryChangesState
 
class  QueryChangesUrlHost
 
class  QueryEntriesAuthApp
 
class  QueryEntriesAuthPrivileges
 
class  QueryEntriesAuthRole
 
class  QueryEntriesContentFile
 
class  QueryEntriesContentSet
 
class  QueryEntriesDbObject
 
class  QueryEntriesDbSchema
 
class  QueryEntriesDbService
 
class  QueryEntriesUrlHost
 
class  QueryEntryAuthUser
 
class  QueryEntryContentFile
 
class  QueryEntryFields
 
class  QueryEntryGroupRowSecurity
 
class  QueryEntryObject
 
class  QueryFactoryProxy
 
class  QueryLog
 
class  QueryRaw
 
class  QueryRestFunction
 
class  QueryRestMysqlTask
 
class  QueryRestSP
 
class  QueryRestSPMedia
 
class  QueryRestTable
 
class  QueryRestTableSingleRow
 
class  QueryRestTaskStatus
 
class  QueryRetryOnRO
 
class  QueryRouterInfo
 
class  QueryState
 
class  QueryStatistics
 
class  QueryTableColumns
 
class  QueryUserGroups
 
class  QueryUuid
 
class  QueryVersion
 
class  QueryWarnings
 
class  Result
 
class  SchemaMonitor
 
class  ServiceDisabled
 
class  SlowQueryMonitor
 
class  tosBoolean
 
class  tosDate
 
class  tosDateAsString
 
class  tosGeom
 
class  tosNumber
 
class  tosString
 
class  tosVec
 

Typedefs

using Query = QueryRaw
 
using DataType = mrs::database::entry::ColumnType
 
using PrimaryKeyColumnValues = std::map< std::string, mysqlrouter::sqlstring >
 
using ColumnValues = std::vector< mysqlrouter::sqlstring >
 
using QueryEntryObjectBase = mrs::database::QueryEntryObject
 
using Value = FilterObjectGenerator::Value
 
using RestError = mrs::interface::RestError
 
using DataTypeInText = ::helper::DataTypeInText
 
using GTIDuuid = inner::GTIDuuid
 
using Gtids = std::vector< Gtid >
 
using GtidSets = std::vector< GtidSet >
 
using ForeignKeyReference = entry::ForeignKeyReference
 
using Table = entry::Table
 
using MySQLSession = QueryRaw::MySQLSession
 
using sqlstring = mysqlrouter::sqlstring
 
using ConnectionParameters = collector::CountedMySQLSession::ConnectionParameters
 
using Url = helper::http::Url
 
using ColumnType = mrs::database::entry::ColumnType
 
using Column = mrs::database::entry::Column
 
using ObjectField = database::entry::ObjectField
 
using ObjectFieldPtr = std::shared_ptr< ObjectField >
 
using SchemaMonitorFactoryMethod = decltype(&create_schema_monitor_factory)
 
using Entries = QueryEntriesAuthApp::Entries
 
using KindType = entry::KindType
 
using ModeType = entry::ModeType
 
using AuthUser = QueryEntryAuthUser::AuthUser
 
using JsonQueryBuilder = mrs::database::dv::JsonQueryBuilder
 
using DbState = QueryState::DbState
 
using UserId = QueryUuid::UserId
 
using Warnings = QueryWarnings::Warnings
 

Enumerations

enum class  RowLockType { NONE , FOR_UPDATE }
 
enum class  JsonTemplateType { kStandard , kObjectNested , kObjectUnnested , kObjectNestedOutParameters }
 

Functions

ColumnValues create_function_argument_list (const entry::Object *object, rapidjson::Document &doc, const entry::RowUserOwnership &ownership, const mysqlrouter::sqlstring &user_id)
 
ColumnValues create_function_argument_list (const entry::Object *object, const helper::http::Url::Parameters &query_kv, const entry::RowUserOwnership &ownership, const mysqlrouter::sqlstring &user_id)
 
void fill_procedure_argument_list_with_binds (mrs::database::entry::ResultSets &rs, const rapidjson::Document &doc, const entry::RowUserOwnership &ownership, const mysqlrouter::sqlstring &user_id, mrs::database::MysqlBind *out_binds, std::string *out_params)
 
void fill_procedure_argument_list_with_binds (mrs::database::entry::ResultSets &rs, const helper::http::Url::Parameters &query_kv, const entry::RowUserOwnership &ownership, const mysqlrouter::sqlstring &user_id, mrs::database::MysqlBind *out_binds, std::string *out_params)
 
mysqlrouter::sqlstring get_sql_format (DataType type)
 
void throw_invalid_field (const std::string &table, const std::string &field)
 
void throw_missing_field (const std::string &table, const std::string &field)
 
void throw_missing_id (const std::string &table)
 
void throw_mismatching_id (const std::string &table, const std::string &column)
 
void throw_immutable_id (const std::string &table)
 
void throw_invalid_type (const std::string &table, const std::string &field="")
 
void throw_duplicate_key (const std::string &table, const std::string &field)
 
void throw_ENOINSERT (const std::string &table)
 
void throw_ENOUPDATE (const std::string &table, const std::string &field="")
 
void throw_ENODELETE (const std::string &table="")
 
void throw_read_only ()
 
static bool is_date_type (const enum_field_types ft)
 
static std::vector< std::string > get_array_of_string (Value *value)
 
template<typename... T>
mysqlrouter::sqlstring to_sqlstring (entry::Column *dfield, Value *value)
 
static std::unique_ptr< char[]> allocate_buffer (MYSQL_BIND *bind, size_t size)
 
void digest_object (std::shared_ptr< entry::Object > object, std::string_view doc, helper::interface::Digester *digest)
 
std::string compute_checksum (std::shared_ptr< entry::Object > object, std::string_view doc)
 
std::string post_process_json (std::shared_ptr< entry::Object > view, const dv::ObjectFieldFilter &filter, const std::map< std::string, std::string > &metadata, std::string_view doc, bool compute_checksum)
 Performs various post-processing tasks on a JSON document produced for a json view. More...
 
static bool expect_single_row_bool_value (std::unique_ptr< mysqlrouter::MySQLSession::ResultRow > row, const bool default_value=false)
 
static std::vector< std::string > expect_single_row_array_strings (std::unique_ptr< mysqlrouter::MySQLSession::ResultRow > row)
 
GtidSets get_gtid_executed (mysqlrouter::MySQLSession *session)
 
bool wait_gtid_executed (mysqlrouter::MySQLSession *session, const mysqlrouter::sqlstring &gtid, uint64_t timeout)
 
bool is_gtid_executed (mysqlrouter::MySQLSession *session, const mysqlrouter::sqlstring &gtid)
 
static bool is_rw (collector::MySQLConnection connection)
 
static mysqlrouter::sqlstring to_sqlstring (const std::string &value, Column *column)
 
mysqlrouter::sqlstring to_sqlstring (const std::string &value, DataType type)
 
std::unique_ptr< mrs::interface::QueryMonitorFactorycreate_schema_monitor_factory (mrs::interface::SupportedMrsMetadataVersion scheme_version)
 
std::unique_ptr< mrs::interface::QueryFactorycreate_query_factory (mrs::interface::SupportedMrsMetadataVersion scheme_version)
 
template<typename Map >
auto get_map_converter (Map *map, const typename Map::mapped_type value)
 
static bool needs_bigint_workaround (enum_field_types type)
 
mysqlrouter::sqlstring format_parameters (std::shared_ptr< database::entry::Object > object, const ColumnValues &values)
 
mysqlrouter::sqlstring format_from_clause (std::shared_ptr< database::entry::Object > object)
 
static MYSQL_FIELDcolumns_find (const std::string &look_for, unsigned number, MYSQL_FIELD *fields)
 
static const Fieldcolumns_find (const std::string &look_for, const std::vector< Field > &rs)
 
static void impl_columns_set (std::vector< helper::Column > &c, const std::vector< Field > &rs, unsigned, MYSQL_FIELD *fields, const bool is_bound=false)
 
static void impl_columns_set (std::vector< helper::Column > &c, unsigned number, MYSQL_FIELD *fields)
 
static const Fieldcolumns_match (const std::vector< Field > &columns, unsigned number, MYSQL_FIELD *fields)
 
static void trace_resultset (const mrs::database::entry::ResultSets *rs)
 
static void trace_metadata (unsigned int number, MYSQL_FIELD *fields)
 
static void throw_invalid_function_result ()
 

Variables

constexpr MrsSchemaVersion kCurrentMrsMetadataVersion {4, 0, 0}
 
constexpr MrsSchemaVersion kSchemaUpgradeMrsMetadataVersion {0, 0, 0}
 
constexpr std::initializer_list< MrsSchemaVersionkCompatibleMrsMetadataVersions
 
constexpr const int64_t k_default_sql_query_timeout_ms = 2000
 
const std::string kObjTableName = "object"
 
const std::string kObjRefTableName = "object_reference"
 
const std::string kObjFieldTableName = "object_field"
 
const mysqlrouter::sqlstring k_option_field {",f.options "}
 
const mysqlrouter::sqlstring k_empty
 
const mysqlrouter::sqlstring k_field_internal {",s.internal"}
 
const mysqlrouter::sqlstring k_s_enabled {"s.enabled"}
 
const mysqlrouter::sqlstring k_s_enabled_and_published
 

Typedef Documentation

◆ AuthUser

◆ Column

◆ ColumnType

using mrs::database::ColumnType = typedef mrs::database::entry::ColumnType

◆ ColumnValues

◆ ConnectionParameters

◆ DataType

◆ DataTypeInText

◆ DbState

◆ Entries

◆ ForeignKeyReference

typedef entry::ForeignKeyReference mrs::database::ForeignKeyReference

◆ Gtids

using mrs::database::Gtids = typedef std::vector<Gtid>

◆ GtidSets

using mrs::database::GtidSets = typedef std::vector<GtidSet>

◆ GTIDuuid

◆ JsonQueryBuilder

◆ KindType

using mrs::database::KindType = typedef entry::KindType

◆ ModeType

using mrs::database::ModeType = typedef entry::ModeType

◆ MySQLSession

◆ ObjectField

using mrs::database::ObjectField = typedef database::entry::ObjectField

◆ ObjectFieldPtr

using mrs::database::ObjectFieldPtr = typedef std::shared_ptr<ObjectField>

◆ PrimaryKeyColumnValues

using mrs::database::PrimaryKeyColumnValues = typedef std::map<std::string, mysqlrouter::sqlstring>

◆ Query

using mrs::database::Query = typedef QueryRaw

◆ QueryEntryObjectBase

◆ RestError

◆ SchemaMonitorFactoryMethod

◆ sqlstring

◆ Table

typedef entry::Table mrs::database::Table

◆ Url

◆ UserId

◆ Value

◆ Warnings

Enumeration Type Documentation

◆ JsonTemplateType

Enumerator
kStandard 
kObjectNested 
kObjectUnnested 
kObjectNestedOutParameters 

◆ RowLockType

enum class mrs::database::RowLockType
strong
Enumerator
NONE 
FOR_UPDATE 

Function Documentation

◆ allocate_buffer()

static std::unique_ptr< char[]> mrs::database::allocate_buffer ( MYSQL_BIND bind,
size_t  size 
)
static

◆ columns_find() [1/2]

static const Field * mrs::database::columns_find ( const std::string &  look_for,
const std::vector< Field > &  rs 
)
static

◆ columns_find() [2/2]

static MYSQL_FIELD * mrs::database::columns_find ( const std::string &  look_for,
unsigned  number,
MYSQL_FIELD fields 
)
static

◆ columns_match()

static const Field * mrs::database::columns_match ( const std::vector< Field > &  columns,
unsigned  number,
MYSQL_FIELD fields 
)
static

◆ compute_checksum()

std::string mrs::database::compute_checksum ( std::shared_ptr< entry::Object >  object,
std::string_view  doc 
)

◆ create_function_argument_list() [1/2]

ColumnValues mrs::database::create_function_argument_list ( const entry::Object *  object,
const helper::http::Url::Parameters query_kv,
const entry::RowUserOwnership &  ownership,
const mysqlrouter::sqlstring user_id 
)

◆ create_function_argument_list() [2/2]

ColumnValues mrs::database::create_function_argument_list ( const entry::Object *  object,
rapidjson::Document &  doc,
const entry::RowUserOwnership &  ownership,
const mysqlrouter::sqlstring user_id 
)

◆ create_query_factory()

std::unique_ptr< mrs::interface::QueryFactory > mrs::database::create_query_factory ( mrs::interface::SupportedMrsMetadataVersion  scheme_version)

◆ create_schema_monitor_factory()

std::unique_ptr< mrs::interface::QueryMonitorFactory > mrs::database::create_schema_monitor_factory ( mrs::interface::SupportedMrsMetadataVersion  scheme_version)

◆ digest_object()

void mrs::database::digest_object ( std::shared_ptr< entry::Object >  object,
std::string_view  doc,
helper::interface::Digester digest 
)

◆ expect_single_row_array_strings()

static std::vector< std::string > mrs::database::expect_single_row_array_strings ( std::unique_ptr< mysqlrouter::MySQLSession::ResultRow row)
static

◆ expect_single_row_bool_value()

static bool mrs::database::expect_single_row_bool_value ( std::unique_ptr< mysqlrouter::MySQLSession::ResultRow row,
const bool  default_value = false 
)
static

◆ fill_procedure_argument_list_with_binds() [1/2]

void mrs::database::fill_procedure_argument_list_with_binds ( mrs::database::entry::ResultSets rs,
const helper::http::Url::Parameters query_kv,
const entry::RowUserOwnership &  ownership,
const mysqlrouter::sqlstring user_id,
mrs::database::MysqlBind out_binds,
std::string *  out_params 
)

◆ fill_procedure_argument_list_with_binds() [2/2]

void mrs::database::fill_procedure_argument_list_with_binds ( mrs::database::entry::ResultSets rs,
const rapidjson::Document &  doc,
const entry::RowUserOwnership &  ownership,
const mysqlrouter::sqlstring user_id,
mrs::database::MysqlBind out_binds,
std::string *  out_params 
)

◆ format_from_clause()

mysqlrouter::sqlstring mrs::database::format_from_clause ( std::shared_ptr< database::entry::Object >  object)

◆ format_parameters()

mysqlrouter::sqlstring mrs::database::format_parameters ( std::shared_ptr< database::entry::Object >  object,
const ColumnValues values 
)

◆ get_array_of_string()

static std::vector< std::string > mrs::database::get_array_of_string ( Value value)
static

◆ get_gtid_executed()

GtidSets mrs::database::get_gtid_executed ( mysqlrouter::MySQLSession session)

◆ get_map_converter()

template<typename Map >
auto mrs::database::get_map_converter ( Map *  map,
const typename Map::mapped_type  value 
)

◆ get_sql_format()

mysqlrouter::sqlstring mrs::database::get_sql_format ( DataType  type)
inline

◆ impl_columns_set() [1/2]

static void mrs::database::impl_columns_set ( std::vector< helper::Column > &  c,
const std::vector< Field > &  rs,
unsigned  ,
MYSQL_FIELD fields,
const bool  is_bound = false 
)
static

◆ impl_columns_set() [2/2]

static void mrs::database::impl_columns_set ( std::vector< helper::Column > &  c,
unsigned  number,
MYSQL_FIELD fields 
)
static

◆ is_date_type()

static bool mrs::database::is_date_type ( const enum_field_types  ft)
static

◆ is_gtid_executed()

bool mrs::database::is_gtid_executed ( mysqlrouter::MySQLSession session,
const mysqlrouter::sqlstring gtid 
)

◆ is_rw()

static bool mrs::database::is_rw ( collector::MySQLConnection  connection)
static

◆ needs_bigint_workaround()

static bool mrs::database::needs_bigint_workaround ( enum_field_types  type)
static

◆ post_process_json()

std::string mrs::database::post_process_json ( std::shared_ptr< entry::Object >  view,
const dv::ObjectFieldFilter filter,
const std::map< std::string, std::string > &  metadata,
std::string_view  doc,
bool  compute_checksum 
)

Performs various post-processing tasks on a JSON document produced for a json view.

  • unnest references
  • exclude fields that are disabled
  • calculate checksum and embed the etag field

◆ throw_duplicate_key()

void mrs::database::throw_duplicate_key ( const std::string &  table,
const std::string &  field 
)
inline

◆ throw_ENODELETE()

void mrs::database::throw_ENODELETE ( const std::string &  table = "")
inline

◆ throw_ENOINSERT()

void mrs::database::throw_ENOINSERT ( const std::string &  table)
inline

◆ throw_ENOUPDATE()

void mrs::database::throw_ENOUPDATE ( const std::string &  table,
const std::string &  field = "" 
)
inline

◆ throw_immutable_id()

void mrs::database::throw_immutable_id ( const std::string &  table)
inline

◆ throw_invalid_field()

void mrs::database::throw_invalid_field ( const std::string &  table,
const std::string &  field 
)
inline

◆ throw_invalid_function_result()

static void mrs::database::throw_invalid_function_result ( )
static

◆ throw_invalid_type()

void mrs::database::throw_invalid_type ( const std::string &  table,
const std::string &  field = "" 
)
inline

◆ throw_mismatching_id()

void mrs::database::throw_mismatching_id ( const std::string &  table,
const std::string &  column 
)
inline

◆ throw_missing_field()

void mrs::database::throw_missing_field ( const std::string &  table,
const std::string &  field 
)
inline

◆ throw_missing_id()

void mrs::database::throw_missing_id ( const std::string &  table)
inline

◆ throw_read_only()

void mrs::database::throw_read_only ( )
inline

◆ to_sqlstring() [1/3]

static mysqlrouter::sqlstring mrs::database::to_sqlstring ( const std::string &  value,
Column column 
)
static

◆ to_sqlstring() [2/3]

mysqlrouter::sqlstring mrs::database::to_sqlstring ( const std::string &  value,
DataType  type 
)

◆ to_sqlstring() [3/3]

template<typename... T>
mysqlrouter::sqlstring mrs::database::to_sqlstring ( entry::Column *  dfield,
Value value 
)

◆ trace_metadata()

static void mrs::database::trace_metadata ( unsigned int  number,
MYSQL_FIELD fields 
)
static

◆ trace_resultset()

static void mrs::database::trace_resultset ( const mrs::database::entry::ResultSets rs)
static

◆ wait_gtid_executed()

bool mrs::database::wait_gtid_executed ( mysqlrouter::MySQLSession session,
const mysqlrouter::sqlstring gtid,
uint64_t  timeout 
)

Variable Documentation

◆ k_default_sql_query_timeout_ms

constexpr const int64_t mrs::database::k_default_sql_query_timeout_ms = 2000
constexpr

◆ k_empty

const mysqlrouter::sqlstring mrs::database::k_empty

◆ k_field_internal

const mysqlrouter::sqlstring mrs::database::k_field_internal {",s.internal"}

◆ k_option_field

const mysqlrouter::sqlstring mrs::database::k_option_field {",f.options "}

◆ k_s_enabled

const mysqlrouter::sqlstring mrs::database::k_s_enabled {"s.enabled"}

◆ k_s_enabled_and_published

const mysqlrouter::sqlstring mrs::database::k_s_enabled_and_published
Initial value:
{
"s.enabled and s.published"}

◆ kCompatibleMrsMetadataVersions

constexpr std::initializer_list<MrsSchemaVersion> mrs::database::kCompatibleMrsMetadataVersions
constexpr
Initial value:
{2, 2}}
constexpr MrsSchemaVersion kCurrentMrsMetadataVersion
Definition: query_version.h:75

◆ kCurrentMrsMetadataVersion

constexpr MrsSchemaVersion mrs::database::kCurrentMrsMetadataVersion {4, 0, 0}
constexpr

◆ kObjFieldTableName

const std::string mrs::database::kObjFieldTableName = "object_field"

◆ kObjRefTableName

const std::string mrs::database::kObjRefTableName = "object_reference"

◆ kObjTableName

const std::string mrs::database::kObjTableName = "object"

◆ kSchemaUpgradeMrsMetadataVersion

constexpr MrsSchemaVersion mrs::database::kSchemaUpgradeMrsMetadataVersion {0, 0, 0}
constexpr