# HG changeset patch # User František Kučera # Date 1591401444 -7200 # Node ID 192b0059a6c45c9e6288d998a3c7ae6657202fb6 # Parent 418e11eb6fea78abdd18fbd08f42df9a2cd3b5d7 Release v0.16 – ODBC in SQL + JACK MIDI diff -r 418e11eb6fea -r 192b0059a6c4 relpipe-data/download.xml --- a/relpipe-data/download.xml Thu May 21 01:23:23 2020 +0200 +++ b/relpipe-data/download.xml Sat Jun 06 01:57:24 2020 +0200 @@ -17,7 +17,9 @@
Released versions
 			
 		
 		
 		

+ n.b. the --file and --file-keep have been dropped in v0.16 + (replacement is described in the v0.16 release notes). +

+ +

See the examples and screenshots pages for details.

diff -r 418e11eb6fea -r 192b0059a6c4 relpipe-data/release-v0.14.xml --- a/relpipe-data/release-v0.14.xml Thu May 21 01:23:23 2020 +0200 +++ b/relpipe-data/release-v0.14.xml Sat Jun 06 01:57:24 2020 +0200 @@ -45,6 +45,11 @@

+ n.b. the --file and --file-keep have been dropped in v0.16 + (replacement is described in the v0.16 release notes). +

+ +

See the examples and screenshots pages for details.

diff -r 418e11eb6fea -r 192b0059a6c4 relpipe-data/release-v0.16.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/relpipe-data/release-v0.16.xml Sat Jun 06 01:57:24 2020 +0200 @@ -0,0 +1,264 @@ + + + Release v0.16 + new public release of Relational pipes + v0.16 + + +

+ We are pleased to introduce you the new development version of . + This release brings an abstraction layer (ODBC) in the SQL transformation + several smaller improvements. +

+ +
    +
  • + ODBC in the relpipe-tr-sql module: see details below
  • +
  • + new input relpipe-in-jack module: see details below
  • +
  • + keyboard shortcuts in the relpipe-out-gui module: use Ctrl+PgUp and Ctrl+PgDown to switch panels (relations) and Ctrl+Q to quit
  • +
  • + record count in the relpipe-out-xhtml command: number of records is printed under the table (this command part of relpipe-out-xml, not a standalone module)
  • +
+ +

+ See the examples and screenshots pages for details. +

+ +

+ Please note that this is still a development relasease and thus the API (libraries, CLI arguments, formats) might and will change. + Any suggestions, ideas and bug reports are welcome in our mailing list. +

+ +

ODBC in the SQL transformation module

+ +

+ Former versions of relpipe-tr-sql were tied to SQLite + and user had no option to change the SQL engine. + However great SQLite is (and we are very thankful for it), having some particular DBMS (database management system) hard-coded in our program is too constraining. + So we added an abstraction layer (ODBC) and get rid of the direct dependency on SQLite. + Now any DBMS can be used with . +

+ +

+ ODBC (Open Database Connectivity) is an industry standard and provides API for accessing a DBMS. + In late 80s several vendors (mostly from the Unix and database communities) established the SQL Access Group (SAG) + and then specified the Call Level Interface (CLI). ODBC, which is based on CLI, was published in early 90s. + ODBC is available on many operating systems and there are at least two free software implementations: + unixODBC and iODBC. + We use unixODBC for development and testing. + Future releases of should be tested also with other implementations and various database drivers. +

+ +

+ SQLite remains the default option + (in the C++ implementation, while Java or other implementations may have different default and may use different abstraction layer like JDBC). + We count on SQLite for future releases. It is the simplest way to get full SQL power in your relational pipeline. + However, relpipe-tr-sql do not depend on SQLite and can be installed without it (and then used e.g. with PostgreSQL driver). + Using different DBMS makes sense for two main reasons: +

+ +
    +
  • + We need specific features provided by the DBMS. + It might be e.g. some functions for XML processing or some advanced SQL language constructs. + Or maybe we have some business logic already implemented as SQL functions in e.g. PostgreSQL + – now we can access this logic from our pipelines or seamlessly integrate it in our shell: + some-fancy-report.xhtml + # or just: | relpipe-out-xhtml > some-generic-report.xhtml]]> +
  • +
  • + We need access to data in an existing database. + The relpipe-tr-sql and relpipe-in-sql can be used as a generic database clients + and are able to load relational data to and from any DBMS. + We can also write a pipeline to transfer data between two different DBMS, do some ETL (extract, transform, load) tasks + or just cache some result sets from a remote database in our local SQLite file. + We can cache e.g. some codelist tables or other data for offline use: + + In previous versions, we needed SQL-DK for this scenario, + now it is possible solely in without any other tools. + But SQL-DK is still useful – especially if we have a JDBC driver but do not have an ODBC one + (JDBC drivers and Java are also much more portable). +
  • +
+ +

+ n.b. However it still looks like executing a local command, we should be aware that while using a remote data source, + our data travel to given remote server – this impacts performance and our privacy. + Never use untrustworthy remote server for processing sensitive data (even if using just a temporary schema or tables). + If SQLite is „too small“ then PostgreSQL installed on localhost is usually a good option. +

+ +

+ There are ODBC drivers for any conceivable database system. + We can also write a custom driver for any other resource and just plug it in + without recompiling (a driver is a shared library – simply an .so file). +

+ +

+ This release also comes with better diagnostics. This feature is not specific to ODBC, but was implemented during the rewrite of the database layer. + So if we make a mistake in our query or try to create a table with the same name as already exists in the DB, we will get a useful message with detailed description of the problem + (instead of a pointless failure notice in the previous version). +

+ +

+ The new implementation of relpipe-tr-sql is still a bit raw and will be tuned in the upcoming versions, + but it seems working quite well (with SQLite, PostgreSQL and MySQL on GNU/Linux). + As always, testers are welcomed. +

+ +

+ More details in the example: Accessing SQLite, PostgreSQL and MySQL through ODBC. +

+ +

JACK (MIDI) input module

+ +

+ A powerful audio system called JACK allows us to + build pipelines consisting of audio interfaces, players, recorders, filters and effects… + and route sound streams (both PCM and MIDI) through them. + MIDI messages can come from keyboards or other hardware MIDI controllers or from MIDI players and other software. + Sometimes it is useful to check what is happening under the hood and examine particular MIDI messages + instead of just playing them on a sound module or synthesizer. + Now we can bridge two seemingly unrelated worlds: real-time audio and relational pipes. +

+ + + +

+ We can join the JACK graph with relpipe-in-jack command. + It does not consume STDIN, it gets events from JACK instead, so no other input data are needed. +

+ +

+ More details in the example: Monitoring MIDI messages using JACK. +

+ +

Feature overview

+ +

Data types

+
    +
  • boolean
  • +
  • variable-length signed integer (SLEB128)
  • +
  • string in UTF-8
  • +
+

Inputs

+
    +
  • Recfile
  • +
  • XML
  • +
  • XMLTable
  • +
  • CSV
  • +
  • file system
  • +
  • CLI
  • +
  • fstab
  • +
  • SQL script
  • +
  • JACK
  • +
+

Transformations

+
    +
  • sql: filtering and transformations using the SQL language
  • +
  • awk: filtering and transformations using the classic AWK tool and language
  • +
  • guile: filtering and transformations defined in the Scheme language using GNU Guile
  • +
  • grep: regular expression filter, removes unwanted records from the relation
  • +
  • cut: regular expression attribute cutter (removes or duplicates attributes and can also DROP whole relation)
  • +
  • sed: regular expression replacer
  • +
  • validator: just a pass-through filter that crashes on invalid data
  • +
  • python: highly experimental
  • +
+

Streamlets

+
    +
  • xpath (example, unstable)
  • +
  • hash (example, unstable)
  • +
  • jar_info (example, unstable)
  • +
  • mime_type (example, unstable)
  • +
  • exiftool (example, unstable)
  • +
  • pid (example, unstable)
  • +
  • cloc (example, unstable)
  • +
  • exiv2 (example, unstable)
  • +
  • inode (example, unstable)
  • +
  • lines_count (example, unstable)
  • +
  • pdftotext (example, unstable)
  • +
  • pdfinfo (example, unstable)
  • +
  • tesseract (example, unstable)
  • +
+

Outputs

+
    +
  • ASN.1 BER
  • +
  • Recfile
  • +
  • CSV
  • +
  • tabular
  • +
  • XML
  • +
  • nullbyte
  • +
  • GUI in Qt
  • +
  • ODS (LibreOffice)
  • +
+ +

New examples

+
    +
  • Accessing SQLite, PostgreSQL and MySQL through ODBC
  • +
  • Monitoring MIDI messages using JACK
  • +
+ +

Backward incompatible changes

+ +

+ The options --file and --file-keep in relpipe-tr-sql (and relpipe-in-sql, which is an alias for the same binary) + have been dropped. + These options were specific to SQLite and make no sense now, when we do not depend on particular DBMS and can use any engine for SQL processing + (even a remote one somewhere on the network that could not reach our local files). + However SQLite is still the default option and the: +

+ + relpipe-tr-sql --file 'myDatabase.sqlite' + +

can be simply replaced by:

+ + relpipe-tr-sql --data-source-string 'Driver=SQLite3;Database=file:myDatabase.sqlite' + +

+ Bash-completion works and will suggest even the Driver=SQLite3;Database=file: part, so it is not necessary to memorize the connection string. + Frequently used databases can be configured in the ~/.odbc.ini file and then referenced just by their names using --data-source-name + (the data source names – DSN – are also suggested by Bash-completion). +

+ +

+ There is no built-in replacement for the --file-keep option. + But if the user wants to create a temporary file and delete it at the end of the transformation, + he can simply add rm -f myDatabase.sqlite to his script. +

+ +

Installation

+ +

+ Instalation was tested on Debian GNU/Linux 10.2. + The process should be similar on other distributions. +

+ + + +

+ are modular thus you can download and install only parts you need (the libraries are needed always). + Tools out-gui.qt and tr-python require additional libraries and are not built by default. +

+ +
+ +
\ No newline at end of file diff -r 418e11eb6fea -r 192b0059a6c4 relpipe-data/roadmap.xml --- a/relpipe-data/roadmap.xml Thu May 21 01:23:23 2020 +0200 +++ b/relpipe-data/roadmap.xml Sat Jun 06 01:57:24 2020 +0200 @@ -16,7 +16,7 @@ Released versions are described on the download page.

-

v0.16, v0.17, v0.18 etc.

+

v0.17, v0.18, v0.19 etc.

Releases for discussion and verification of the format and API design. @@ -195,6 +195,7 @@

Other libraries and tools: