I just upgraded to version 2.2.1, and now when Eclipse starts up, and the Hoogle database is being rebuilt, after awhile I get the error "'Rebuilding local database' has encountered a problem. Error loading local databse". The detailed error is "Unexpected end of ZLIB input stream". Yet when I go to a command line and run "Hoogle data" it appears that a good database is built in the "..\AppData\Roaming\cabal\hoogle-4.2.8\databases" subdirectory, and hoogle works from the command line. I'm on Windows 7, Eclipse Indigo Classic Win32, Haskell Platform 2011.4.0.0, and ghc version 7.0.4. Hoogle was working from within eclipse prior to this upgrade.
Any ideas?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
If you go to the console view in Eclipse, and choose the console that displays the scion-browser output, you should see the command that is used to build and load the local database.
In the preferences, you can turn on the logging of error messages for scion-browser (the "debug mode"), maybe if you check that box and restart Eclipse you'll see a meaningful error message.
Otherwise, you can copy the JSON command line you see in the console, and run scion-browser yourself outside of EclipseFP. Launch scion-browser, and paste the full JSON command in the console. Maybe then you'll see the real error.
Scion-Browser has its own database that is unrelated to the Hoogle database (though some operations use Hoogle)
Hope this helps, let me know …
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I did turn on "Show scion-browser responses (debug mode)" and noticed that "Gather information from Hackage" is also checked. I assume this is correct?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
So I found the JSON command before it rolled off the console. Here it is along with the first few lines after it:
>> {"filepath":"C:\\Users\\king\\Documents\\Eclipse\\workspace\\.metadata\\.plugins\\net.sf.eclipsefp.haskell.browser\\scion-browser-0.2-dbs\\local.db","command":"load-local-db","rebuild":true}
Removing
Adding
Download http://hackage.haskell.org/packages/archive/warp/0.4.6.2/doc/html/warp.txt
Sending:
GET /packages/archive/warp/0.4.6.2/doc/html/warp.txt HTTP/1.1
The last item in the command is "array" which is the last item processed in the console before the failure.
The very last item in the console is "", and the first item in the console after the JSON command is "Removing ".
Note that the next command in the console after "Removing " is "Adding ….". Is that what is generating the SQLite error?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
"busy" gave me an idea. I went into the eclipse metadata directory and found where scion-browser was keeping its db. Tried to erase it to start fresh and got "in use". Stopped eclipse. Same thing. I got it. Rebooted, and then was able to delete it. Re-started Eclipse. Now I get further.. "Local database loaded". Then a different error "Error loading hackage database incorrect header check". Here's the last few lines of the console, I think I'm done for the night.
Ok, repeated restarts of Eclipse intermixed with manual deletes of hackage.db and hackage.db-journal, and checking and unchecking of "Gather information from Hackage" yielded a clean start. Searches with only Local checked work but I've not yet gotten a successful search for types with both Local and Hackage checked, or just Hackage checked, for types that are not on my machine yet which the command line Hoogle can find on Hackage. I notice in the Eclipse workspace I now have local.db, hackage.db, and hackage.db-journal, after several restarts of Eclipse.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
There is a bug in scion-browser on the Hackage db rebuilding. Version 0.2.2 should fix it. Close eclipseFP to make sure scion-browser is not running, run cabal update && cabal install scion-browser. Delete hackage.db and hackage.db-journal and restart EclipseFP. It takes a little while (on my machine it generates a 54MB db file).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I performed your steps regarding version 0.2.2. Now I too have a 54M hackage.db in the eclipse scion-browser-0.2-dbs directory with no journal file. Local lookups seem to work, Hackage no. Example console output:
>> {"query":"oneOf","command":"hoogle-query"}
scion-browser.exe: user error (SQLite3 returned ErrorError while attempting to perform prepare "SELECT DbDecl.id, DbDecl.declType, DbDecl.name, DbDecl.doc, DbDecl.kind, DbDecl.signature, DbDecl.equals, DbDecl.moduleId, DbPackage.name, DbPackage.version FROM DbDecl, DbModule, DbPackage WHERE DbDecl.moduleId = DbModule.id AND DbModule.packageId = DbPackage.id AND DbDecl.name = 'timeZoneOffsetString'' AND DbModule.name = 'Data.Time.LocalTime'": near "Data": syntax error)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm really sorry, I didn't test that feature myself and it seems there are issues with it. I'll have a look and will ask the developer that implemented it to look at it too and hopefully we can release a new version soon if there's a bug…
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
No need to apologize, I appreciate the function you have provided. I only spent as much time on this problem as I did to provide you information to help you improve it. To be honest, I don't use the embedded Hoogle feature that often, and just turned off the Hackage checkbox for now.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I finally found the source of the error: I forgot to escape some parts of SQL and the double quote in 'timeZoneOffsetString'' was creating errors. I've just uploaded a new version of scion-browser to Hackage, so just running "cabal update && cabal install scion-browser" should fix your problems.
Thanks for reporting this.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2012-01-15
I forgot to escape some parts of SQL and the double quote in 'timeZoneOffsetString'' was creating errors.
Haskell's strong typing would help manage SQL escaping :-/
The problem with that approach it that it will escape everything, not only the things betweeen quotes.
Usually, Persistent helps with that, creating really good wrappers. But the support for joins is not that good, so I just made a quick-and-dirty hack to make it as fast as possible.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
First, thanks for the great work on EclipseFP.
I just upgraded to version 2.2.1, and now when Eclipse starts up, and the Hoogle database is being rebuilt, after awhile I get the error "'Rebuilding local database' has encountered a problem. Error loading local databse". The detailed error is "Unexpected end of ZLIB input stream". Yet when I go to a command line and run "Hoogle data" it appears that a good database is built in the "..\AppData\Roaming\cabal\hoogle-4.2.8\databases" subdirectory, and hoogle works from the command line. I'm on Windows 7, Eclipse Indigo Classic Win32, Haskell Platform 2011.4.0.0, and ghc version 7.0.4. Hoogle was working from within eclipse prior to this upgrade.
Any ideas?
If you go to the console view in Eclipse, and choose the console that displays the scion-browser output, you should see the command that is used to build and load the local database.
In the preferences, you can turn on the logging of error messages for scion-browser (the "debug mode"), maybe if you check that box and restart Eclipse you'll see a meaningful error message.
Otherwise, you can copy the JSON command line you see in the console, and run scion-browser yourself outside of EclipseFP. Launch scion-browser, and paste the full JSON command in the console. Maybe then you'll see the real error.
Scion-Browser has its own database that is unrelated to the Hoogle database (though some operations use Hoogle)
Hope this helps, let me know …
I'm not seeing any JSON in the console, but the last few steps and error that I do see are:
Download http://hackage.haskell.org/packages/archive/array/0.3.0.2/doc/html/array.txt
Sending:
GET /packages/archive/array/0.3.0.2/doc/html/array.txt HTTP/1.1
Host: hackage.haskell.org
Content-Length: 0
User-Agent: hs-HTTP-4000.0.9
Creating new connection to hackage.haskell.org
Received:
HTTP/1.1 200 OK
Date: Fri, 13 Jan 2012 22:07:03 GMT
Server: Apache/2.2.9 (Debian) mod_python/3.3.1 Python/2.5.2
Last-Modified: Thu, 18 Nov 2010 12:23:57 GMT
ETag: "1eba71c-5ac7-49552dd26b140"
Accept-Ranges: bytes
Content-Length: 23239
Vary: Accept-Encoding
Content-Type: text/plain
scion-browser.exe: user error (SQLite3 returned ErrorBusy while attempting to perform step.)
I did turn on "Show scion-browser responses (debug mode)" and noticed that "Gather information from Hackage" is also checked. I assume this is correct?
So I found the JSON command before it rolled off the console. Here it is along with the first few lines after it:
>> {"filepath":"C:\\Users\\king\\Documents\\Eclipse\\workspace\\.metadata\\.plugins\\net.sf.eclipsefp.haskell.browser\\scion-browser-0.2-dbs\\local.db","command":"load-local-db","rebuild":true}
Removing
Adding
Download http://hackage.haskell.org/packages/archive/warp/0.4.6.2/doc/html/warp.txt
Sending:
GET /packages/archive/warp/0.4.6.2/doc/html/warp.txt HTTP/1.1
The last item in the command is "array" which is the last item processed in the console before the failure.
The very last item in the console is "", and the first item in the console after the JSON command is "Removing ".
Note that the next command in the console after "Removing " is "Adding ….". Is that what is generating the SQLite error?
Sorry for the play by play but here's the latest.
"busy" gave me an idea. I went into the eclipse metadata directory and found where scion-browser was keeping its db. Tried to erase it to start fresh and got "in use". Stopped eclipse. Same thing. I got it. Rebooted, and then was able to delete it. Re-started Eclipse. Now I get further.. "Local database loaded". Then a different error "Error loading hackage database incorrect header check". Here's the last few lines of the console, I think I'm done for the night.
Local database loaded
"ok"
>> {"new-db":"_all","command":"set-current-db"}
"ok"
>> {"module":"","command":"get-modules"}
>> {"filepath":"C:\\Users\\king\\Documents\\Eclipse\\workspace\\.metadata\\.plugins\\net.sf.eclipsefp.haskell.browser\\scion-browser-0.2-dbs\\hackage.db","command":"load-hackage-db","rebuild":true}
Partial success.
Ok, repeated restarts of Eclipse intermixed with manual deletes of hackage.db and hackage.db-journal, and checking and unchecking of "Gather information from Hackage" yielded a clean start. Searches with only Local checked work but I've not yet gotten a successful search for types with both Local and Hackage checked, or just Hackage checked, for types that are not on my machine yet which the command line Hoogle can find on Hackage. I notice in the Eclipse workspace I now have local.db, hackage.db, and hackage.db-journal, after several restarts of Eclipse.
There is a bug in scion-browser on the Hackage db rebuilding. Version 0.2.2 should fix it. Close eclipseFP to make sure scion-browser is not running, run cabal update && cabal install scion-browser. Delete hackage.db and hackage.db-journal and restart EclipseFP. It takes a little while (on my machine it generates a 54MB db file).
I performed your steps regarding version 0.2.2. Now I too have a 54M hackage.db in the eclipse scion-browser-0.2-dbs directory with no journal file. Local lookups seem to work, Hackage no. Example console output:
>> {"query":"oneOf","command":"hoogle-query"}
scion-browser.exe: user error (SQLite3 returned ErrorError while attempting to perform prepare "SELECT DbDecl.id, DbDecl.declType, DbDecl.name, DbDecl.doc, DbDecl.kind, DbDecl.signature, DbDecl.equals, DbDecl.moduleId, DbPackage.name, DbPackage.version FROM DbDecl, DbModule, DbPackage WHERE DbDecl.moduleId = DbModule.id AND DbModule.packageId = DbPackage.id AND DbDecl.name = 'timeZoneOffsetString'' AND DbModule.name = 'Data.Time.LocalTime'": near "Data": syntax error)
I'm really sorry, I didn't test that feature myself and it seems there are issues with it. I'll have a look and will ask the developer that implemented it to look at it too and hopefully we can release a new version soon if there's a bug…
No need to apologize, I appreciate the function you have provided. I only spent as much time on this problem as I did to provide you information to help you improve it. To be honest, I don't use the embedded Hoogle feature that often, and just turned off the Hackage checkbox for now.
I finally found the source of the error: I forgot to escape some parts of SQL and the double quote in 'timeZoneOffsetString'' was creating errors. I've just uploaded a new version of scion-browser to Hackage, so just running "cabal update && cabal install scion-browser" should fix your problems.
Thanks for reporting this.
Haskell's strong typing would help manage SQL escaping :-/
Something like (quick and dirty attempt):
so that code like this would not type check without calls to escapeSql:
queryDb "Select blah WHERE name LIKE '" ++ modName - …
would require an explicit conversion of modName from String to EscapedSQL to satisfy the compiler.
The problem with that approach it that it will escape everything, not only the things betweeen quotes.
Usually, Persistent helps with that, creating really good wrappers. But the support for joins is not that good, so I just made a quick-and-dirty hack to make it as fast as possible.