summaryrefslogtreecommitdiff
path: root/sql/sp_head.h
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2017-08-18 18:29:33 +0400
committerAlexander Barkov <bar@mariadb.org>2017-08-18 18:29:33 +0400
commit4305c3ca5797ba4157384c363579be8e934e2fb1 (patch)
treeaa48de35235e7d087d385f3c28edeacdf11e9d89 /sql/sp_head.h
parenta70809c0fcd5eca38c5f6bafa92270f1704a0597 (diff)
downloadmariadb-git-4305c3ca5797ba4157384c363579be8e934e2fb1.tar.gz
MDEV-13581 ROW TYPE OF t1 and t1%ROWTYPE for routine parameters
Diffstat (limited to 'sql/sp_head.h')
-rw-r--r--sql/sp_head.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/sql/sp_head.h b/sql/sp_head.h
index 730b2c11b43..c3dab609823 100644
--- a/sql/sp_head.h
+++ b/sql/sp_head.h
@@ -676,6 +676,8 @@ public:
def->field_name= *name;
return fill_spvar_definition(thd, def);
}
+
+private:
/**
Set a column type reference for a parameter definition
*/
@@ -687,6 +689,31 @@ public:
m_flags|= sp_head::HAS_COLUMN_TYPE_REFS;
}
+ void fill_spvar_using_table_rowtype_reference(THD *thd,
+ sp_variable *spvar,
+ Table_ident *ref)
+ {
+ spvar->field_def.set_table_rowtype_ref(ref);
+ spvar->field_def.field_name= spvar->name;
+ fill_spvar_definition(thd, &spvar->field_def);
+ m_flags|= sp_head::HAS_COLUMN_TYPE_REFS;
+ }
+
+public:
+ bool spvar_fill_row(THD *thd, sp_variable *spvar, Row_definition_list *def);
+ bool spvar_fill_type_reference(THD *thd, sp_variable *spvar,
+ const LEX_CSTRING &table,
+ const LEX_CSTRING &column);
+ bool spvar_fill_type_reference(THD *thd, sp_variable *spvar,
+ const LEX_CSTRING &db,
+ const LEX_CSTRING &table,
+ const LEX_CSTRING &column);
+ bool spvar_fill_table_rowtype_reference(THD *thd, sp_variable *spvar,
+ const LEX_CSTRING &table);
+ bool spvar_fill_table_rowtype_reference(THD *thd, sp_variable *spvar,
+ const LEX_CSTRING &db,
+ const LEX_CSTRING &table);
+
void set_chistics(const st_sp_chistics &chistics);
void set_info(longlong created, longlong modified,
const st_sp_chistics &chistics, sql_mode_t sql_mode);