Re: [sqlite] JDBC and savepoints

2014-07-09 Thread Pepijn Van Eeckhoudt
The Xerial JDBC driver does not if I recall correctly. There’s no reason why it 
couldn’t, the developers just didn’t implement it. Perhaps you should file an 
enhancement request in their issue tracker requesting it be implemented.
If you don’t need nested transactions then you can get a single begin/commit 
transaction by disabling auto commit (see 
http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html)

Pepijn

On 29 Jun 2014, at 12:15, hala  wrote:

> JDBC does not support savepoints from SQLite
> 
> is there any replacement for savepoints?
> 
> if not what to use for bulk inserts to ensure the possibility of rolling
> back without losing much data?
> 
> 
> 
> --
> View this message in context: 
> http://sqlite.1065341.n5.nabble.com/JDBC-and-savepoints-tp76304.html
> Sent from the SQLite mailing list archive at Nabble.com.
> ___
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Sqlie from c#: encoding bug?

2014-01-20 Thread Pepijn Van Eeckhoudt
Sounds like you're passing a non utf-8 encoded string from C# directly 
to sqlite.


The easiest way I know of to check the actual data in the database is to 
dump it as hex (i.e., select hex(column_name)) and check if the contents 
are what you expect or not.


Gut feeling is that the strings in the database will be incorrect which 
would mean that the problem is on the C# binding side. The problem is 
most likely located where the C# strings are converted to C strings. I'm 
not a C# user, but from the documentation it looks like you (or the 
binding you're using) should be calling Encoding.UTF8.GetBytes(myString) 
somewhere. Perhaps that's something you could check for in the code?


Pepijn

On 19-01-14 16:57, cinema cinema wrote:

I'm reading a text from c# saving it through a insert parameter in a
varchar column of a table. Both the file and the sqlite db encoding is
utf-8 but I see different characters (it seems due to a bad encoding) while
reading data from the sqlite3 command line or from other clients...
Any suggestion?
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Does sqlite has db file-size restriction on Solaris 10?

2013-11-26 Thread Pepijn Van Eeckhoudt
Ah ok, I thought the Xerial driver no longer supported the nestedvm 
stuff. What you'll need to do is compile the Xerial binary for Solaris. 
See https://bitbucket.org/xerial/sqlite-jdbc/wiki/Home#BuildfromSource 
for details.


Pepijn

On 11/26/2013 06:48 AM, Liang Kunming wrote:
Hi, Pepijn, After confirm and compare the content, the jdbc driver 
which we are using to access sqlite is from Xerial fork 
(https://bitbucket.org/xerial/sqlite-jdbc): 
sqlite-jdbc-3.7.2.jar<https://bitbucket.org/xerial/sqlite-jdbc/downloads/sqlite-jdbc-3.7.2.jar>. 
Do you have any other suggestion for this issue? Thanks. 
sqlite-jdbc-3.7.2.jar<https://bitbucket.org/xerial/sqlite-jdbc/downloads/sqlite-jdbc-3.7.2.jar> 
3.1 MB 2013-01-23 48150 Regards, Liang Kunming. -Original 
Message- From: sqlite-users-boun...@sqlite.org 
[mailto:sqlite-users-boun...@sqlite.org] On Behalf Of Liang Kunming 
Sent: 2013年11月25日 17:29 To: General Discussion of SQLite Database 
Subject: Re: [sqlite] Does sqlite has db file-size restriction on 
Solaris 10? Hi, Pepijn, Thanks. Please help me to do some testing and 
check whether the 2GB restrict issue be solved if use new driver. 
Regards, Liang Kunming. -Original Message- From: 
sqlite-users-boun...@sqlite.org 
[mailto:sqlite-users-boun...@sqlite.org] On Behalf Of Pepijn Van 
Eeckhoudt Sent: 2013年11月25日 16:09 To: sqlite-users@sqlite.org 
Subject: Re: [sqlite] Does sqlite has db file-size restriction on 
Solaris 10? On 2013-11-23 02:03, Liang Kunming wrote:
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database 
(no such table: tasks) 
at org.sqlite.DB.newSQLException(DB.java:383) 
at org.sqlite.DB.newSQLException(DB.java:387) 
at org.sqlite.DB.throwex(DB.java:374) 
at org.sqlite.NestedDB.prepare(NestedDB.java:134) 
at org.sqlite.DB.prepare(DB.java:123) 
NestedDB in the stack trace indicates you're using the old Zentus JDBC 
driver in NestedVM (http://nestedvm.ibex.org/) mode. I would first try 
to take that out of the equation and see if it solves the problem. To 
do that you'll need to compile the native library part of the Zentus 
driver for Solaris, but since the source code is no longer available 
that might be hard to do (unless you have a copy somewhere). Using the 
Xerial fork (https://bitbucket.org/xerial/sqlite-jdbc) is probably 
easier. It doesn't ship with a Solaris binary though, so you'll still 
need to compile that first. Pepijn 
___ sqlite-users mailing 
list sqlite-users@sqlite.org 
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users 
___ sqlite-users mailing 
list sqlite-users@sqlite.org 
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users 
___ sqlite-users mailing 
list sqlite-users@sqlite.org 
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Does sqlite has db file-size restriction on Solaris 10?

2013-11-25 Thread Pepijn Van Eeckhoudt

On 2013-11-23 02:03, Liang Kunming wrote:

 java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database
(no such table: tasks)
 at org.sqlite.DB.newSQLException(DB.java:383)
 at org.sqlite.DB.newSQLException(DB.java:387)
 at org.sqlite.DB.throwex(DB.java:374)
 at org.sqlite.NestedDB.prepare(NestedDB.java:134)
 at org.sqlite.DB.prepare(DB.java:123)


NestedDB in the stack trace indicates you're using the old Zentus JDBC 
driver in NestedVM (http://nestedvm.ibex.org/) mode. I would first try 
to take that out of the equation and see if it solves the problem. To do 
that you'll need to compile the native library part of the Zentus driver 
for Solaris, but since the source code is no longer available that might 
be hard to do (unless you have a copy somewhere). Using the Xerial fork 
(https://bitbucket.org/xerial/sqlite-jdbc)
is probably easier. It doesn't ship with a Solaris binary though, so 
you'll still need to compile that first.


Pepijn
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] SQLite version 3.8.2 running 2.5x faster for some queries.

2013-11-23 Thread Pepijn Van Eeckhoudt
Is datetime special in thuis context or will constant expression hoisting like 
this happen for any function?

Pepijn

> Op 22-nov.-2013 om 15:35 heeft Richard Hipp  het volgende 
> geschreven:
> 
> The www.sqlite.org server logs are stored in an SQLite database (of
> course).  We have a script that is run daily on that database with a dozen
> or so queries that look something like this:
> 
> .print
> .print  Downloads in the past 24 hours 
> .mode column
> .width -6 -6 100
> .header on
> SELECT count(*) AS count, count(distinct ip) AS IPs, url
>  FROM log
> WHERE date>datetime('now','-24 hours')
>AND (url GLOB '*/2013/*'
> OR url GLOB '*/snapshot/*'
> OR url GLOB '*/xfer'
> OR url GLOB '*/blob/*')
> GROUP BY url
> ORDER BY count DESC;
> 
> Today's database contains 6 days worth of data, is 590MB in size, and is
> just short of 2 million records.  There are no indices, so each query is a
> full table scan.  Using SQLite 3.8.1, the query above took 1.793 seconds on
> a recent test run.  But the code on trunk (and the latest snapshots at
> http://www.sqlite.org/download.html) took only 0.686 seconds.  The
> difference is that the string constants and the datetime() function call
> are factored out of the inner loop in 3.8.2.
> 
> To be fair:  Our production script does not contain exactly the SQL shown
> above. Rather than using the bare datetime() call, the real script says:
> "(SELECT datetime('now','-24 hours'))".  Putting the datetime() call inside
> a subquery is a trick that causes the datetime function to only be invoked
> once even without the new constant-function factoring optimization of
> 3.8.2.  And with that trick, the performance difference is not nearly so
> dramatic (though 3.8.2 is still faster by about 10%).  Also, the
> performance difference here would only apply to a full table scan that
> spends a lot of time looping inside of the virtual machine.  There would
> not be nearly as dramatic a difference if the database held an index on the
> "log.date" column.
> 
> Nevertheless, we suspect that queries like the above are common in the
> wild, and so we hope that the upcoming 3.8.2 release will make a big
> difference for some people.
> 
> If you try the 3.8.2 pre-release snapshot in your application and see a
> performance improvement, we'd appreciate hearing from you.
> 
> For testing and comparison purposes, the optimization that doubles the
> performance of the query above can be disabled using the following API:
> 
>sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS, db, 8);
> 
> where "db" is the database connection create by sqlite3_open(), or if you
> are using the command-line shell:
> 
>.testctrl optimizations 8
> 
> -- 
> D. Richard Hipp
> d...@sqlite.org
> ___
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Intended use case for 'without rowid'?

2013-11-19 Thread Pepijn Van Eeckhoudt
On 18 Nov 2013, at 06:13, Simon Slavin  wrote:
> On 18 Nov 2013, at 3:38am, Peter Aronson  wrote:
> 
>> It might be simpler to simply specify a minimum release of SQLite that must 
>> be supported,
> 
> Actually this is how lots of apps specify their file format.  Part of the 
> file header is a version number.  When the API opens the file it checks to 
> see that its version is equal or higher to the version number encoded in the 
> file.  If not, it presents an error message.
> 
> This means you don't have to encode complicated logic about which file 
> version requires which abilities.  All you need to do is compare two 
> versions.  It's neat.

That would be the ideal solution but, unless I missed it, there’s no such 
number in the sqlite database header that we can use for this purpose. Schema 
format number seems like the closest thing that you could use for this, but it 
wasn’t bumped with the addition of partial indices and without rowid.

I guess Peter’s ‘try to open with SQLite 3.7’ heuristic is the best we’ll be 
able to do. The only downside of that approach is that you can’t distinguish 
between incompatible DDL and actual database corruption.

Pepijn
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Intended use case for 'without rowid'?

2013-11-16 Thread Pepijn Van Eeckhoudt

> For Peter & Pepijn - I think the issue is essentially a forward-compatibility 
> problem moreso than a backward-compatibility one. So I think your idea on 
> introducing some version control would be the least painful.
Indeed. The lack of rowid itself is not an issue. It's that someone could 
create a database using SQLite 3.8.x features, pass it on to someone with a 
SQLite 3.7 based app and run into runtime problems that they weren't expecting. 
We're looking for some way to reliably detect these kinds of cases or 
alternatively language to put in the spec to prevent this situation in the 
first place.

AFAICT there's no simple value in the database we can use to check for this. I 
mistakenly thought we could use the schema format number for this. Queries on 
sqlite_master could work but we would need to come up with a way to use this 
reliably. The suggested queries check for known problems. I'm worried that this 
will be an inherently brittle check since the next sqlite revision could 
introduce a new feature for which the spec has no checks in place.

Perhaps we should make the allowed DDL subset a part of the spec. That way we 
make explicit what is allowed and anything outside of that is forbidden.

Pepijn
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Intended use case for 'without rowid'?

2013-11-15 Thread Pepijn Van Eeckhoudt
Will without rowid introduce a new schema version number?

If so, we’ll be ok since GeoPackage requires schema version 4.

Pepijn

On 15 Nov 2013, at 16:33, Peter Aronson  wrote:

> One  additional thing not listed in this document -- use of a internal rowid 
> alias (OID, ROWID or _ROWID_) will produce a parse error on a query against a 
> WITHOUT ROWID table (unless, of course, it has an actual column with the 
> specified name),  which makes sense, of course, but could be an issue for 
> generic table handling code that currently uses any of those.
> 
> The fact that the presence of such a table makes a database containing one 
> unreadable at releases before 3.8.2 is a bit of an issue for those using 
> SQLite as a data exchange format (like GeoPackages), but then that's true 
> with partial indexes too.
> 
> Peter
> 
> On 11/15/2013 4:47 AM, Luís Simão wrote:
>> SQLite answers those question in:
>> 
>> http://www.sqlite.org/draft/withoutrowid.html
>> 
>> BR
>> ___
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> 
> 
> ___
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Intended use case for 'without rowid'?

2013-11-15 Thread Pepijn Van Eeckhoudt

On 15-11-13 12:47, Luís Simão wrote:

SQLite answers those question in:

http://www.sqlite.org/draft/withoutrowid.html

Thanks for the pointer. That answered all my questions.

Pepijn



BR
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users



___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


[sqlite] Intended use case for 'without rowid'?

2013-11-15 Thread Pepijn Van Eeckhoudt
I've been looking into the upcoming 'without rowid' feature 
implementation to assess if it will have any impact on the OGC 
GeoPackage specification.


One of the things I was wondering is what the intended use case of this 
feature is. Does it provide a performance boost and/or space savings? If 
not, when would you use this?


Regards,

Pepijn
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] How to use aux_data effectively?

2013-09-07 Thread Pepijn Van Eeckhoudt
On 07 Sep 2013, at 02:03, Peter Aronson  wrote:

> Ah, I see.  Yeah, that would be trickier.  You could save off the geometry 
> blob and the GEOSPreparedGeometry object in a structure passed in to 
> sqlite3_create_function and accessed via sqlite3_user_data and memcmp each 
> geometry blob with the previous one to see if you need to regenerate the 
> prepared geometry, but then you'd have to clean it up yourself somehow 
> afterwards, and the cost of alloc, memcpy calls and memcmp calls would have 
> to be cheaper than generating the prepared geometry.  


That's definitely an option; I'm already using sqlite3_user_data to store a 
bunch of function pointers that abstract the differences between geopackage, 
spatialite3 and spatialite4. It's all still pretty crude, but it's starting to 
get where I want it to be.

Adding a fixed size LRU geometry cache to this seems like the way forward, 
which is essentially what spatialite has done as well. Fixed size LRU avoids 
the need to have cleanup routines. I would expect the memcmp to not be slower 
than creating the prepared geometry. Creating that object requires two 
converting from blob to GEOSGeometry to GEOSPreparedGeometry. I have a hard 
time imagining that this would be faster than one or two memcmps. Anyway, I'll 
experiment with this approach and profile it to see if it's worth it.

Thanks for the ideas and advice.

Pepijn
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] How to use aux_data effectively?

2013-09-06 Thread Pepijn Van Eeckhoudt
Peter,

Thanks for the suggestion but that's not the part I'm trying to optimise at the 
moment. It could be useful to use auxdata there as well to avoid reparsing the 
text of course. What I would really like to achieve is that the 
GEOSPreparedGeometry can be cached to speed up the geometry calculations.

Pepijn

On 07 Sep 2013, at 00:58, Peter Aronson  wrote:

> Actually, as it turns out, you can get the result you want by having the 
> GeomFromText function use auxdata to store the geometry blob generated from 
> the WKT string, since it's a constant.  Then all the GeomFromText has to do 
> is to return the Geometry blob when sqlite3_get_auxdata returns non-NULL.
> 
> Peter
> 
> - Original Message -
>> From: Pepijn Van Eeckhoudt 
>> To: sqlite-users@sqlite.org
>> Cc: 
>> Sent: Friday, September 6, 2013 8:38 AM
>> Subject: [sqlite] How to use aux_data effectively?
>> 
>> Hi,
>> 
>> In the extension I'm developing (https://bitbucket.org/luciad/libgpkg)
>> I'm currently adding support for queries like:
>> select Distance(
>>   GeomFromText('Point(13.457 3)'),
>>   geometry
>> ) from table;
>> 
>> GeomFromText takes a string and outputs a geometry blob
>> Distance takes two geometry blobs and returns a double
>> 
>> In order to speed up the distance function I was wondering if I could
>> use aux_data to cache the parsed version of the first parameter since
>> this remains the same for every call. So far I haven't been able to get
>> this to work though, aux_data is always NULL, no matter what I try.
>> 
>> My hunch is that this is because the first parameter is the result of a
>> function call which could in theory return different values for each row
>> even if the input parameters are constant. Is that correct?
>> 
>> Are there any other ways to kind of memoize the GeomFromText function
>> (or the parameters to distance) besides aux_data?
>> 
>> Thanks,
>> 
>> Pepijn
>> 
>> ___
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> 
> ___
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] How to use aux_data effectively?

2013-09-06 Thread Pepijn Van Eeckhoudt
On 06 Sep 2013, at 17:51, Simon Davies  wrote:

>> Are there any other ways to kind of memoize the GeomFromText function
>> (or the parameters to distance) besides aux_data?
> 
> select Distance( constGeom, geometry ) from table, (select
> GeomFromText('Point(13.457 3)') as constGeom );

I just tried this out, but unfortunately it doesn't make a difference. I guess 
this boils down to the same thing as what I was doing before. table and the sub 
select get joined and the function is invoked for every row again.
Or I could be doing something in wrong in my code of course. Snippet copied 
below. With a simple query this prints 'Recreate' for each row.

Pepijn

disclaimer: this is just quick and dirty proof of concept code to see if this 
would work or not.

static void ST_Contains(sqlite3_context *context, int nbArgs, sqlite3_value 
**args) {
  GEOS_START(context);
  const GEOSPreparedGeometry *pg1 = sqlite3_get_auxdata(context, 0);
  if (pg1 == NULL) {
printf("Recreate\n");
GEOSGeometry *g1 = GEOS_GET_GEOM( args, 0 );
if (g1 == NULL) {
  sqlite3_result_error(context, error_message(&error), -1);
  return;
}
pg1 = GEOSPrepare_r(GEOS_HANDLE, g1);
if (pg1 == NULL) {
  sqlite3_result_error(context, error_message(&error), -1);
  return;
}
  } else {
printf("Reuse\n");
  }

  GEOSGeometry *g2 = GEOS_GET_GEOM( args, 1 );
  if (g2 == NULL) {
sqlite3_result_error(context, error_message(&error), -1);
return;
  }
  char result = GEOSPreparedContains_r(GEOS_HANDLE, pg1, g2);
  if (result == 2) {
geom_get_geos_error(&error);
sqlite3_result_error(context, error_message(&error), -1);
  } else {
sqlite3_result_int(context, result);
  }
  GEOS_FREE_GEOM( g2 );
  sqlite3_set_auxdata(context, 0, pg1, NULL);
}
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] How to use aux_data effectively?

2013-09-06 Thread Pepijn Van Eeckhoudt

On 06 Sep 2013, at 17:58, Dominique Devienne  wrote:

>> select Distance( constGeom, geometry ) from table, (select
>> GeomFromText('Point(13.457 3)') as constGeom );
> 
> Clever. Thanks for that.

Simple and elegant. Thanks for the idea, I'll give it a try.

> Or make your Distance function implementation do the GeomFromText
> implicitly, with a bit of duck-typing.

The semantics of Distance (or better ST_Distance) are defined in the ISO SQL/MM 
part 3 and OGC Simple Feature/SQL specs. I would prefer to avoid non-specified 
behaviour. 

Pepijn

___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


[sqlite] How to use aux_data effectively?

2013-09-06 Thread Pepijn Van Eeckhoudt
Hi,

In the extension I'm developing (https://bitbucket.org/luciad/libgpkg)
I'm currently adding support for queries like:
select Distance(
  GeomFromText('Point(13.457 3)'),
  geometry
) from table;

GeomFromText takes a string and outputs a geometry blob
Distance takes two geometry blobs and returns a double

In order to speed up the distance function I was wondering if I could
use aux_data to cache the parsed version of the first parameter since
this remains the same for every call. So far I haven't been able to get
this to work though, aux_data is always NULL, no matter what I try.

My hunch is that this is because the first parameter is the result of a
function call which could in theory return different values for each row
even if the input parameters are constant. Is that correct?

Are there any other ways to kind of memoize the GeomFromText function
(or the parameters to distance) besides aux_data?

Thanks,

Pepijn

___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] recommended extension entry point name

2013-08-30 Thread Pepijn Van Eeckhoudt
On vr, 2013-08-30 at 09:09 -0400, Richard Hipp wrote:
> On Thu, Aug 29, 2013 at 3:53 AM, Pepijn Van Eeckhoudt <
> pep...@vaneeckhoudt.net> wrote:
> Recently the extension loader was enhanced (I think for 3.7.17) so that it
> tries the first naming schema first, then if that fails it tries
> sqlite3_extension_init.  So with newer versions SQLite either method
> works.  And the first method is certainly easier on the user.

So for new development sqlite3_X_init is preferred over
sqlite3_extension_init?

Pepijn

___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


[sqlite] recommended extension entry point name

2013-08-30 Thread Pepijn Van Eeckhoudt
http://www.sqlite.org/loadext.html states that:
...omitting the second argument for the load_extension() SQL
interface - and the extension loader logic will attempt to
figure out the entry point on its own. It will first try the
generic extension name "sqlite3_extension_init". If that does
not work, it constructs a entry point using the template
"sqlite3_X_init" where the X is replaced by the lowercase
equivalent of every ASCII character in the filename...

The documentation for sqlite3LoadExtension on the other hand says:
The entry point is zProc.  zProc may be 0 in which case a
default entry point name (sqlite3_extension_init) is used.  Use
of the default name is recommended.

AFAICT the second description matches what the code actually does. The
example extensions in ext/misc all use sqlite3__init.
This avoids name clashes but makes it a little bit more cumbersome for
people to load the extensions.

What is the recommended practice for naming the extension entry point?
Should I use sqlite3_extension_init or sqlite3__init?

Thanks,

Pepijn


___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


[sqlite] recommended extension entry point name

2013-08-29 Thread Pepijn Van Eeckhoudt
http://www.sqlite.org/loadext.html states that:
...omitting the second argument for the load_extension() SQL
interface - and the extension loader logic will attempt to
figure out the entry point on its own. It will first try the
generic extension name "sqlite3_extension_init". If that does
not work, it constructs a entry point using the template
"sqlite3_X_init" where the X is replaced by the lowercase
equivalent of every ASCII character in the filename...

The documentation for sqlite3LoadExtension on the other hand says:
The entry point is zProc.  zProc may be 0 in which case a
default entry point name (sqlite3_extension_init) is used.  Use
of the default name is recommended.

AFAICT the second description matches what the code actually does. The
example extensions in ext/misc all use sqlite3__init.
This avoids name clashes but makes it a little bit more cumbersome for
people to load the extensions.

What is the recommended practice for naming the extension entry point?
Should I use sqlite3_extension_init or sqlite3__init?

Thanks,

Pepijn

___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Android large file support patch

2013-06-01 Thread Pepijn Van Eeckhoudt
Yes, that's exactly what I'm doing. I wasn't sure if I should include those in 
the patch or not since they're machine generated. I can send the generated .S 
files in an additional patch if you like.

Pepijn

Op 1-jun.-2013 om 08:20 heeft Dan Kennedy  het volgende 
geschreven:

> On 05/31/2013 09:28 PM, Pepijn Van Eeckhoudt wrote:
>> Sorry for the non-threaded reply. My subscription was set to digest mode...
>> 
>> Patch is available at
>> https://dl.dropboxusercontent.com/u/105584447/android_largefile.patch
> Thanks for the patch.
> 
> When I compile on Android with it, I get linker errors for ftruncate64(),
> pread64() and pwrite64(). Various posts on the internet suggest that
> one needs to compile the required wrapper functions into the app itself.
> Is this what you are doing?
> 
> Thanks,
> Dan.
> 
> 
> 
> 
>> 
>> Pepijn
>> ___
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> 
> ___
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


[sqlite] Android large file support patch

2013-05-31 Thread Pepijn Van Eeckhoudt
Sorry for the non-threaded reply. My subscription was set to digest mode...

Patch is available at
https://dl.dropboxusercontent.com/u/105584447/android_largefile.patch

Pepijn
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


[sqlite] Android large file support patch

2013-05-31 Thread Pepijn Van Eeckhoudt
Hi all,

I've ran into some issues running sqlite on Android when handling files
larger than 4Gb. Support for this counts on glibc style large file support
where off_t and off64_t are identical. In bionic (Android C runtime) this
is not the case. off_t is always 32-bit; for 64-bit offsets off64_t and the
corresponding 64 bit variants of functions must be used (ftruncate64,
pread64, pwrite64, ...).

The attached patch modifies os_unix.c to count less on off_t being a 64-bit
value. Could someone review this and if approved integrate this upstream?

Sincerely,

Pepijn Van Eeckhoudt
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users