drill-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Abhishek Girish <agir...@mapr.com>
Subject Re: Varchar without length in cast expression
Date Wed, 10 Dec 2014 19:49:01 GMT
I hit a similar issue and filed a JIRA to track this.

https://issues.apache.org/jira/browse/DRILL-1836

On Wed, Dec 10, 2014 at 8:40 AM, Xiao Meng <xiaom@cs.sfu.ca> wrote:

> ‚ÄčAs far as we know, most apps will specify a length when using the CAST
> expression. So I think this should be Okay for us.
>
> Best,
>
> Xiao
>
> On Tue, Dec 9, 2014 at 4:19 PM, Aman Sinha <asinha@maprtech.com> wrote:
>
> > Prior to DRILL-1470 fix we were not honoring the varchar length.  After
> > that fix we honor the length and that is why you are seeing the change in
> > behavior.  Drill gets the original logical plan from Optiq/Calcite which
> > inserts the VARCHAR(1) and so Drill just uses that value.  However,
> > VARCHAR(0) will give the intended behavior:
> >
> > 0: jdbc:drill:zk=local> select cast('1234' as varchar(0)) from
> > cp.`tpch/region.parquet`;
> > +------------+
> > |   EXPR$0   |
> > +------------+
> > | 1234       |
> > | 1234       |
> > | 1234       |
> > | 1234       |
> > | 1234       |
> > +------------+
> >
> > This seems to be vendor specific. If we want Drill's behavior to be more
> > like Postgres,  you could file a JIRA and we can figure out what can be
> > done.
> >
> > On Tue, Dec 9, 2014 at 3:55 PM, Hao Zhu <hzhu@maprtech.com> wrote:
> >
> > > Probably a good point since Postgres shows expected result:
> > > postgres=# select '1234'::varchar(10);
> > >  varchar
> > > ---------
> > >  1234
> > > (1 row)
> > >
> > > postgres=# select '1234'::varchar(1);
> > >  varchar
> > > ---------
> > >  1
> > > (1 row)
> > >
> > > postgres=# select '1234'::varchar;
> > >  varchar
> > > ---------
> > >  1234
> > > (1 row)
> > >
> > > Thanks,
> > > Hao
> > >
> > >
> > >
> > >
> > >
> > > On Tue, Dec 9, 2014 at 3:43 PM, Xiao Meng <xiaom@cs.sfu.ca> wrote:
> > >
> > > > Hi,
> > > >
> > > > I noticed that the behavior of VARCHAR in cast expression changes in
> > > recent
> > > > drillbit server. In the cast expression, VARCHAR without length
> > specifier
> > > > will be treated as  varchar(1) now.
> > > >
> > > > For example,  the following query:
> > > >
> > > > select (1234 as VARCHAR) from sys.drillbits
> > > >
> > > > returns '1' instead of '1234'.
> > > >
> > > > Is this change intended?
> > > >
> > > > As a reference, SQL server treated it differently:
> > > >
> > > > http://msdn.microsoft.com/en-CA/library/ms176089.aspx
> > > >
> > > > "(For char/varchar), when n is not specified in a data definition or
> > > > variable declaration statement, the default length is 1. When n is
> not
> > > > specified when using the CAST and CONVERT functions, the default
> length
> > > is
> > > > 30"
> > > > Best,
> > > >
> > > > Xiao
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message