You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Dmitriy Setrakyan <ds...@apache.org> on 2016/04/29 22:37:18 UTC

ODBC question

One of the users recently asked on the user list [1] whether our ODBC
driver supports row-set binding and we gave him the following answer:

—-
ODBC driver supports rowset binding though currently only fetching of a
single row per call is supported, i.e. SQL_ATTR_ROW_ARRAY_SIZE attribute
can only be set to 1 right now.
—-

I am curious as to what “single row per call” means. Will it have negative
performance implications?

D.

[1] - http://apache-ignite-users.70518.x6.nabble.com/ODBC-Driver-td4557.html

Re: ODBC question

Posted by Dmitriy Setrakyan <ds...@apache.org>.
Got it, thanks!

On Sat, Apr 30, 2016 at 11:49 AM, Igor Sapego <is...@gridgain.com> wrote:

> Dmitriy,
>
> Physically user code is an executable and driver is the dynamic library
> which is dynamically loaded by the client. So it's on the same machine and
> even in the same address space.
>
> Best Regards,
> Igor
>
> On Sat, Apr 30, 2016 at 7:16 PM, Dmitriy Setrakyan <ds...@apache.org>
> wrote:
>
> > On Sat, Apr 30, 2016 at 6:37 AM, Igor Sapego <is...@gridgain.com>
> wrote:
> >
> > > The only difference would be that the buffers-filling loop had been
> moved
> > > from user
> > > code to the driver code.
> > >
> > >
> > Thanks Igor. Can you explain this sentence. Where are the user code and
> the
> > driver code physically located? Are they on the same server or is the
> user
> > code on the client side?
> >
> >
> >
> > > On Fri, Apr 29, 2016 at 11:37 PM, Dmitriy Setrakyan <
> > dsetrakyan@apache.org
> > > >
> > > wrote:
> > >
> > > > One of the users recently asked on the user list [1] whether our ODBC
> > > > driver supports row-set binding and we gave him the following answer:
> > > >
> > > > —-
> > > > ODBC driver supports rowset binding though currently only fetching
> of a
> > > > single row per call is supported, i.e. SQL_ATTR_ROW_ARRAY_SIZE
> > attribute
> > > > can only be set to 1 right now.
> > > > —-
> > > >
> > > > I am curious as to what “single row per call” means. Will it have
> > > negative
> > > > performance implications?
> > > >
> > > > D.
> > > >
> > > > [1] -
> > > >
> http://apache-ignite-users.70518.x6.nabble.com/ODBC-Driver-td4557.html
> > > >
> > >
> >
>

Re: ODBC question

Posted by Igor Sapego <is...@gridgain.com>.
Dmitriy,

Physically user code is an executable and driver is the dynamic library
which is dynamically loaded by the client. So it's on the same machine and
even in the same address space.

Best Regards,
Igor

On Sat, Apr 30, 2016 at 7:16 PM, Dmitriy Setrakyan <ds...@apache.org>
wrote:

> On Sat, Apr 30, 2016 at 6:37 AM, Igor Sapego <is...@gridgain.com> wrote:
>
> > The only difference would be that the buffers-filling loop had been moved
> > from user
> > code to the driver code.
> >
> >
> Thanks Igor. Can you explain this sentence. Where are the user code and the
> driver code physically located? Are they on the same server or is the user
> code on the client side?
>
>
>
> > On Fri, Apr 29, 2016 at 11:37 PM, Dmitriy Setrakyan <
> dsetrakyan@apache.org
> > >
> > wrote:
> >
> > > One of the users recently asked on the user list [1] whether our ODBC
> > > driver supports row-set binding and we gave him the following answer:
> > >
> > > —-
> > > ODBC driver supports rowset binding though currently only fetching of a
> > > single row per call is supported, i.e. SQL_ATTR_ROW_ARRAY_SIZE
> attribute
> > > can only be set to 1 right now.
> > > —-
> > >
> > > I am curious as to what “single row per call” means. Will it have
> > negative
> > > performance implications?
> > >
> > > D.
> > >
> > > [1] -
> > > http://apache-ignite-users.70518.x6.nabble.com/ODBC-Driver-td4557.html
> > >
> >
>

Re: ODBC question

Posted by Dmitriy Setrakyan <ds...@apache.org>.
On Sat, Apr 30, 2016 at 6:37 AM, Igor Sapego <is...@gridgain.com> wrote:

> The only difference would be that the buffers-filling loop had been moved
> from user
> code to the driver code.
>
>
Thanks Igor. Can you explain this sentence. Where are the user code and the
driver code physically located? Are they on the same server or is the user
code on the client side?



> On Fri, Apr 29, 2016 at 11:37 PM, Dmitriy Setrakyan <dsetrakyan@apache.org
> >
> wrote:
>
> > One of the users recently asked on the user list [1] whether our ODBC
> > driver supports row-set binding and we gave him the following answer:
> >
> > —-
> > ODBC driver supports rowset binding though currently only fetching of a
> > single row per call is supported, i.e. SQL_ATTR_ROW_ARRAY_SIZE attribute
> > can only be set to 1 right now.
> > —-
> >
> > I am curious as to what “single row per call” means. Will it have
> negative
> > performance implications?
> >
> > D.
> >
> > [1] -
> > http://apache-ignite-users.70518.x6.nabble.com/ODBC-Driver-td4557.html
> >
>

Re: ODBC question

Posted by Igor Sapego <is...@gridgain.com>.
Dmitriy,

Sure it may have some impact on the performance as user would need
to make more several calls instead of one to fetch several rows. Though
I'm pretty sure that this impact is not going to be very big because of the
current approach.

Currently ODBC Driver retrieves several rows of the result set in one
request and then just pass them to user buffers on SQLFetch request
while doing type conversation job if needed. Basically with current approach
even if we would implement fetching of several rows in one call the
difference in operation performance would not be significant (I think it
would
be barely noticeable though I didn't check it and may be wrong). The only
difference would be that the buffers-filling loop had been moved from user
code to the driver code.

Of course we may want to implement this feature but I don't see it as an
urgent. I believe that if we want to improve overall ODBC driver
performance then we need to properly profile it and fix bottle necks, and I
doubt that this approach is one of them.


Best Regards,
Igor

On Fri, Apr 29, 2016 at 11:37 PM, Dmitriy Setrakyan <ds...@apache.org>
wrote:

> One of the users recently asked on the user list [1] whether our ODBC
> driver supports row-set binding and we gave him the following answer:
>
> —-
> ODBC driver supports rowset binding though currently only fetching of a
> single row per call is supported, i.e. SQL_ATTR_ROW_ARRAY_SIZE attribute
> can only be set to 1 right now.
> —-
>
> I am curious as to what “single row per call” means. Will it have negative
> performance implications?
>
> D.
>
> [1] -
> http://apache-ignite-users.70518.x6.nabble.com/ODBC-Driver-td4557.html
>