Re: [sqlite] Proximity ranking with FTS

2014-06-16 Thread Josh Wilson
Yeah I had thought about using the byte distance between words but you get
these instances:

[Example A]
|word1|10charword|word2|

[Example B]
|word1|3charword|4charword|3charword|word2|

By using byte distances, both of these score the same, where Example A
should score more highly.

But it would seem I can use the fts3_tokenizer somehow to get the token
positions or that this underlying value is available but just not stored in
an accessible manner.

I implemented OkapiBM25f [1] but was hoping to implement something like the
following proximity ranking [2] as it combines Bag-Of-Words ranking and
proximity ranking. Although that article proposes to precalculate the
distance pairs for all tokens, I'm happy to accept the TimeCost and
calculate on the fly as that SpaceCost won't be worth it.

[1] https://github.com/neozenith/sqlite-okapi-bm25
[2] http://infolab.stanford.edu/~theobald/pub/proximity-spire07.pdf



--
View this message in context: 
http://sqlite.1065341.n5.nabble.com/Proximity-ranking-with-FTS-tp76149p76152.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


Re: [sqlite] Proximity ranking with FTS

2014-06-16 Thread Stadin, Benjamin
This info is not provided by the API (or I missed it). I required this for
a ranking that considers both the distance of N matches to each other, and
the offset of those matches to the beginning of a text. I worked around
this by giving a boost for the byte distance of the words (taking into
account the length in bytes of a phrase, phrases with less byte distance
to each other as provided in the order of their appearance of the match
statement get a slightly higher boost).

This worked Ok as approximation. Depending how your ranking needs to be
calculated, you¹d however maybe better use a custom extra fts info table
and fill this info yourself.


Am 17.06.14 02:58 schrieb "Josh Wilson" unter :

>Ok so I have  found the following guides:
>
>http://www.sqlite.org/privatebranch.html
>
>http://www.sqlite.org/src/doc/trunk/README.md
>
>So as far as creating a private branch 'the proper way' this should be
>sufficient but as far as getting the token positions for FTS MATCH results
>any advice on the topic is appreciated.
>
>
>
>--
>View this message in context:
>http://sqlite.1065341.n5.nabble.com/Proximity-ranking-with-FTS-tp76149p761
>50.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] Proximity ranking with FTS

2014-06-16 Thread Josh Wilson
Ok so I have  found the following guides:

http://www.sqlite.org/privatebranch.html

http://www.sqlite.org/src/doc/trunk/README.md

So as far as creating a private branch 'the proper way' this should be
sufficient but as far as getting the token positions for FTS MATCH results
any advice on the topic is appreciated.



--
View this message in context: 
http://sqlite.1065341.n5.nabble.com/Proximity-ranking-with-FTS-tp76149p76150.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] Proximity ranking with FTS

2014-06-16 Thread Josh Wilson
I know that sqlite FTS provides proximity operators with NEAR and I also know
that the querying tokenizer section says you can get a token position
(http://www.sqlite.org/fts3.html#section_8_2).

Although when using the offsets() function in FTS you get the byte position
as opposed to the token position.

I'd like to implement a proximity ranking function that ideally works like
so:

SELECT 
  docID, 
  rank(matchinfo(documents, 'pcxnal'), offsets(documents)) as score 
FROM documents MATCH 
ORDER BY score DESC
LIMIT 10;

or as extra information within matchinfo().

As far as I can tell this information isn't easily accessible through the
API but shouldn't be too much of a stretch to be accessible.

I'm not averse to the idea of writing the code myself so before diving in,
would anyone familiar have any advice or pointers or is there an "intro to
contributing to sqlite" guide I need to read?



--
View this message in context: 
http://sqlite.1065341.n5.nabble.com/Proximity-ranking-with-FTS-tp76149.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


Re: [sqlite] SQLite legacy licenses

2014-06-16 Thread Scott Robison
On Mon, Jun 16, 2014 at 5:44 PM, Richard Hipp  wrote:

> On Mon, Jun 16, 2014 at 7:01 PM, Scott Robison 
> wrote:
>
> > In a discussion with my manager today, he inquired if SQLite has always
> > been public domain. I said I thought at least all SQLite 3 releases have
> > been, but was not sure about further back. He was also (pleasantly)
> > surprised to learn about the public domain dedication agreement that must
> > be signed before contributions to the official project are accepted.
> >
> > So my questions are:
> >
> > 1. Just how long has SQLite been public domain?
> >
>
> Since 2001-09-16
>
>
> >
> > 2. Not that I intend to use it, but are legacy source code tarballs
> > available? It might be interesting to look at some of the early history
> for
> > fun.
> >
> >
> Fossil allows you to download a tarball of any check-in.
>
>
Thanks. I did not realize the full history going back to SQLite 1 was
available in fossil.

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


Re: [sqlite] Unicode61 Tokenizer

2014-06-16 Thread Simon Slavin

On 16 Jun 2014, at 6:07am, Josh Wilson  wrote:

> Each major release (and occasionally minor) we review third party libraries 
> and what improvements have been released since we last looked. 

Heh.  Unicode 7.0 is out today.  And you thought you were up to date.  Heh.



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


Re: [sqlite] SQLite legacy licenses

2014-06-16 Thread Richard Hipp
On Mon, Jun 16, 2014 at 7:01 PM, Scott Robison 
wrote:

> In a discussion with my manager today, he inquired if SQLite has always
> been public domain. I said I thought at least all SQLite 3 releases have
> been, but was not sure about further back. He was also (pleasantly)
> surprised to learn about the public domain dedication agreement that must
> be signed before contributions to the official project are accepted.
>
> So my questions are:
>
> 1. Just how long has SQLite been public domain?
>

Since 2001-09-16


>
> 2. Not that I intend to use it, but are legacy source code tarballs
> available? It might be interesting to look at some of the early history for
> fun.
>
>
Fossil allows you to download a tarball of any check-in.


-- 
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] SQLite legacy licenses

2014-06-16 Thread Scott Robison
In a discussion with my manager today, he inquired if SQLite has always
been public domain. I said I thought at least all SQLite 3 releases have
been, but was not sure about further back. He was also (pleasantly)
surprised to learn about the public domain dedication agreement that must
be signed before contributions to the official project are accepted.

So my questions are:

1. Just how long has SQLite been public domain?

2. Not that I intend to use it, but are legacy source code tarballs
available? It might be interesting to look at some of the early history for
fun.

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


Re: [sqlite] importing CSV with a random empty line at the end

2014-06-16 Thread Joe Mistachkin

Thanks for the report.  Fixed on trunk, here:

https://www.sqlite.org/src/info/fc918f7d33

--
Joe Mistachkin

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


Re: [sqlite] Linux sqlite3 executable return value - what does it return?

2014-06-16 Thread Simon Slavin

On 16 Jun 2014, at 9:03pm, c...@isbd.net wrote:
> 
> Remember - I said I'm doing an INSERT, either it will insert the
> intended data or there will be an error.

But there are two types of error: the INSERT command may turn out to be invalid 
(accidentally including a quote character or an unexpected semicolon) or the 
INSERT command may be legitimate but the INSERT may violate a constraint.  And 
it may be useful to know what type of error occurred.

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


Re: [sqlite] Linux sqlite3 executable return value - what does it return?

2014-06-16 Thread Stephan Beal
On Mon, Jun 16, 2014 at 10:03 PM,  wrote:

> Remember - I said I'm doing an INSERT, either it will insert the
> intended data or there will be an error.
>

If it fails because of a syntax error then the shell exits with non-0.
Presumably (based on a quick scan of the code) it does the same for any
app-fatal error (e.g. a read-only db, which could cause an insert to fail).
You can test this yourself very easily:


[odroid@host:~/fossil/cwal/s2]$ sqlite3 foo.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table t(a);
sqlite>

[odroid@host:~/fossil/cwal/s2]$ chmod 0400 foo.db

[odroid@host:~/fossil/cwal/s2]$ echo "insert into t values('aaa');" |
sqlite3 foo.db
Error: near line 1: attempt to write a readonly database
[odroid@host:~/fossil/cwal/s2]$ echo $?
1

So yes, it fails. Any specific error code it returns is moot, though,
because POSIX doesn't guaranty any specific range of errors other than OK
and Not OK. Additionally, a large-enough error code could overflow (as in
my first example), leading to unpredictable results.

-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
"Freedom is sloppy. But since tyranny's the only guaranteed byproduct of
those who insist on a perfect world, freedom will have to do." -- Bigby Wolf
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Linux sqlite3 executable return value - what does it return?

2014-06-16 Thread cl
Stephan Beal  wrote:
> On Mon, Jun 16, 2014 at 5:37 PM,  wrote:
> 
> > Does the return value contain anything that will tell me if the SQL
> > worked or not?
> >
> 
> ...
>   set_table_name(, 0);
>   if( data.db ){
> sqlite3_close(data.db);
>   }
>   sqlite3_free(data.zFreeOnClose);
>   return rc;
> }
> 
> it returns the result code of the last run command. That said, the only
> portable result codes are "success" (0) and "not success" (not 0, but which
> "not 0" is not specified). In my experience, most Linux shells support
> result values -127 to 128, but that's just a common convention, not a rule.
> Bash seems to support 0-255 on this machine:
> 
> [odroid@host:~/fossil/fossil]$ echo 'exit 129' > foo.sh
> [odroid@host:~/fossil/fossil]$ sh foo.sh
> [odroid@host:~/fossil/fossil]$ echo $?
> 129
> 
> [odroid@host:~/fossil/fossil]$ echo 'exit 329' > foo.sh
> [odroid@host:~/fossil/fossil]$ sh foo.sh
> [odroid@host:~/fossil/fossil]$ echo $?
> 73
> 
> 
> 
> 
> > If it doesn't then what's the easiest way for a script to tell if some
> > SQL executed by sqlite3 worked or not?  I just want to do a single row
> > insert into a table and, if it succeeds, the source of the inserted
> > data can be removed.
> 
> 
> Failing to SELECT or  DELETE anything is not an error, so no, it won't fail
> in that case. It will fail if your syntax is wrong:
> 
Remember - I said I'm doing an INSERT, either it will insert the
intended data or there will be an error.


> [odroid@host:~/fossil/fossil]$ echo "drop foo;" | sqlite3
> Error: near line 1: near "foo": syntax error
> [odroid@host:~/fossil/fossil]$ echo $?
> 1
> 
> 
> 
> -- 
> - stephan beal
> http://wanderinghorse.net/home/stephan/
> http://gplus.to/sgbeal
> "Freedom is sloppy. But since tyranny's the only guaranteed byproduct of
> those who insist on a perfect world, freedom will have to do." -- Bigby Wolf

-- 
Chris Green
·

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


[sqlite] Final preparations for the release of System.Data.SQLite v1.0.93.0 have begun...

2014-06-16 Thread Joe Mistachkin

If you have any issues with the current code, please report them via this
mailing
list (and/or by creating a ticket on "https://system.data.sqlite.org/;)
prior to
this coming Friday, June 20th.

Thanks.

--
Joe Mistachkin

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


Re: [sqlite] Linux sqlite3 executable return value - what does it return?

2014-06-16 Thread Stephan Beal
On Mon, Jun 16, 2014 at 5:37 PM,  wrote:

> Does the return value contain anything that will tell me if the SQL
> worked or not?
>

...
  set_table_name(, 0);
  if( data.db ){
sqlite3_close(data.db);
  }
  sqlite3_free(data.zFreeOnClose);
  return rc;
}

it returns the result code of the last run command. That said, the only
portable result codes are "success" (0) and "not success" (not 0, but which
"not 0" is not specified). In my experience, most Linux shells support
result values -127 to 128, but that's just a common convention, not a rule.
Bash seems to support 0-255 on this machine:

[odroid@host:~/fossil/fossil]$ echo 'exit 129' > foo.sh
[odroid@host:~/fossil/fossil]$ sh foo.sh
[odroid@host:~/fossil/fossil]$ echo $?
129

[odroid@host:~/fossil/fossil]$ echo 'exit 329' > foo.sh
[odroid@host:~/fossil/fossil]$ sh foo.sh
[odroid@host:~/fossil/fossil]$ echo $?
73




> If it doesn't then what's the easiest way for a script to tell if some
> SQL executed by sqlite3 worked or not?  I just want to do a single row
> insert into a table and, if it succeeds, the source of the inserted
> data can be removed.


Failing to SELECT or  DELETE anything is not an error, so no, it won't fail
in that case. It will fail if your syntax is wrong:

[odroid@host:~/fossil/fossil]$ echo "drop foo;" | sqlite3
Error: near line 1: near "foo": syntax error
[odroid@host:~/fossil/fossil]$ echo $?
1



-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
"Freedom is sloppy. But since tyranny's the only guaranteed byproduct of
those who insist on a perfect world, freedom will have to do." -- Bigby Wolf
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


[sqlite] SQLITE_PROTOCOL errors

2014-06-16 Thread Török Edwin
On 06/06/2014 11:37 AM, Török Edwin wrote:
> On 05/27/2014 01:49 PM, Török Edwin wrote:
>> On 05/27/2014 01:40 PM, Richard Hipp wrote:
>>> If you are getting PROTOCOL errors, then the thing to do is to describe the
>>> circumstances under which the errors occur so that we can begin to try to
>>> understand what is going wrong.
>>
>> The circumstances are very similar to those described in this commit (in a 
>> different application though):
>> https://github.com/NixOS/nix/commit/d05bf01dbf8e36d545df9689bdec0b72
>>
>> I'll create a testcase that illustrates my problem and get back to you.
> 
> Hi,
> 
> I made a little progress on the testcase: now I have a machine where 
> SQLITE_PROTOCOL triggers at least once if I import large amounts of data 
> overnight.
> So I can test patches, but unfortunately I wasn't able to create a small 
> self-contained testcase yet. I added some debugging code to sqlite3.c to know 
> which WAL_RETRYs trigger (it collects them all and prints them when cnt>100):
> http://gitweb.skylable.com/gitweb/?p=sx.git;a=blob_plain;f=3rdparty/libsqlite3/sqlite3.c;hb=HEAD
> 
> And this is what I got in my logs:
> 
> walTryBeginRead: WAL_RETRY exceeded
> walTryBeginRead WAL_RETRY locs: 49000 49000 49000 49000 49000 49000 49000 
> 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 
> 49
> 000 49000 49000 49000 49000 49000 49000 49000 49000
> walTryBeginRead WAL_RETRY locs: 49000 49000 49000 49000 49000 49000 49000 
> 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 
> 49
> 000 49000 49000 49000 49000 49000 49000 49000 49000
> walTryBeginRead WAL_RETRY locs: 49000 49000 49000 49000 49000 49000 49000 
> 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 49000 
> 49
> 000 49000 49000 49000 49000 49000 49000 49000 49000
> walTryBeginRead WAL_RETRY locs: 49000 49000 49000 49000 49000 49000 49000 
> 49000 49000 49000 49000 49000 49000
> statement aborts at 33: [INSERT INTO topush (block, size, node) VALUES (:b, 
> :s, :n)] locking protocol
> 
> So it looks like it triggers here all the time:
> rc = walLockShared(pWal, WAL_READ_LOCK(mxI));
> if( rc ){
>   pWal->retry_locs[cnt] = __LINE__;// added for debugging
>   return rc==SQLITE_BUSY ? WAL_RETRY : rc;
> }
> 

Do you need more information to fix the PROTOCOL errors?

Is it safe to retry the query if I get a PROTOCOL error? (only SQlite3 itself 
is using the DB/WAL files, and all SQlite3 versions match)

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


Re: [sqlite] Creating a 'SQL text' Backup of a SQlite database with the mere sqlite.dll tool (and a Python 3)

2014-06-16 Thread big stone
Hi Roger,

Why is APSW not findable on the Pypi infrastructure ? It should be the
place where a newcomer would look for it.

I just published my work as "sqlite_bro" (pip install sqlite_bro), and it
doesn't seem to be too complex.
(just one full day lost to figure it out, in my case)


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


[sqlite] Linux sqlite3 executable return value - what does it return?

2014-06-16 Thread cl
If I execute some SQL by putting it after 'sqlite3' on the command
line as follows:-

sqlite3 mydata.db "SELECT * from mytable"

Does the return value contain anything that will tell me if the SQL
worked or not?

If it doesn't then what's the easiest way for a script to tell if some
SQL executed by sqlite3 worked or not?  I just want to do a single row
insert into a table and, if it succeeds, the source of the inserted
data can be removed.

-- 
Chris Green
·

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


Re: [sqlite] Understanding Sqlite

2014-06-16 Thread Richard Hipp
On Mon, Jun 16, 2014 at 9:57 AM, jose isaias cabrera 
wrote:

>
> Designing the DBs and tables would be the essencial part of the whole
> project.  After that, the rest is easy.
>


"Representation is the essence of computer programming"  (Fred Brooks, _The
Mythical Man-Month_, 1972)

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


Re: [sqlite] Understanding Sqlite

2014-06-16 Thread jose isaias cabrera


"dd" wrote...



Dear Author/All,

   There are many things needs to understand from sqlite apart from RDBMS
concepts.  For example, pragmas, database connection in different
scenarios, IPC, virtual tables..etc.

Do sqlite team has any plan to start online university for training
and issuing certificates? If already there, please let me know.

OR

What is/are the best practice(s) to become master in sqlite in short
period of time for new developers (i mean, new to sqlite not for
programming)?

Regards,
dd


Speaking from experience, dd, writing the code is the easy part.  What you 
must know **very well** is how does SQL work.  I made the mistake of 
thinking that SQL was just another programming language, and ended up having 
to discombobulate and recreate tables and still need to do more and more 
design because I **thought** I had a great design.  Designing the DBs and 
tables would be the essencial part of the whole project.  After that, the 
rest is easy.  My own experience, of course.  So, learn SQL and how it 
should be used would be the first task.  Otherwise, it will be very painful. 
Ihth.


josé 


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


Re: [sqlite] slowish R*Tree performance

2014-06-16 Thread Carlos Ferreira
Hi,

I am just a user of binary Sqlite. So, I do not know how much of custom
Sqlite tricks can be made with a copy of sqlite source code.

However, and if I understood well the problem is like this:

1 - There a data type named IPV6 Address. 
2 - there is a table where this data type must be in. ( can be a set of
fields, one blob, one string ...)

You want to:

Given a certain IPV6, find in the database the existent IPV6 record with the
longest equal prefix to the given IPV6 value.


Again, if the problem is as I understood, the simplest solution is ( again I
am discussing it as if it could be implemented or available in SQLite..I do
not know..)

1  - encode the IPV6 field as a unique blob
2 - Implement an index to this field so that this particular field can be
ordered
3 - Make sure that the ordering compare function is a binary incremental
compare counting from the left ( in terms of the data...not sure how you
will represent it in the field )
4 - Each time you want to find the closed and longest prefix, you just need
to simulate an insert command.
Try to insert the given value. Instead of inserting, just return the ordered
position where it would be inserted. Check what is the record actually
standing in that ordered position...That would be your result!!


This can also be done outside Sqlite...but not sure if my understanding of
the problem is correct.

Regards,

Carlos

-Original Message-
From: sqlite-users-boun...@sqlite.org
[mailto:sqlite-users-boun...@sqlite.org] On Behalf Of Eric Rubin-Smith
Sent: domingo, 15 de Junho de 2014 05:25
To: General Discussion of SQLite Database
Subject: [sqlite] slowish R*Tree performance

I am exploring a mechanism for finding the longest covering IPv6 prefix for
a given IPv6 address by leveraging SQLite 3.8.5's R*Tree feature.  I'm
getting pretty bad performance and would like to know if I'm doing something
obviously wrong.

A 1-dimensional R*Tree of integers of width 128 bits would be ideal.  But
SQLite R*Trees are only 32 bits wide per dimension.

So I am modeling IPv6 prefixes as a pair of coordinates in 5-dimensional
integer space:

CREATE VIRTUAL TABLE ipIndex USING rtree_i32(
id, -- Integer primary key
minD1, maxD1,
minD2, maxD2,
minD3, maxD3,
minD4, maxD4,
minD5, maxD5
);

CREATE TABLE routeTarget(
id INTEGER PRIMARY KEY,
prefix TEXT NOT NULL,
target TEXT NOT NULL
);

To do this, I have come up with a mapping from an IPv6 prefix to a pair of
coordinates that has the geometric property that we would like: bounding box
1 contains bounding box 2 if and only if prefix 1 contains prefix 2.
So if a search for bounding boxes containing a particular address's
coordinate returns rows, then each of those rows corresponds to a covering
prefix -- from there, we must simply find the smallest bounding box to find
the longest-matching prefix.

Functionally, this appears to work like a charm.

Performance, unfortunately, leaves much to be desired.  I have seeded this
database with 100k randomly-generated prefixes, and am only able to push
through 250 searches per second.  I am hoping to increase the database size
to ~50m records and would like to hit 50k searches per second.

This is not an unreasonable request based on my hardware, and SQLite has
easily hit this throughput (at least, this order of magnitude in
throughput) in other applications.  For example, the analogue in IPv4 merely
requires a 1-dimensional R*Tree, and with that I was able to hit 10kTPS
throughput without breaking much of a sweat.

Here is my search query plan:

sqlite> explain query plan SELECT prefix, target FROM routeTarget WHERE 
sqlite> id
= (
   ...>SELECT id FROM ipIndex
   ...> WHERE minD1 <= 1220818432 and 1220818432 <= maxD1
   ...>   AND minD2 <= 2120561472 and 2120561472 <= maxD2
   ...>   AND minD3 <= 1685398080 and 1685398080 <= maxD3
   ...>   AND minD4 <= 1685755328 and 1685755328 <= maxD4
   ...>   AND minD5 <= 538331072 and 538331072 <= maxD5
   ...> ORDER BY ((maxD5-minD5)*(maxD4-minD4)*(maxD3-minD3)*
   ...>   (maxD2-minD2)*(maxD1-minD1)) ASC
   ...>LIMIT 1);
0|0|0|SEARCH TABLE routeTarget USING INTEGER PRIMARY KEY (rowid=?) 
0|0|0|EXECUTE SCALAR SUBQUERY 1
1|0|0|SCAN TABLE ipIndex VIRTUAL TABLE INDEX 2:B0D1B2D3B4D5B6D7B8D9 USE 
1|0|0|TEMP B-TREE FOR ORDER BY

I created a profiled SQLite build, and here are the top offenders for a run
on 1000 searches:

Each sample counts as 0.01 seconds.
  %   cumulative   self  self total
 time   seconds   secondscalls  ms/call  ms/call  name
 40.00  1.58 1.58   300179 0.01 0.01  sqlite3VdbeExec
  6.33  1.83 0.25 36628944 0.00 0.00  sqlite3VdbeMemMove
  6.08  2.07 0.24 18314472 0.00 0.00  rtreeColumn
  4.05  2.23 0.16  1665952 0.00 0.00  rtreeStepToLeaf
  2.41  2.33 0.10 55549722 0.00 0.00  sqlite3VdbeMemRelease
  2.28  2.42 0.09  1965104 0.00  

Re: [sqlite] Performance regression with multiple lower bound tests

2014-06-16 Thread Simon Slavin

On 16 Jun 2014, at 1:10pm, Richard Hipp  wrote:
> 
> That's not quite the same thing.  "x BETWEEN ?1 AND ?2" means "x>=?1 AND
> x<=?2".
> 
> Now, if x is the INTEGER PRIMARY KEY (and thus is guaranteed to be an
> integer) you could say:
> 
>WHERE rowid BETWEEN max(?1,?3+1) AND ?2

I stand corrected.  Nice trick.

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


Re: [sqlite] System.Data.SQLite.dll failing on WIndows 7

2014-06-16 Thread Akintoye Olorode (BLOOMBERG/ 731 LEX -)
What .NET framework is Appgio Sync built with ? Issue is likely that you have 
SQLIte built against .NET 4.5 whereas you AppGio Sync is built with .NET 4.0 
which cannot load a .NET 4.5 assembly. I suggest you install one of the .NET 
4.0 versions of SQLite.

- Akintoye

From: jwcalv...@rogers.com At: Jun 16 2014 03:35:58
To: sqlite-users@sqlite.org
Subject: Re:[sqlite] System.Data.SQLite.dll failing on WIndows 7

Everyone,

 

I am trying to solve why a third party app called Appigo Sync is failing on
my Windows 7 SP1 64bit.

 

To troubleshoot this, I downloaded the following file:
sqlite-netFx451-setup-bundle-x86-2013-1.0.92.0.exe and installed it.

 

When I run text.exe from its bin folder, I get the following error message:

 


+

 

See the end of this message for details on invoking 

just-in-time (JIT) debugging instead of this dialog box.

 

** Exception Text **

System.BadImageFormatException: Could not load file or assembly
'System.Data.SQLite, Version=1.0.92.0, Culture=neutral,
PublicKeyToken=db937bc2d44ff139' or one of its dependencies. An attempt was
made to load a program with an incorrect format.

File name: 'System.Data.SQLite, Version=1.0.92.0, Culture=neutral,
PublicKeyToken=db937bc2d44ff139'

   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean
throwOnError, Boolean ignoreCase, Boolean reflectionOnly,
StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean
loadTypeFromPartialName, ObjectHandleOnStack type)

   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean
throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark&
stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)

   at System.Type.GetType(String typeName)

   at System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow)

   at test.TestCasesDialog.runButton_Click(Object sender, EventArgs e) in
c:\dev\sqlite\dotnet\test\TestCasesDialog.cs:line 112

   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)

   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
button, Int32 clicks)

   at System.Windows.Forms.Control.WndProc(Message& m)

   at System.Windows.Forms.ButtonBase.WndProc(Message& m)

   at System.Windows.Forms.Button.WndProc(Message& m)

   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg,
IntPtr wparam, IntPtr lparam)

 

Assembly manager loaded from:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll

Running under executable  C:\Program Files
(x86)\System.Data.SQLite\2013\bin\test.exe

--- A detailed error log follows. 

 

=== Pre-bind state information ===

LOG: DisplayName = System.Data.SQLite, Version=1.0.92.0, Culture=neutral,
PublicKeyToken=db937bc2d44ff139

(Fully-specified)

LOG: Appbase = file:///C:/Program Files (x86)/System.Data.SQLite/2013/bin/

LOG: Initial PrivatePath = NULL

Calling assembly : System.Data, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089.

===

LOG: This bind starts in default load context.

LOG: Using application configuration file: C:\Program Files
(x86)\System.Data.SQLite\2013\bin\test.exe.Config

LOG: Using host configuration file: 

LOG: Using machine configuration file from
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.

LOG: Post-policy reference: System.Data.SQLite, Version=1.0.92.0,
Culture=neutral, PublicKeyToken=db937bc2d44ff139

LOG: Attempting download of new URL file:///C:/Program Files
(x86)/System.Data.SQLite/2013/bin/System.Data.SQLite.DLL.

ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing
terminated.

 

 

 

** Loaded Assemblies **

mscorlib

Assembly Version: 4.0.0.0

Win32 Version: 4.0.30319.18444 built by: FX451RTMGDR

CodeBase:
file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll



test

Assembly Version: 1.0.92.0

Win32 Version: 1.0.92.0

CodeBase:
file:///C:/Program%20Files%20(x86)/System.Data.SQLite/2013/bin/test.exe



System

Assembly Version: 4.0.0.0

Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL

CodeBase:
file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a
5c561934e089/System.dll



System.Windows.Forms

Assembly Version: 4.0.0.0

Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL

CodeBase:
file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0
_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll



System.Drawing

Assembly Version: 4.0.0.0

Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL

CodeBase:
file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0
.0__b03f5f7f11d50a3a/System.Drawing.dll


Re: [sqlite] Performance regression with multiple lower bound tests

2014-06-16 Thread Richard Hipp
On Mon, Jun 16, 2014 at 7:46 AM, Simon Slavin  wrote:

>
> > On 16 Jun 2014, at 12:36pm, Richard Hipp  wrote:
> >
> > Instead of
> >
> > ... WHERE x BETWEEN ?1 AND ?2 AND x>?3
> >
> > Consider using
> >
> > ... WHERE x BETWEEN max(?1,?3) AND ?2 AND x>?3
>
> I suspect Dr Hipp means
>
> > ... WHERE x BETWEEN max(?1,?3) AND ?2
>

That's not quite the same thing.  "x BETWEEN ?1 AND ?2" means "x>=?1 AND
x<=?2".

Now, if x is the INTEGER PRIMARY KEY (and thus is guaranteed to be an
integer) you could say:

WHERE rowid BETWEEN max(?1,?3+1) AND ?2



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



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


Re: [sqlite] Performance regression with multiple lower bound tests

2014-06-16 Thread David Empson

On 16/06/2014, at 11:36 pm, Richard Hipp  wrote:

> On Mon, Jun 16, 2014 at 5:07 AM, David Empson  wrote:
> 
>> It appears SQLite 3.8.1 removed an optimisation where earlier versions of
>> the query planner were checking for two or more "lower bound" comparisons
>> against the key for an index, and combining them so the greater of the two
>> values was used as a lower bound.
>> 
>> 
> There never has been any such optimization in SQLite.  If it picked the
> better lower bound in 3.8.0, then that was purely by luck.

OK thanks, that makes sense.

> I suggest you rewrite your query.  Instead of
> 
>... WHERE x BETWEEN ?1 AND ?2 AND x>?3
> 
> Consider using
> 
>... WHERE x BETWEEN max(?1,?3) AND ?2 AND x>?3

I assume that was supposed to be WHERE x BETWEEN max(?1,?3) AND ?2.

I agree, that seems a reasonable solution. Something like that was on 
tomorrow's todo list.

> Also, when running EXPLAIN, please first give the command-line shell the
> ".explain" command in order to set output formatting up to show the program
> listing in a more readable format.

Noted, thanks for the tip.


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


Re: [sqlite] Performance regression with multiple lower bound tests

2014-06-16 Thread Simon Slavin

> On 16 Jun 2014, at 12:36pm, Richard Hipp  wrote:
> 
> Instead of
> 
> ... WHERE x BETWEEN ?1 AND ?2 AND x>?3
> 
> Consider using
> 
> ... WHERE x BETWEEN max(?1,?3) AND ?2 AND x>?3

I suspect Dr Hipp means

> ... WHERE x BETWEEN max(?1,?3) AND ?2

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


Re: [sqlite] slowish R*Tree performance

2014-06-16 Thread Simon Slavin

On 16 Jun 2014, at 10:47am, Carlos Ferreira  wrote:

> What is the original problem that is causing slow performance in the SQlite
> R-Tree implementation?

Read earlier posts to this thread.

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


Re: [sqlite] Performance regression with multiple lower bound tests

2014-06-16 Thread Richard Hipp
On Mon, Jun 16, 2014 at 5:07 AM, David Empson  wrote:

> It appears SQLite 3.8.1 removed an optimisation where earlier versions of
> the query planner were checking for two or more "lower bound" comparisons
> against the key for an index, and combining them so the greater of the two
> values was used as a lower bound.
>
>
There never has been any such optimization in SQLite.  If it picked the
better lower bound in 3.8.0, then that was purely by luck.

I suggest you rewrite your query.  Instead of

 ... WHERE x BETWEEN ?1 AND ?2 AND x>?3

Consider using

 ... WHERE x BETWEEN max(?1,?3) AND ?2 AND x>?3

Also, when running EXPLAIN, please first give the command-line shell the
".explain" command in order to set output formatting up to show the program
listing in a more readable format.


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


Re: [sqlite] slowish R*Tree performance

2014-06-16 Thread Carlos Ferreira
Regarding the R.Tree performance problem,

What is the original problem that is causing slow performance in the SQlite
R-Tree implementation?

Thanks

Carlos 

-Original Message-
From: sqlite-users-boun...@sqlite.org
[mailto:sqlite-users-boun...@sqlite.org] On Behalf Of Simon Slavin
Sent: domingo, 15 de Junho de 2014 23:27
To: General Discussion of SQLite Database
Subject: Re: [sqlite] slowish R*Tree performance


> On 15 Jun 2014, at 5:21pm, Eric Rubin-Smith  wrote:
> 
> still not good enough for my use case
> (unfortunately).  Any further optimization tips are highly welcome.

Strongly suspect that although R*Trees produce an elegant solution to your
problem, the fact that they're a general case tool will make them too slow
to use for something like this.

I propose an alternative solution, though I have not tried it and do not
have time to try it (sorry).

1) A function which turns a numeric IP address or a block into some standard
easy-to-process representation in string form.  Possibly a pair of strings
with the first string being an address the second being something indicating
the extent of the block, perhaps something like
'2001:0db8:8500:::::v::ff00:::::
'.  You could make it shorter by leaving out the colons but my
experience is that although this leads to less data stored on disk it
doesn't speed up processing by much.  But if you have a great deal of data
you might want to do it anyway.

2) A comparator function (maybe a SQLite function, maybe not) which takes
two such addresses or blocks and returns a value indicating whether they're
identical, whether block A contains block or address B, or neither.

The closest I got to the above was when I needed a program which intensively
searched and sorted individual IPv4 addresses.  I got best results by
defining a SQLite function which converted IP addresses of all formats into
'standard format' where each byte was two hex digits.  All values stored in
the database were stored in my 'standard' format.  This allowed easy
collation using standard text sorting.  Everything else turned out faster to
implement in my own programming language than it was to build as SQLite
functions.

Simon.
___
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] Performance regression with multiple lower bound tests

2014-06-16 Thread David Empson
I've recently noticed a major drop in performance in one part of our main 
application at work, and have managed to track it down to a change in recent 
versions of SQLite.

We are storing a log in a simple SQLite table, and have a viewing screen which 
allows the user to browse through the log.

CREATE TABLE log (rowid INTEGER PRIMARY KEY NOT NULL, type INTEGER, line TEXT);

The rowid incorporates the timestamp, allowing us to quickly locate particular 
times by calculating the rowid from the desired time.

I noticed the log view was getting progressively slower the further I got into 
the table. By the time it got to row 100K+ it was taking over 100 ms to move up 
or down rows. In older versions the same operation was nearly instant. With 
some instrumentation I confirmed that SQLite was taking a long time to return 
the first row in each query, and that this had started some time between SQLite 
3.7.17 and SQLite 3.8.4.3. I also tried 3.8.5, which was the same as 3.8.4.3.

This is the general form of the query we use (including our own custom 
functions, which are defined as SQLITE_DETERMINISTIC when using SQLite 3.8.3 or 
later):

SELECT rowid, type, time_from_rowid(rowid) || line FROM log WHERE rowid BETWEEN 
calc_rowid(?1) and calc_rowid(?2) AND rowid > ?3 ORDER BY rowid LIMIT ?4;

The parameters are ?1 = minimum rowid for the entire view, ?2 = maximum rowid 
for the entire view, ?3 = rowid immediately preceding the first line to 
display, ?4 = number of rows to fetch at once (typically 100). I confirmed our 
functions were not part of the problem by substituting externally calculated 
values, and reduced the SELECT to only return rowid. The performance was 
unchanged.

I examined the statement using EXPLAIN QUERY PLAN and EXPLAIN, checked it with 
several SQLite versions, and have worked out what happened.

For SQLite 3.8.0.2 and earlier, the integer primary key index is used to start 
at whichever is the greater of calc_rowid(?1) and ?3, then the table is scanned 
returning rows until the row limit or calc_rowid(?2) is reached.

For SQLite 3.8.1 and later, the integer primary key index is used to start at 
calc_rowid(?1), then the table is scanned ignoring all rows until ?3 is reached 
(taking a significant amount of time when there are hundreds of thousands of 
rows), then rows are returned until the row limit or calc_rowid(?2) is reached.

It appears SQLite 3.8.1 removed an optimisation where earlier versions of the 
query planner were checking for two or more "lower bound" comparisons against 
the key for an index, and combining them so the greater of the two values was 
used as a lower bound.

I was able to repeat this with an even simpler table using the command line 
tool, and two greater-than comparisons (so it isn't specific to BETWEEN 
combined with greater-than). I've included the output to EXPLAIN QUERY PLAN and 
EXPLAIN to assist, and have inserted blank lines as a reading aid.

slow.db3 (about 8.5 MB, containing just 1048576 sequential rowids).
https://www.dropbox.com/l/4xTnsxfRithPnHOAZQwtSt?

% sqlite3 slow.db3
SQLite version 3.8.4.3 2014-04-03 16:53:12
Enter ".help" for usage hints.

sqlite> .schema
CREATE TABLE log(rowid integer primary key not null);

sqlite> explain query plan select rowid from log where rowid > 0 and rowid < 
100 order by rowid limit 10;
0|0|0|SEARCH TABLE log USING INTEGER PRIMARY KEY (rowid>? AND rowid explain select rowid from log where rowid > 0 and rowid < 100 order 
by rowid limit 10;
0|Init|0|14|0||00|
1|Noop|0|0|0||00|
2|Integer|10|1|0||00|
3|OpenRead|0|2|0|0|00|
4|SeekGT|0|12|2||00|
5|Integer|100|3|0||00|
6|Rowid|0|4|0||00|
7|Ge|3|12|4||6b|
8|Copy|4|5|0||00|
9|ResultRow|5|1|0||00|
10|IfZero|1|12|-1||00|
11|Next|0|6|0||00|
12|Close|0|0|0||00|
13|Halt|0|0|0||00|
14|Transaction|0|0|1|0|01|
15|TableLock|0|2|0|log|00|
16|Integer|0|2|0||00|
17|Goto|0|1|0||00|

sqlite> explain query plan select rowid from log where rowid > 0 and rowid > 
80 and rowid < 100 order by rowid limit 10;
0|0|0|SEARCH TABLE log USING INTEGER PRIMARY KEY (rowid>? AND rowid explain select rowid from log where rowid > 0 and rowid > 80 and 
rowid < 100 order by rowid limit 10;
0|Init|0|15|0||00|
1|Noop|0|0|0||00|
2|Integer|10|1|0||00|
3|OpenRead|0|2|0|0|00|
4|SeekGT|0|13|2||00|
5|Integer|100|3|0||00|
6|Rowid|0|4|0||00|
7|Ge|3|13|4||6b|
8|Le|6|12|4||6c|
9|Copy|4|7|0||00|
10|ResultRow|7|1|0||00|
11|IfZero|1|13|-1||00|
12|Next|0|6|0||00|
13|Close|0|0|0||00|
14|Halt|0|0|0||00|
15|Transaction|0|0|1|0|01|
16|TableLock|0|2|0|log|00|
17|Integer|0|2|0||00|
18|Integer|80|6|0||00|
19|Goto|0|1|0||00|

sqlite> .timer on

sqlite> select rowid from log where rowid > 80 and rowid < 100 order by 
rowid limit 10;
81
82
83
84
85
86
87
88
89
800010
Run Time: real 0.004 user 0.00 sys 0.00

sqlite> select rowid from log where rowid > 0 and rowid > 80 and rowid < 
100 order by rowid limit 10;
81
82
83

Re: [sqlite] [ANNOUNCEMENT] Updated: fossil 20140612172556-1 -- DVCS with built-in wiki, http server and issue tracker

2014-06-16 Thread Jan Nijtmans
2014-06-13 16:09 GMT+02:00 Jari Aalto:
>> CYGWIN INSTALLATION INFORMATION
> ===

> If you have questions or comments, please send them to the Cygwin
> mailing list at .

I tried the new fossil binary for Cygwin, and got the following:
$ fossil sqlite
cygwin warning:
  MS-DOS style path detected: C:/fossil/fossil.fossil
  Preferred POSIX equivalent is: /cygdrive/c/fossil/fossil.fossil
  CYGWIN environment variable option "nodosfilewarning" turns off
this warning.
  Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
SQLite version 3.8.5 2014-06-04 14:06:34
Enter ".help" for usage hints.
sqlite> .databases
seq  name file
---  ---
--
0main C:\fossil\fossil.fossil
sqlite> .exit


Although this is harmless, people will ask why there are
windows path names visible anyway. This problem is
really in SQLite, and the problem is already reported to the
SQLite developers:

Since SQLite's Cygwin support is at best-effort base, which
appears to be essentially almost 0, I have no idea when
this problem will addressed in the official SQLite sources.
It is already addressed in the Cygwin SQLite 3.8.5 package.

Therefore, I suggest to configure fossil with the option
"--disable-internal-sqlite". This has the side-effect that
the fossil binary will be smaller, since SQLite is no
longer linked statically. And some more - less
important - corner-cases will be fixed as well.
And it has the advantage that whenever a new
bug in SQLite is found (or SQLite 3.8.6 is released)
fossil can take advantage of it without being rebuilt.

While on it, the "--json" configuration option would
be a good idea too.

Many thanks, Jari, for your support!

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


[sqlite] System.Data.SQLite.dll failing on WIndows 7

2014-06-16 Thread Calvert, Jim
Everyone,

 

I am trying to solve why a third party app called Appigo Sync is failing on
my Windows 7 SP1 64bit.

 

To troubleshoot this, I downloaded the following file:
sqlite-netFx451-setup-bundle-x86-2013-1.0.92.0.exe and installed it.

 

When I run text.exe from its bin folder, I get the following error message:

 


+

 

See the end of this message for details on invoking 

just-in-time (JIT) debugging instead of this dialog box.

 

** Exception Text **

System.BadImageFormatException: Could not load file or assembly
'System.Data.SQLite, Version=1.0.92.0, Culture=neutral,
PublicKeyToken=db937bc2d44ff139' or one of its dependencies. An attempt was
made to load a program with an incorrect format.

File name: 'System.Data.SQLite, Version=1.0.92.0, Culture=neutral,
PublicKeyToken=db937bc2d44ff139'

   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean
throwOnError, Boolean ignoreCase, Boolean reflectionOnly,
StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean
loadTypeFromPartialName, ObjectHandleOnStack type)

   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean
throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark&
stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)

   at System.Type.GetType(String typeName)

   at System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow)

   at test.TestCasesDialog.runButton_Click(Object sender, EventArgs e) in
c:\dev\sqlite\dotnet\test\TestCasesDialog.cs:line 112

   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)

   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
button, Int32 clicks)

   at System.Windows.Forms.Control.WndProc(Message& m)

   at System.Windows.Forms.ButtonBase.WndProc(Message& m)

   at System.Windows.Forms.Button.WndProc(Message& m)

   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg,
IntPtr wparam, IntPtr lparam)

 

Assembly manager loaded from:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll

Running under executable  C:\Program Files
(x86)\System.Data.SQLite\2013\bin\test.exe

--- A detailed error log follows. 

 

=== Pre-bind state information ===

LOG: DisplayName = System.Data.SQLite, Version=1.0.92.0, Culture=neutral,
PublicKeyToken=db937bc2d44ff139

(Fully-specified)

LOG: Appbase = file:///C:/Program Files (x86)/System.Data.SQLite/2013/bin/

LOG: Initial PrivatePath = NULL

Calling assembly : System.Data, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089.

===

LOG: This bind starts in default load context.

LOG: Using application configuration file: C:\Program Files
(x86)\System.Data.SQLite\2013\bin\test.exe.Config

LOG: Using host configuration file: 

LOG: Using machine configuration file from
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.

LOG: Post-policy reference: System.Data.SQLite, Version=1.0.92.0,
Culture=neutral, PublicKeyToken=db937bc2d44ff139

LOG: Attempting download of new URL file:///C:/Program Files
(x86)/System.Data.SQLite/2013/bin/System.Data.SQLite.DLL.

ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing
terminated.

 

 

 

** Loaded Assemblies **

mscorlib

Assembly Version: 4.0.0.0

Win32 Version: 4.0.30319.18444 built by: FX451RTMGDR

CodeBase:
file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll



test

Assembly Version: 1.0.92.0

Win32 Version: 1.0.92.0

CodeBase:
file:///C:/Program%20Files%20(x86)/System.Data.SQLite/2013/bin/test.exe



System

Assembly Version: 4.0.0.0

Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL

CodeBase:
file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a
5c561934e089/System.dll



System.Windows.Forms

Assembly Version: 4.0.0.0

Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL

CodeBase:
file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0
_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll



System.Drawing

Assembly Version: 4.0.0.0

Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL

CodeBase:
file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0
.0__b03f5f7f11d50a3a/System.Drawing.dll



System.Data

Assembly Version: 4.0.0.0

Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL

CodeBase:
file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b
77a5c561934e089/System.Data.dll



System.Core

Assembly Version: 4.0.0.0

Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL

CodeBase: