cogini / mssqlex

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mssqlex

Build Status Coverage Status Inline docs Ebert Hex.pm Version Hex.pm Downloads License

Adapter to Microsoft SQL Server. Using DBConnection and ODBC.

It connects to Ecto with MssqlEcto.

Installation

Mssqlex requires the Erlang ODBC application to be installed. This might require the installation of an additional package depending on how you have installed Erlang (e.g. on Ubuntu sudo apt-get install erlang-odbc).

Mssqlex depends on Microsoft's ODBC Driver for SQL Server. You can find installation instructions for Linux or other platforms on the official site.

This package is availabe in Hex, the package can be installed by adding mssqlex to your list of dependencies in mix.exs:

def deps do
  [{:mssqlex, "~> 2.0.0-beta.0"}]
end

Testing

Tests require an instance of SQL Server to be running on localhost and a valid UID and password to be set in the MSSQL_UID and MSSQL_PWD environment variables, respectively.

The easiest way to get an instance running is to use the SQL Server Docker image:

export MSSQL_UID=sa
export MSSQL_PWD='ThePa$$word'
docker run --name test_mssqlex_server -e 'ACCEPT_EULA=Y' -e SA_PASSWORD=$MSSQL_PWD -p 1433:1433 -d microsoft/mssql-server-linux

Known Issues

Fixable

  • Needs better handling for UUIDs

Requires investigation

  • Several syntax errors occur under specific conditions (of the form 'syntax error near')
  • Many-to-many doesn't seem to return duplicates
  • Fails to autogenerate binary_id type
  • Limited support for unique constraints
  • Doesn't handle no association constraint correctly
  • Problems with has_many association on delete

Probably Unfixable

  • Migrations can fail when primary keys are changed
  • No support for transactions, locks, windows or streams. Can also cause issues for migrations if the programmer runs the migration while other operations are happening on the database.
  • Datetime intervals not implemented

Unfixable due to technical limitations

  • The ambiguity of Transact SQL's order by statement can cause problems in more complex queries see here
  • The following error will randomly but rarely occur 'Error in /usr/lib/erlang/lib/odbc-2.12.3/priv/bin/odbcserver': double free or corruption (fasttop): 0x0000000001cb75c0'

About

License:Apache License 2.0


Languages

Language:Elixir 93.7%Language:Shell 5.1%Language:Dockerfile 1.2%