Crossposting from Ecto_SQL: issue#302
Environment
- Elixir version (elixir -v): 1.10.4
- Database and version (PostgreSQL 9.4, MongoDB 3.2, etc.): Microsoft SQL Server 2012 (SP4-GDR) (KB4057116) 11.0.7462.6 (X64) Jan 5 2018 22:11:56
- Ecto version (mix deps): 3.4.5
- Database adapter and version (mix deps): TDS 2.1.1
- Operating system: Elixir:1.10.4 Docker Container
Current behavior
We are passing in a string param to be declared as a varchar and Tds seems to think it is money.
iex(32)> Rossi.Repo.query("declare @RaceDate varchar; set @RaceDate = $1; select @RaceDate;", ["somegarbage"], timeout: 480_000)
[debug] QUERY ERROR db=95.1ms queue=46.0ms idle=1416.4ms
declare @RaceDate varchar; set @RaceDate = $1; select @RaceDate; ["somegarbage"]
{:error,
%Tds.Error{
message: nil,
mssql: %{
class: 16,
line_number: 1,
msg_text: "There is insufficient result space to convert a money value to varchar.",
number: 234,
proc_name: "",
server_name: "EC2AMAZ-AHVHNC0",
state: 2
}
}}
When passing a string into a variable expecting a smalldatetime it's returning 1 row but then rows shows as nil.
iex(29)> Rossi.Repo.query("declare @RaceDate smalldatetime; set @RaceDate = $1; select @RaceDate;", ["somegarbage"], timeout: 480_000)
[debug] QUERY OK db=91.3ms queue=60.6ms idle=1305.5ms
declare @RaceDate smalldatetime; set @RaceDate = $1; select @RaceDate; ["somegarbage"]
{:ok, %Tds.Result{columns: nil, num_rows: 1, rows: nil}}
Expected behavior
With Rossi.Repo using Ecto.Adapters.Tds we would expect the following to respond with the parameter input.
iex(32)> Rossi.Repo.query("declare @RaceDate varchar; set @RaceDate = $1; select @RaceDate;", ["somegarbage"], timeout: 480_000)
[debug] QUERY ERROR db=95.1ms queue=46.0ms idle=1416.4ms
declare @RaceDate varchar; set @RaceDate = $1; select @RaceDate; ["somegarbage"]
{:ok,
%Tds.Result{
columns: 1,
num_rows: 1,
rows: ["somegarbage"]
}}
Then we would expect the follow to respond with some type of error.
iex(29)> Rossi.Repo.query("declare @RaceDate smalldatetime; set @RaceDate = $1; select @RaceDate;", ["somegarbage"], timeout: 480_000)
[debug] QUERY OK db=91.3ms queue=60.6ms idle=1305.5ms
declare @RaceDate smalldatetime; set @RaceDate = $1; select @RaceDate; ["somegarbage"]
{:error, %Tds.Error{mssql: %{
msg_text: "Something about data types not lining up"
}
}
Crossposting from Ecto_SQL: issue#302
Environment
Current behavior
We are passing in a string param to be declared as a varchar and Tds seems to think it is money.
When passing a string into a variable expecting a smalldatetime it's returning 1 row but then rows shows as nil.
Expected behavior
With
Rossi.RepousingEcto.Adapters.Tdswe would expect the following to respond with the parameter input.Then we would expect the follow to respond with some type of error.