← Back to team overview

maria-developers team mailing list archive

C API prepared statements parameters for IN (x, x, x, ...)

 

I want to add support for this or sponsor it - if it is really true that
this is not possible with the current c API. I have been told to do:

SELECT x FROM x WHERE id IN (?, ?);

Where the content of the parenthesis are not dynamic.

Rather than going at it brute force on my own, which is my tendency, I
want to hear what other developers think and if someone, perhaps a core
dev, wants to, I would like to sponsor it.

Sorry for the short email. It's late here in Japan. I have been thinking
about this for months. Until now I have been using all sorts of
work-arounds, but I think that dealing with the core issue will be a
better use of my time/resources.

More experienced developers may state reasons why this is not possible.
Though as you may be able to tell, I can see how it could work.

Of course I may be not seeing how everyone else is doing it. From what I
can tell (lots code grepping, asking on mailing lists), noone in doing
it. In my opinion, that is a shame. Because an, AFAICT, an IN clause
means one disk read.

The application I am working on make extensive use of IN clauses for
reading many records in one call. Some may call this an
micro-optimization. If that is really so, please show me that thousands
of individual calls to a prepared statement like:

SELECT x FROM x WHERE id = x;

is as efficient as one call to:

SELECT x FROM x WHERE id IN (x, x, x, ...);

Background:

I am using APR Util and have asked a few people about this and it boils
down to the underlying drivers not supporting it. I would ultimately
like to code a solution for pgsql as well. Mariadb is where I would like
to start however. Then add support for it in APR.

Suggesting I use sprintf to create dynamic queries means that I need to
write my own sprintf, because as you know, va_arg etc. An array is
actually dynamic - not va_arg - reading from file etc.

Please feel free to tell me I am stupid, suggest efficient alternatives,
tell me that it is actually supported (point me to the docs), etc. SSDs
and such are great. Though, I still think it is a shame to be that lazy.
No, I do not think the world will overheat because of our lazy
programming. I have to throw that in there with the current political
climate. No pun intended. ;)

Thanks,

Simon

PS

I do not work for any stock trading companies. The project I am working
on is opensource. I just want to engineer something very nice.

Attachment: 0x15769AF2BDDA5F45.asc
Description: application/pgp-keys

Attachment: signature.asc
Description: OpenPGP digital signature


Follow ups