Window functions

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Window functions

Charles Leifer
Hi,

I'm sure this has been asked before, but are window functions on the
roadmap? Is it the authors' experience that the implementation would
significantly complicate sqlite? Just curious. Thanks so much for a
fantastic library.

Charlie
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Window functions

J Decker
What are 'window functions'?

If you mean GUI; that's really outside the scope of Sqlite; and whatever
environment you're in can provide your GUI;
https://www.npmjs.com/package/sack-gui for instance for Javascript(Node.js).

On Wed, Apr 25, 2018 at 12:04 PM, Charles Leifer <[hidden email]> wrote:

> Hi,
>
> I'm sure this has been asked before, but are window functions on the
> roadmap? Is it the authors' experience that the implementation would
> significantly complicate sqlite? Just curious. Thanks so much for a
> fantastic library.
>
> Charlie
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Window functions

Olivier Mascia
> On Wed, Apr 25, 2018 at 12:04 PM, Charles Leifer <[hidden email]> wrote:
>
>> Hi,
>>
>> I'm sure this has been asked before, but are window functions on the
>> roadmap? Is it the authors' experience that the implementation would
>> significantly complicate sqlite? Just curious. Thanks so much for a
>> fantastic library.
>>
>> Charlie

> Le 26 avr. 2018 à 05:41, J Decker <[hidden email]> a écrit :
>
> What are 'window functions'?

SQL window functions are constructs like:

https://en.wikipedia.org/wiki/SQL_window_function
https://www.postgresql.org/docs/9.1/static/tutorial-window.html
https://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-dml-windowfuncs.html
https://drill.apache.org/docs/sql-window-functions-introduction/
https://docs.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-2017
https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions004.htm#SQLRF06174

--
Best Regards, Meilleures salutations, Met vriendelijke groeten,
Olivier Mascia


_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: [EXTERNAL] Window functions

Hick Gunter
In reply to this post by Charles Leifer
"Window functions" aka "scrollable cursors" require that the whole result set ist stored somewhere. Or at least the current position of all of the tables/indices involved in producing it, provided that such positions are settable. You then need to keep track of how many records need to be produced to satisfy the window position.

If you really need scrollable cursors, you are free to implement them, maybe by

CREATE TEMP TABLE query_results AS SELECT...

Followed by

SELECT * FROM query_results WHERE rowid BETWEEN ?start AND ?end;

And cleaning up with

DROP TABLE query_results;

Note that you will be producing the complete result set before you are able to return even only the first row. This defeats any gain from having the query return results in the desired order without requiring a sort, i.e. choosing the indices that makes the desired order coincide with the natural order.



-----Ursprüngliche Nachricht-----
Von: sqlite-users [mailto:[hidden email]] Im Auftrag von Charles Leifer
Gesendet: Mittwoch, 25. April 2018 21:05
An: General Discussion of SQLite Database <[hidden email]>
Betreff: [EXTERNAL] [sqlite] Window functions

Hi,

I'm sure this has been asked before, but are window functions on the roadmap? Is it the authors' experience that the implementation would significantly complicate sqlite? Just curious. Thanks so much for a fantastic library.

Charlie
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users


___________________________________________
 Gunter Hick | Software Engineer | Scientific Games International GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100 - 0

May be privileged. May be confidential. Please delete if not the addressee.
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: [EXTERNAL] Window functions

Shevek
About storing the whole result set: Note that in postgresql-derivatives
(and Oracle? maybe Teradata?), this is valid:

select lag(a0, a0) over () from a;

whereas many other servers (which I won't name) require the second
argument of lag() to be constant. If it is constant (even in
postgresql-derivatives), a better window bound than the implicit
"unbounded preceding" can be computed by the optimizer, and this may be
essential for an efficient implementation of the most common case,
because then the window buffer (per-group) can be guaranteed to fit into
(pre-allocated) RAM.

S.

On 04/26/2018 07:44 AM, Hick Gunter wrote:

> "Window functions" aka "scrollable cursors" require that the whole result set ist stored somewhere. Or at least the current position of all of the tables/indices involved in producing it, provided that such positions are settable. You then need to keep track of how many records need to be produced to satisfy the window position.
>
> If you really need scrollable cursors, you are free to implement them, maybe by
>
> CREATE TEMP TABLE query_results AS SELECT...
>
> Followed by
>
> SELECT * FROM query_results WHERE rowid BETWEEN ?start AND ?end;
>
> And cleaning up with
>
> DROP TABLE query_results;
>
> Note that you will be producing the complete result set before you are able to return even only the first row. This defeats any gain from having the query return results in the desired order without requiring a sort, i.e. choosing the indices that makes the desired order coincide with the natural order.
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: sqlite-users [mailto:[hidden email]] Im Auftrag von Charles Leifer
> Gesendet: Mittwoch, 25. April 2018 21:05
> An: General Discussion of SQLite Database <[hidden email]>
> Betreff: [EXTERNAL] [sqlite] Window functions
>
> Hi,
>
> I'm sure this has been asked before, but are window functions on the roadmap? Is it the authors' experience that the implementation would significantly complicate sqlite? Just curious. Thanks so much for a fantastic library.
>
> Charlie
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
> ___________________________________________
>   Gunter Hick | Software Engineer | Scientific Games International GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100 - 0
>
> May be privileged. May be confidential. Please delete if not the addressee.
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: [EXTERNAL] Window functions

Hick Gunter
Of course you can trade memory space for code complexity/size/speed (see my reference to "current position" being re-settable). Neither is available on embedded systems. Which would make the code another #define to be tested (correct results with and without the optional code), and supported from then on to eternity.

-----Ursprüngliche Nachricht-----
Von: sqlite-users [mailto:[hidden email]] Im Auftrag von Shevek
Gesendet: Donnerstag, 26. April 2018 10:36
An: SQLite mailing list <[hidden email]>
Betreff: Re: [sqlite] [EXTERNAL] Window functions

About storing the whole result set: Note that in postgresql-derivatives (and Oracle? maybe Teradata?), this is valid:

select lag(a0, a0) over () from a;

whereas many other servers (which I won't name) require the second argument of lag() to be constant. If it is constant (even in postgresql-derivatives), a better window bound than the implicit "unbounded preceding" can be computed by the optimizer, and this may be essential for an efficient implementation of the most common case, because then the window buffer (per-group) can be guaranteed to fit into
(pre-allocated) RAM.

S.

On 04/26/2018 07:44 AM, Hick Gunter wrote:

> "Window functions" aka "scrollable cursors" require that the whole result set ist stored somewhere. Or at least the current position of all of the tables/indices involved in producing it, provided that such positions are settable. You then need to keep track of how many records need to be produced to satisfy the window position.
>
> If you really need scrollable cursors, you are free to implement them,
> maybe by
>
> CREATE TEMP TABLE query_results AS SELECT...
>
> Followed by
>
> SELECT * FROM query_results WHERE rowid BETWEEN ?start AND ?end;
>
> And cleaning up with
>
> DROP TABLE query_results;
>
> Note that you will be producing the complete result set before you are able to return even only the first row. This defeats any gain from having the query return results in the desired order without requiring a sort, i.e. choosing the indices that makes the desired order coincide with the natural order.
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: sqlite-users
> [mailto:[hidden email]] Im Auftrag von
> Charles Leifer
> Gesendet: Mittwoch, 25. April 2018 21:05
> An: General Discussion of SQLite Database
> <[hidden email]>
> Betreff: [EXTERNAL] [sqlite] Window functions
>
> Hi,
>
> I'm sure this has been asked before, but are window functions on the roadmap? Is it the authors' experience that the implementation would significantly complicate sqlite? Just curious. Thanks so much for a fantastic library.
>
> Charlie
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
> ___________________________________________
>   Gunter Hick | Software Engineer | Scientific Games International
> GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR:
> 0430013 | (O) +43 1 80100 - 0
>
> May be privileged. May be confidential. Please delete if not the addressee.
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users


___________________________________________
 Gunter Hick | Software Engineer | Scientific Games International GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100 - 0

May be privileged. May be confidential. Please delete if not the addressee.
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

copmile SQLite with extension?

Thomas Kurz
I have a project with heavily uses the libsqlitefunctions extension. It is a bit annoying to "select load_extension('...')" for every connection.

Is it possible to compile an sqlite.dll which already has the extension embedded so that the functions provided can be used without further initialization required?

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: [EXTERNAL] copmile SQLite with extension?

Hick Gunter
See http://sqlite.org/loadext.html

-----Ursprüngliche Nachricht-----
Von: sqlite-users [mailto:[hidden email]] Im Auftrag von Thomas Kurz
Gesendet: Donnerstag, 26. April 2018 14:06
An: SQLite mailing list <[hidden email]>
Betreff: [EXTERNAL] [sqlite] copmile SQLite with extension?

I have a project with heavily uses the libsqlitefunctions extension. It is a bit annoying to "select load_extension('...')" for every connection.

Is it possible to compile an sqlite.dll which already has the extension embedded so that the functions provided can be used without further initialization required?

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users


___________________________________________
 Gunter Hick | Software Engineer | Scientific Games International GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100 - 0

May be privileged. May be confidential. Please delete if not the addressee.
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: copmile SQLite with extension?

dave
In reply to this post by Thomas Kurz
> Behalf Of Thomas Kurz
> Sent: Thursday, April 26, 2018 7:06 AM
> Subject: [sqlite] copmile SQLite with extension?
>
> I have a project with heavily uses the libsqlitefunctions
> extension. It is a bit annoying to "select
> load_extension('...')" for every connection.
>
> Is it possible to compile an sqlite.dll which already has the
> extension embedded so that the functions provided can be used
> without further initialization required?

Here are couple things you might consider:
*  In most of my projects, I statically link the various extensions and
sqlite, rather than load them dynamically.  To do this, you may also need to
make some subtle changes in your extension code.  In particular there is a
difference between SQLITE_EXTENSION_INIT1 and SQLITE_EXTENSION_INIT3 that
determines if the extension code makes calls to bound sqlite code, or
through a 'vtable' provided by the host application.  There is a complier
constant SQLITE_CORE that is meant to be defined if you are linking sqlite
statically, and it can be used to swtich between that behaviour.  E.g., my
extension code starts with this:

#ifndef SQLITE_CORE
#include <sqlite3ext.h>
//declares extern the vtable of all the sqlite3 functions (for loadable
modules only)
SQLITE_EXTENSION_INIT3
#else
#include <sqlite3.h>
#endif

*  you still mention a DLL, though.  Maybe you are putting all of SQLite in
a dll, but want that dll to contain your extension code?  I believe that the
static linking stuff I mention above is still relevant in that case, since
the extension would be statically linked to the sqlite core.

*  even if you link all that stuff statically, you still have to register
your extensions.  Moreover, extensions are associated with databases, and so
(I believe) you are meant to do it again if you ATTACH another db.  In the
'extension in a dll' form, you are meant to export a method under a
well-known name that is used by the load_extension function (you can change
the name, but you'll have to specify it explicitly).  If you statically
link, you will still need to call this registration method explicitly.
There is help in this method:

sqlite3_auto_extension()

Which will invoke your registration function for you, for every attached
database.  This makes it more-or-less transparent when you use the rest of
the sqlite library -- your extensions are just there.

Again, I'm unclear on your question about compiling sqlite.dll, but I am
interpreting that to mean:  "I still want sqlite to be a separate dll for
some reason, rather than statically linking it, but I want that dll to have
sqlite, and my extension, and auto register them so I don't have to."  If
so, I believe all my above statements are accurate:
*  the extension should be treated as statically linked to sqlite with the
relevant changes to some of the SQLITE_EXTENSION_xxx macros.
*  the registration still needs to be performed; you can do that wherever
you're doing other library initialization
*  you can make that registration more transparent by using the
sqlite3_auto_extension() mechanism

HTH

-dave


_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: copmile SQLite with extension?

Keith Medcalf
In reply to this post by Thomas Kurz

Yes.

Simply append the extension to the sqlite3.c source code.  When you do this you need to have the symbol SQLITE_CORE defined so that the extension calls the sqlite3* entrypoints directly rather than through the indirection table.  The main sqlite3.c source should take care of this for you. (But if you compile the extension into a separate linkage unit, you need to define SQLITE_CORE manually).

Then you need to write an "extra init" function to add the extension entry-points to the auto-extension list at sqlite3 init time.  There is a symbol which causes this function to be called at sqlite3 init time called SQLITE_EXTRA_INIT (go look in the source).  You define this to be your "extra init" function that uses sqlite3_auto_init to add all the extension init routines to be initialized on each connection.  Append this to sqlite3.c *after* the extensions.  (Or compile into a separate linkage unit with SQLITE_CORE defined).

Then compile sqlite3.c as you normally would but with SQLITE_EXTRA_INIT defined to your extra init function.  (and, if not inline, add the extra linkage units to the link-edit step)  The added extensions will now be available to every connection.

You may have to make some changes to some of the extension code you do this with if it has extra symbols, duplicate symbols, or (for example on Windows) tries to export the init function since you no longer need to export that symbol.

---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume.

>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>[hidden email]] On Behalf Of Thomas Kurz
>Sent: Thursday, 26 April, 2018 06:06
>To: SQLite mailing list
>Subject: [sqlite] copmile SQLite with extension?
>
>I have a project with heavily uses the libsqlitefunctions extension.
>It is a bit annoying to "select load_extension('...')" for every
>connection.
>
>Is it possible to compile an sqlite.dll which already has the
>extension embedded so that the functions provided can be used without
>further initialization required?
>
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: copmile SQLite with extension?

Thomas Kurz
Ok, thank you, I will try this.

@dave:
Thank you, too. Unfortunately, I cannot link statically as I do not have the source code of the application I'm using. It just uses sqlite3.dll dynamically, and my goal is to replace this library with one that has the math functions included so that I do not have to "load_extension" each time I connect to the database.


----- Original Message -----
From: Keith Medcalf <[hidden email]>
To: SQLite mailing list <[hidden email]>
Sent: Thursday, April 26, 2018, 15:56:11
Subject: [sqlite] copmile SQLite with extension?


Yes.

Simply append the extension to the sqlite3.c source code.  When you do this you need to have the symbol SQLITE_CORE defined so that the extension calls the sqlite3* entrypoints directly rather than through the indirection table.  The main sqlite3.c source should take care of this for you. (But if you compile the extension into a separate linkage unit, you need to define SQLITE_CORE manually).

Then you need to write an "extra init" function to add the extension entry-points to the auto-extension list at sqlite3 init time.  There is a symbol which causes this function to be called at sqlite3 init time called SQLITE_EXTRA_INIT (go look in the source).  You define this to be your "extra init" function that uses sqlite3_auto_init to add all the extension init routines to be initialized on each connection.  Append this to sqlite3.c *after* the extensions.  (Or compile into a separate linkage unit with SQLITE_CORE defined).

Then compile sqlite3.c as you normally would but with SQLITE_EXTRA_INIT defined to your extra init function.  (and, if not inline, add the extra linkage units to the link-edit step)  The added extensions will now be available to every connection.

You may have to make some changes to some of the extension code you do this with if it has extra symbols, duplicate symbols, or (for example on Windows) tries to export the init function since you no longer need to export that symbol.

---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume.

>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>[hidden email]] On Behalf Of Thomas Kurz
>Sent: Thursday, 26 April, 2018 06:06
>To: SQLite mailing list
>Subject: [sqlite] copmile SQLite with extension?

>I have a project with heavily uses the libsqlitefunctions extension.
>It is a bit annoying to "select load_extension('...')" for every
>connection.

>Is it possible to compile an sqlite.dll which already has the
>extension embedded so that the functions provided can be used without
>further initialization required?

>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: [EXTERNAL] Window functions

wmertens
In reply to this post by Hick Gunter
I implemented cursors by simply sending an encoded set of row values that
indicate the absolute sorting position of your current query. Given that
set of values, you can continue the query from that position, even if
values were added or removed before the position.

See
https://www.mail-archive.com/sqlite-users@.../msg109379.html

Note that if you want small cursor values, you could also insert the cursor
values in a server-side table and send the id only.

On Thu, Apr 26, 2018 at 11:52 AM Hick Gunter <[hidden email]> wrote:

> Of course you can trade memory space for code complexity/size/speed (see
> my reference to "current position" being re-settable). Neither is available
> on embedded systems. Which would make the code another #define to be tested
> (correct results with and without the optional code), and supported from
> then on to eternity.
>
> -----Ursprüngliche Nachricht-----
> Von: sqlite-users [mailto:[hidden email]]
> Im Auftrag von Shevek
> Gesendet: Donnerstag, 26. April 2018 10:36
> An: SQLite mailing list <[hidden email]>
> Betreff: Re: [sqlite] [EXTERNAL] Window functions
>
> About storing the whole result set: Note that in postgresql-derivatives
> (and Oracle? maybe Teradata?), this is valid:
>
> select lag(a0, a0) over () from a;
>
> whereas many other servers (which I won't name) require the second
> argument of lag() to be constant. If it is constant (even in
> postgresql-derivatives), a better window bound than the implicit "unbounded
> preceding" can be computed by the optimizer, and this may be essential for
> an efficient implementation of the most common case, because then the
> window buffer (per-group) can be guaranteed to fit into
> (pre-allocated) RAM.
>
> S.
>
> On 04/26/2018 07:44 AM, Hick Gunter wrote:
> > "Window functions" aka "scrollable cursors" require that the whole
> result set ist stored somewhere. Or at least the current position of all of
> the tables/indices involved in producing it, provided that such positions
> are settable. You then need to keep track of how many records need to be
> produced to satisfy the window position.
> >
> > If you really need scrollable cursors, you are free to implement them,
> > maybe by
> >
> > CREATE TEMP TABLE query_results AS SELECT...
> >
> > Followed by
> >
> > SELECT * FROM query_results WHERE rowid BETWEEN ?start AND ?end;
> >
> > And cleaning up with
> >
> > DROP TABLE query_results;
> >
> > Note that you will be producing the complete result set before you are
> able to return even only the first row. This defeats any gain from having
> the query return results in the desired order without requiring a sort,
> i.e. choosing the indices that makes the desired order coincide with the
> natural order.
> >
> >
> >
> > -----Ursprüngliche Nachricht-----
> > Von: sqlite-users
> > [mailto:[hidden email]] Im Auftrag von
> > Charles Leifer
> > Gesendet: Mittwoch, 25. April 2018 21:05
> > An: General Discussion of SQLite Database
> > <[hidden email]>
> > Betreff: [EXTERNAL] [sqlite] Window functions
> >
> > Hi,
> >
> > I'm sure this has been asked before, but are window functions on the
> roadmap? Is it the authors' experience that the implementation would
> significantly complicate sqlite? Just curious. Thanks so much for a
> fantastic library.
> >
> > Charlie
> > _______________________________________________
> > sqlite-users mailing list
> > [hidden email]
> > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >
> >
> > ___________________________________________
> >   Gunter Hick | Software Engineer |
> <https://maps.google.com/?q=are+Engineer+%7C&entry=gmail&source=g>
> Scientific Games International
> > GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR:
> > 0430013 | (O) +43 1 80100 <+43%201%2080100> - 0
> >
> > May be privileged. May be confidential. Please delete if not the
> addressee.
> > _______________________________________________
> > sqlite-users mailing list
> > [hidden email]
> > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
> ___________________________________________
>  Gunter Hick | Soft
> <https://maps.google.com/?q=er+Hick+%7C+Soft&entry=gmail&source=g>ware
> Engineer | Scientific Games International GmbH | Klitschgasse 2-4, A-1130
> Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100
> <+43%201%2080100> - 0
>
> May be privileged. May be confidential. Please delete if not the addressee.
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users