Обсуждение: CreateFunction Statement

Поиск
Список
Период
Сортировка

CreateFunction Statement

От
Praveen M
Дата:
Hi All,

I am trying to get the schema name of the create function call from the parse tree. When I look at the structure of the CreateFunctionStmt , I do not see the schemaname information . Can you please help me to understand how to extract the schema name for the function.

typedef struct CreateFunctionStmt
{
NodeTag type;
bool replace; /* T => replace if already exists */
List   *funcname; /* qualified name of function to create */
List   *parameters; /* a list of FunctionParameter */
TypeName   *returnType; /* the return type */
List   *options; /* a list of DefElem */
List   *withClause; /* a list of DefElem */
} CreateFunctionStmt;


Re: CreateFunction Statement

От
Pavel Stehule
Дата:
Hi

2015-11-21 7:09 GMT+01:00 Praveen M <thrinz@gmail.com>:
Hi All,

I am trying to get the schema name of the create function call from the parse tree. When I look at the structure of the CreateFunctionStmt , I do not see the schemaname information . Can you please help me to understand how to extract the schema name for the function.

typedef struct CreateFunctionStmt
{
NodeTag type;
bool replace; /* T => replace if already exists */
List   *funcname; /* qualified name of function to create */
List   *parameters; /* a list of FunctionParameter */
TypeName   *returnType; /* the return type */
List   *options; /* a list of DefElem */
List   *withClause; /* a list of DefElem */
} CreateFunctionStmt;


The funcname field is >>list of names<<. Look on makeRangeVarFromNameList function. It is good example.

Regards

Pavel

Re: CreateFunction Statement

От
Alvaro Herrera
Дата:
Pavel Stehule wrote:
> Hi
> 
> 2015-11-21 7:09 GMT+01:00 Praveen M <thrinz@gmail.com>:
> 
> > Hi All,
> >
> > I am trying to get the schema name of the create function call from the
> > parse tree. When I look at the structure of the CreateFunctionStmt , I do
> > not see the schemaname information . Can you please help me to understand
> > how to extract the schema name for the function.

> The funcname field is >>list of names<<. Look on makeRangeVarFromNameList
> function. It is good example.

Of course, if your CREATE FUNCTION statement doesn't have the schema,
there is no way to know from the parsetree.  This is where the deparse
infrastructure comes in, see commit b488c580aef.

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services