Hey everyone,

A new release is imminent for the ODBC.jl 
<https://github.com/JuliaDB/ODBC.jl> package (will be released later 
today). As a quick history:


   - ODBC.jl was the first package I ever worked on with Julia (indeed, the 
   first commit is from January 2013)
   - A lot of refinements went into the package to make it basically 
   functional for the Julia 0.2/0.3 releases
   - Since an initial push on 0.3, much has languished as I've worked on 
   other projects, Julia-related and otherwise


Which brings us to today; a quick summary of the new release, which has 
been a long time coming:


   - Major overhaul of key types/methods to align with more common Julia 
   idioms and more foundationally, the DataStreams.jl 
   <https://github.com/JuliaDB/DataStreams.jl> framework
   - No more "global" ODBC connections that are saved under the hood; you 
      now explicitly construct an `ODBC.DSN` type and pass that to all other 
      functions
      - Querying is done through constructing an `ODBC.Source` and then 
      `Data.stream!`ing it to any one of the currently supported `Data.Sink` 
      types (CSV.Sink, SQLite.Sink, Data.Table)
      - Additionally, the `ODBC.query` still exists for now constructing 
      the ODBC.Source and streaming it to a Sink in one step (a Data.Table by 
      default)
      - Execute a query without returning results via `ODBC.execute(dsn, 
      querystring)`
   - 0.4 and 0.5 compatibility (currently not tested on 0.3, but I could be 
   persuaded to add compatibility if someone desperately needs)
   - Better support across platforms, DBMS types, and DBMS data types
   - Currently tested against SQL Server, MySQL, Teradata, and SQLite for 
      all data types they support
      - Tested on Windows, OSX, and Linux (where DBMS drivers are available)
      - Tested on 0.4 and 0.5
      - Will soon be additionally tested against PostgreSQL and Oracle DBM 
      as well
      - Native support for SQL_NUMERIC and SQL_DECIMAL types through the 
      DecFP.jl <https://github.com/stevengj/DecFP.jl> package on OSX/Linux, 
      with Windows support coming soon (pending the resolution 
      of https://github.com/stevengj/DecFP.jl/issues/10)
   - Summary of Breaking Changes:
      - ODBC.query now requires a valid DSN as a 1st argument
      - ODBC.query no longer takes an "output" keyword argument; instead, a 
      CSV.Sink can be passed as the 3rd argument to stream the results of a 
query 
      out to a CSV file
      - The ODBC.Connection and ODBC.Metadata types no longer exist
      - query is no longer exported; all types/methods are internal to the 
      module and usage now always includes the `ODBC.` prefix
   


So what should you do?

* Dive in! Feel free to report any bugs here 
<https://github.com/JuliaDB/ODBC.jl/issues/new>
* Port code over from older versions of ODBC (shouldn't be too bad really; 
it should all just work better after the port!)
* Alternatively, if you're currently relying on older versions of ODBC, you 
can run `Pkg.pin("ODBC", v"0.3.11")` to keep your code continuing to run on 
the latest stable ODBC release


Happy DBMS-ing!

-Jacob

Reply via email to