You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@trafodion.apache.org by "Liu, Ming (Ming)" <mi...@esgyn.cn> on 2016/03/18 04:43:31 UTC
How to implement a TO_DATE UDF in Trafodion
Hi, all,
I just learned the support of TO_DATE will be avialbe in Trafodion in R2.0 from Anoop, that is great! At present, due to the urgent requirement of current migration project, we cannot wait, so I want to write a UDF to do the TO_DATE.
When I try to write it, I found it seems the UDF can only return simple data type like INT, VARCHAR, I cannot find the definition of returning a TIMESTAMP/DATE, could anyone help here?
In sqludr.h , I cannot find corresponding data type for DATE/TIMESTAM.
So I don't know how to define the UDF's entry function, example as below:
SQLUDR_LIBFUNC SQLUDR_INT32 to_date(SQLUDR_VC_STRUCT *srcStr, //input string
SQLUDR_CHAR *pattern, //date format
??? *out1, //the output
SQLUDR_INT16 *inInd1,
SQLUDR_INT16 *inInd2,
SQLUDR_INT16 *outInd1,
SQLUDR_TRAIL_ARGS)
How can I specify the out1 type to be a DATE or TIMESTAMP? I marked with '???' .
Thanks in advance,
Ming
答复: How to implement a TO_DATE UDF in Trafodion
Posted by "Liu, Ming (Ming)" <mi...@esgyn.cn>.
Thanks Hans,
Yes, SQLUDR_CHAR can support input/output values as TIMESTAMP. This solves my problem.
So Trafodion UDF can support TIMESTAMP as both input parameter and output , this is great!
Thanks,
Ming
发件人: Hans Zeller [mailto:hans.zeller@esgyn.com]
发送时间: 2016年3月24日 1:34
收件人: user@trafodion.incubator.apache.org
主题: Re: How to implement a TO_DATE UDF in Trafodion
Hi Ming, I think the C data type corresponding to datetime values is SQLUDR_CHAR. You create a string that looks like "2016-03-23 01:23:45" (this example is for a TIMESTAMP(0)) and return that. Trafodion will convert it to the datetime type.
Sorry, I have not tested it but hope it will work.
Hans
On Thu, Mar 17, 2016 at 8:43 PM, Liu, Ming (Ming) <mi...@esgyn.cn>> wrote:
Hi, all,
I just learned the support of TO_DATE will be avialbe in Trafodion in R2.0 from Anoop, that is great! At present, due to the urgent requirement of current migration project, we cannot wait, so I want to write a UDF to do the TO_DATE.
When I try to write it, I found it seems the UDF can only return simple data type like INT, VARCHAR, I cannot find the definition of returning a TIMESTAMP/DATE, could anyone help here?
In sqludr.h , I cannot find corresponding data type for DATE/TIMESTAM.
So I don’t know how to define the UDF’s entry function, example as below:
SQLUDR_LIBFUNC SQLUDR_INT32 to_date(SQLUDR_VC_STRUCT *srcStr, //input string
SQLUDR_CHAR *pattern, //date format
??? *out1, //the output
SQLUDR_INT16 *inInd1,
SQLUDR_INT16 *inInd2,
SQLUDR_INT16 *outInd1,
SQLUDR_TRAIL_ARGS)
How can I specify the out1 type to be a DATE or TIMESTAMP? I marked with ‘???’ .
Thanks in advance,
Ming
Re: How to implement a TO_DATE UDF in Trafodion
Posted by Hans Zeller <ha...@esgyn.com>.
Hi Ming, I think the C data type corresponding to datetime values is
SQLUDR_CHAR. You create a string that looks like "2016-03-23 01:23:45"
(this example is for a TIMESTAMP(0)) and return that. Trafodion will
convert it to the datetime type.
Sorry, I have not tested it but hope it will work.
Hans
On Thu, Mar 17, 2016 at 8:43 PM, Liu, Ming (Ming) <mi...@esgyn.cn> wrote:
> Hi, all,
>
>
>
> I just learned the support of TO_DATE will be avialbe in Trafodion in R2.0
> from Anoop, that is great! At present, due to the urgent requirement of
> current migration project, we cannot wait, so I want to write a UDF to do
> the TO_DATE.
>
> When I try to write it, I found it seems the UDF can only return simple
> data type like INT, VARCHAR, I cannot find the definition of returning a
> TIMESTAMP/DATE, could anyone help here?
>
>
>
> In sqludr.h , I cannot find corresponding data type for DATE/TIMESTAM.
>
> So I don’t know how to define the UDF’s entry function, example as below:
>
>
>
> SQLUDR_LIBFUNC SQLUDR_INT32 to_date(SQLUDR_VC_STRUCT *srcStr, //input
> string
>
> SQLUDR_CHAR *pattern, //date format
>
> ??? *out1, //the output
>
> SQLUDR_INT16 *inInd1,
>
> SQLUDR_INT16 *inInd2,
>
> SQLUDR_INT16 *outInd1,
>
> SQLUDR_TRAIL_ARGS)
>
>
>
> How can I specify the out1 type to be a DATE or TIMESTAMP? I marked with
> ‘???’ .
>
>
>
> Thanks in advance,
>
> Ming
>