@@ -1203,7 +1203,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
12031203 quote_name ( field )
12041204 end
12051205
1206- # def expr({{:., _, [{:parent_as, _, [{:&, _, [idx]}]}, field]}, _, []}, _sources, query)
12071206 def expr ( { { :. , _ , [ { :parent_as , _ , [ as ] } , field ] } , _ , [ ] } , _sources , query )
12081207 when is_atom ( field ) do
12091208 { ix , sources } = get_parent_sources_ix ( query , as )
@@ -1288,6 +1287,14 @@ defmodule Ecto.Adapters.SQLite3.Connection do
12881287 |> parens_for_select
12891288 end
12901289
1290+ def expr ( { :literal , _ , [ literal ] } , _sources , _query ) do
1291+ quote_name ( literal )
1292+ end
1293+
1294+ def expr ( { :selected_as , _ , [ name ] } , _sources , _query ) do
1295+ [ quote_name ( name ) ]
1296+ end
1297+
12911298 def expr ( { :datetime_add , _ , [ datetime , count , interval ] } , sources , query ) do
12921299 [
12931300 "CAST (" ,
@@ -1366,6 +1373,7 @@ defmodule Ecto.Adapters.SQLite3.Connection do
13661373 end
13671374 end
13681375
1376+ # TODO It technically is, its just a json array, so we *could* support it
13691377 def expr ( list , _sources , query ) when is_list ( list ) do
13701378 raise Ecto.QueryError ,
13711379 query: query ,
@@ -1404,8 +1412,7 @@ defmodule Ecto.Adapters.SQLite3.Connection do
14041412 end
14051413
14061414 def expr ( literal , _sources , _query ) when is_float ( literal ) do
1407- # Unsure if SQLite3 supports float casting
1408- [ "(0 + " , Float . to_string ( literal ) , ?) ]
1415+ [ "CAST(" , Float . to_string ( literal ) , " AS REAL)" ]
14091416 end
14101417
14111418 def expr ( expr , _sources , query ) do
0 commit comments