Commit Graph

39 Commits

Author SHA1 Message Date
Dimitri Fontaine
807f5cefcd Fix omitted file dependency (reading queries from file). 2014-06-16 14:24:05 +02:00
Dimitri Fontaine
c3742a9410 Typo fix cl-base64 system's name, fix the fix for #60. 2014-05-16 23:36:45 +02:00
Dimitri Fontaine
9e12035ca1 Review SQLite blob types in light of "manifest typing", fix #60.
When using SQLite 3, a blob column might return either string of byte
vector values dynamically depending on the data itself, or maybe some
more complex parameters controlled at data insert time.

Hard-code the rule that a blob column returned as a string is in fact
base64 encoded (which looks like common practice) and decode it
automatically when needed, before sending to byte-vector-to-bytea. It
might be a tad slow but at least the data is properly converted.

In future, that decision might come and byte us in the back again, at
which point it'll be necessary to consider full casting options as in
the MySQL CAST rules. It seems like a big enough win for now if we can
avoid that.
2014-05-16 23:13:57 +02:00
Dimitri Fontaine
35ca4927e9 Get rid of some lib dependencies.
The charset business isn't worth depending on an AGPL licenced lib which
is part of a huge Quicklisp system.
2014-04-25 17:21:11 +02:00
Dimitri Fontaine
4d6def8105 Move some MySQL old import/export functions apart... 2014-03-04 13:52:48 +01:00
Dimitri Fontaine
db947e1467 Rework reader and writer data exchange.
With this patch, the whole data massaging and final formating into the
PostgreSQL COPY TEXT format is done by the reader thread, which publishes a
batch at a time in the communication channel: a lparallel.queue object.

Before that, the raw vectors where pushed directly in the queue, offering
more flexibility to adjust to the reader and writer IO rates and
capabilities, but impeding the ability of the Garbage Collector: data still
in the queue was not collected even if not needed anymore.

The new model also uses less memory, and allows a better control over what
amount of data stays in memory. The new *concurrent-batches* parameter
should be key to being able to process huge rows.

The intent is to offering a way for the users to tune *concurrent-batches*
down to 1 for sources with massive per-row memory footprint. Even better
would be to find a way to automatically adjust the setting without spending
too much time counting the bytes we're batching.

Preliminary tests show no sensible impact on performances from this patch,
even some improvements in cases.
2014-01-25 23:54:49 +01:00
Dimitri Fontaine
a51a712b6a Fix asd dependencies, cleanup useless and misplaced compilation options. 2014-01-21 14:37:26 +01:00
Dimitri Fontaine
2080d91e40 Fix dependency declarations in between files, should help with #19. 2014-01-02 23:48:57 +01:00
Dimitri Fontaine
17b366ca82 Create a website to present the software. 2014-01-02 23:25:23 +01:00
Dimitri Fontaine
b2c9e0d2dc Refactor the whole logging infrastructure not to depend on threads sharing streams. 2013-12-24 19:08:55 +01:00
Dimitri Fontaine
f02eb641b4 Switch from cl-mysql to qmynd, an all-lisp driver for MySQL. 2013-12-03 22:05:39 +01:00
Dimitri Fontaine
3486cc688f Looks like I forgot to add fixed.lisp in the asd system definitions. 2013-11-08 21:50:40 +01:00
Dimitri Fontaine
5ce5d53d7d Use trivial-backtrace to display more useful information in case of unexpected events, hopefully. 2013-11-07 20:14:06 +01:00
Dimitri Fontaine
6a75187b7d Refactor MySQL to use the new API. 2013-11-04 19:16:08 +01:00
Dimitri Fontaine
0a38195853 Refactoring the API with a real definition of it, and reorg the source tree. 2013-11-04 13:21:45 +01:00
Dimitri Fontaine
50114a0d3a Hack-in some support for SQLite data source, including some refactoring preps. 2013-10-24 00:21:46 +02:00
Dimitri Fontaine
ffebcf3bc7 Clean out the code by splitting away a bunch of PostgreSQL related facilities. 2013-10-21 22:35:22 +02:00
Dimitri Fontaine
fb818ee0e3 Move sources into their own subdirectory, assorted cleaning. 2013-10-20 19:09:09 +02:00
Dimitri Fontaine
6d27d28287 Implement a converter from old .INI syntax to current commands. 2013-10-12 23:59:28 +02:00
Dimitri Fontaine
2bf7c4df12 Assorted clean up to prepare a binary image. 2013-10-03 17:42:09 +02:00
Dimitri Fontaine
2ff0d11332 Fix a typo in the com.informatimago.clext ASD dependency declaration. 2013-09-30 17:31:28 +02:00
Dimitri Fontaine
2a6c974f8e Handle input file encodings. 2013-09-30 00:26:41 +02:00
Dimitri Fontaine
b4e530981c WIP implementing full archive fetching and downloading. 2013-09-24 18:34:05 +02:00
Dimitri Fontaine
7151a2ea62 Refactor transaction handling, depend on a patch to postmodern. 2013-09-23 11:30:20 +02:00
Dimitri Fontaine
e6d4c73c1b Make Xach's db3 lib into its own asdf piece and integrate it with pgloader. 2013-09-19 00:42:35 +02:00
Dimitri Fontaine
6e4edc4560 Split ABNF implementation into its own Quicklisp ready system. 2013-09-09 14:03:28 +02:00
Dimitri Fontaine
725c66f278 First stab at the ABNF parser generator, for easy user edits of syslog message grammar. 2013-09-05 00:14:55 +02:00
Dimitri Fontaine
1f42318bb2 Import DBF v3 file reader from Xach, with permissions. 2013-08-31 23:11:54 +02:00
Dimitri Fontaine
ff275e69f1 Preliminary parsing of syslog messages. 2013-08-29 11:42:49 +02:00
Dimitri Fontaine
f3b6054432 Begin working on importing from zip files with plenty of wild guessing... 2013-08-19 23:38:58 +02:00
Dimitri Fontaine
5ed766c570 Fully integrate data transformation rules. 2013-08-07 18:42:48 +02:00
Dimitri Fontaine
7b2b208e59 Actually produce code from the LOAD DATABASE FROM command. 2013-08-05 18:23:27 +02:00
Dimitri Fontaine
800df8e91d Use the new casting rules facilities in mysql.lisp 2013-07-30 21:15:26 -07:00
Dimitri Fontaine
22246ccd2d Add a COPY command parser, using esrap. 2013-05-09 15:44:17 +02:00
Dimitri Fontaine
13fcf9f096 Clean-up connection parameters and their default values. 2013-03-16 23:21:32 +01:00
Dimitri Fontaine
72c783f02f Add some preliminary logging capacity 2013-03-16 16:47:10 +01:00
Dimitri Fontaine
d795ac02c2 Send errors into separate files (logs, data), fix system loading and parameters. 2013-02-07 22:58:46 +01:00
Dimitri Fontaine
f6bdf64c7c Cleanup the package definitions and inter-dependancy, and implement a proper data structure for sharing stats about what's happening. 2013-02-07 21:55:10 +01:00
Dimitri Fontaine
623e2d4ff7 Massive Refactoring, towards pgloader. 2013-02-07 00:04:12 +01:00