@@ -54,7 +54,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
54
54
DBConnection . execute ( conn , cached , params , options )
55
55
end
56
56
57
- @ impl true
58
57
def execute (
59
58
conn ,
60
59
% Exqlite.Query { statement: statement , ref: nil } ,
@@ -64,7 +63,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
64
63
execute ( conn , statement , params , options )
65
64
end
66
65
67
- @ impl true
68
66
def execute ( conn , sql , params , options ) when is_binary ( sql ) or is_list ( sql ) do
69
67
query = Exqlite.Query . build ( name: "" , statement: IO . iodata_to_binary ( sql ) )
70
68
@@ -75,7 +73,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
75
73
end
76
74
end
77
75
78
- @ impl true
79
76
def execute ( conn , query , params , options ) do
80
77
case DBConnection . execute ( conn , query , params , options ) do
81
78
{ :ok , _ } = ok -> ok
@@ -163,7 +160,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
163
160
raise ArgumentError , "locks are not supported by SQLite3"
164
161
end
165
162
166
- @ impl true
167
163
def all ( query , as_prefix \\ [ ] ) do
168
164
sources = create_names ( query , as_prefix )
169
165
@@ -233,7 +229,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
233
229
raise ArgumentError , "JOINS are not supported on DELETE statements by SQLite"
234
230
end
235
231
236
- @ impl true
237
232
def delete_all ( query ) do
238
233
sources = create_names ( query , [ ] )
239
234
cte = cte ( query , sources )
@@ -261,7 +256,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
261
256
]
262
257
end
263
258
264
- @ impl true
265
259
def insert ( prefix , table , header , rows , on_conflict , returning , _placeholders ) do
266
260
fields = quote_names ( header )
267
261
@@ -375,7 +369,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
375
369
raise ArgumentError , "SQLite3 adapter does not support keyword lists in :options"
376
370
end
377
371
378
- @ impl true
379
372
def execute_ddl ( { :create , % Table { } = table , columns } ) do
380
373
{ table , composite_pk_def } = composite_pk_definition ( table , columns )
381
374
composite_fk_defs = composite_fk_definitions ( table , columns )
@@ -395,7 +388,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
395
388
]
396
389
end
397
390
398
- @ impl true
399
391
def execute_ddl ( { :create_if_not_exists , % Table { } = table , columns } ) do
400
392
{ table , composite_pk_def } = composite_pk_definition ( table , columns )
401
393
composite_fk_defs = composite_fk_definitions ( table , columns )
@@ -415,7 +407,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
415
407
]
416
408
end
417
409
418
- @ impl true
419
410
def execute_ddl ( { :drop , % Table { } = table } ) do
420
411
[
421
412
[
@@ -425,12 +416,10 @@ defmodule Ecto.Adapters.SQLite3.Connection do
425
416
]
426
417
end
427
418
428
- @ impl true
429
419
def execute_ddl ( { :drop , % Table { } = table , _mode } ) do
430
420
execute_ddl ( { :drop , table } )
431
421
end
432
422
433
- @ impl true
434
423
def execute_ddl ( { :drop_if_exists , % Table { } = table } ) do
435
424
[
436
425
[
@@ -440,12 +429,10 @@ defmodule Ecto.Adapters.SQLite3.Connection do
440
429
]
441
430
end
442
431
443
- @ impl true
444
432
def execute_ddl ( { :drop_if_exists , % Table { } = table , _mode } ) do
445
433
execute_ddl ( { :drop_if_exists , table } )
446
434
end
447
435
448
- @ impl true
449
436
def execute_ddl ( { :alter , % Table { } = table , changes } ) do
450
437
Enum . map ( changes , fn change ->
451
438
[
@@ -457,111 +444,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
457
444
end )
458
445
end
459
446
460
- @ impl true
461
- def execute_ddl ( { :create , % Index { } = index } ) do
462
- fields = intersperse_map ( index . columns , ", " , & index_expr / 1 )
463
-
464
- [
465
- [
466
- "CREATE " ,
467
- if_do ( index . unique , "UNIQUE " ) ,
468
- "INDEX " ,
469
- quote_name ( index . name ) ,
470
- " ON " ,
471
- quote_table ( index . prefix , index . table ) ,
472
- " (" ,
473
- fields ,
474
- ?) ,
475
- if_do ( index . where , [ " WHERE " , to_string ( index . where ) ] )
476
- ]
477
- ]
478
- end
479
-
480
- @ impl true
481
- def execute_ddl ( { :create_if_not_exists , % Index { } = index } ) do
482
- fields = intersperse_map ( index . columns , ", " , & index_expr / 1 )
483
-
484
- [
485
- [
486
- "CREATE " ,
487
- if_do ( index . unique , "UNIQUE " ) ,
488
- "INDEX IF NOT EXISTS " ,
489
- quote_name ( index . name ) ,
490
- " ON " ,
491
- quote_table ( index . prefix , index . table ) ,
492
- " (" ,
493
- fields ,
494
- ?) ,
495
- if_do ( index . where , [ " WHERE " , to_string ( index . where ) ] )
496
- ]
497
- ]
498
- end
499
-
500
- @ impl true
501
- def execute_ddl ( { :drop , % Index { } = index } ) do
502
- [
503
- [
504
- "DROP INDEX " ,
505
- quote_table ( index . prefix , index . name )
506
- ]
507
- ]
508
- end
509
-
510
- @ impl true
511
- def execute_ddl ( { :drop , % Index { } = index , _mode } ) do
512
- execute_ddl ( { :drop , index } )
513
- end
514
-
515
- @ impl true
516
- def execute_ddl ( { :drop_if_exists , % Index { } = index } ) do
517
- [
518
- [
519
- "DROP INDEX IF EXISTS " ,
520
- quote_table ( index . prefix , index . name )
521
- ]
522
- ]
523
- end
524
-
525
- @ impl true
526
- def execute_ddl ( { :drop_if_exists , % Index { } = index , _mode } ) do
527
- execute_ddl ( { :drop_if_exists , index } )
528
- end
529
-
530
- @ impl true
531
- def execute_ddl ( { :rename , % Table { } = current_table , % Table { } = new_table } ) do
532
- [
533
- [
534
- "ALTER TABLE " ,
535
- quote_table ( current_table . prefix , current_table . name ) ,
536
- " RENAME TO " ,
537
- quote_table ( nil , new_table . name )
538
- ]
539
- ]
540
- end
541
-
542
- @ impl true
543
- def execute_ddl ( { :rename , % Table { } = current_table , old_col , new_col } ) do
544
- [
545
- [
546
- "ALTER TABLE " ,
547
- quote_table ( current_table . prefix , current_table . name ) ,
548
- " RENAME COLUMN " ,
549
- quote_name ( old_col ) ,
550
- " TO " ,
551
- quote_name ( new_col )
552
- ]
553
- ]
554
- end
555
-
556
- @ impl true
557
- def execute_ddl ( string ) when is_binary ( string ) , do: [ string ]
558
-
559
- @ impl true
560
- def execute_ddl ( keyword ) when is_list ( keyword ) do
561
- raise ArgumentError , "SQLite3 adapter does not support keyword lists in execute"
562
- end
563
-
564
- @ impl true
565
447
def execute_ddl ( { :create , % Index { } = index } ) do
566
448
fields = intersperse_map ( index . columns , ", " , & index_expr / 1 )
567
449
@@ -574,16 +456,14 @@ defmodule Ecto.Adapters.SQLite3.Connection do
574
456
quote_name ( index . name ) ,
575
457
" ON " ,
576
458
quote_table ( index . prefix , index . table ) ,
577
- ?\s ,
578
- ?( ,
459
+ " (" ,
579
460
fields ,
580
461
?) ,
581
462
if_do ( index . where , [ " WHERE " , to_string ( index . where ) ] )
582
463
]
583
464
]
584
465
end
585
466
586
- @ impl true
587
467
def execute_ddl ( { :create_if_not_exists , % Index { } = index } ) do
588
468
fields = intersperse_map ( index . columns , ", " , & index_expr / 1 )
589
469
@@ -596,21 +476,18 @@ defmodule Ecto.Adapters.SQLite3.Connection do
596
476
quote_name ( index . name ) ,
597
477
" ON " ,
598
478
quote_table ( index . prefix , index . table ) ,
599
- ?\s ,
600
- ?( ,
479
+ " (" ,
601
480
fields ,
602
481
?) ,
603
482
if_do ( index . where , [ " WHERE " , to_string ( index . where ) ] )
604
483
]
605
484
]
606
485
end
607
486
608
- @ impl true
609
487
def execute_ddl ( { :create , % Constraint { } } ) do
610
488
raise ArgumentError , "SQLite3 does not support ALTER TABLE ADD CONSTRAINT."
611
489
end
612
490
613
- @ impl true
614
491
def execute_ddl ( { :drop , % Index { } = index } ) do
615
492
[
616
493
[
@@ -620,12 +497,10 @@ defmodule Ecto.Adapters.SQLite3.Connection do
620
497
]
621
498
end
622
499
623
- @ impl true
624
500
def execute_ddl ( { :drop , % Index { } = index , _mode } ) do
625
501
execute_ddl ( { :drop , index } )
626
502
end
627
503
628
- @ impl true
629
504
def execute_ddl ( { :drop_if_exists , % Index { } = index } ) do
630
505
[
631
506
[
@@ -635,22 +510,18 @@ defmodule Ecto.Adapters.SQLite3.Connection do
635
510
]
636
511
end
637
512
638
- @ impl true
639
513
def execute_ddl ( { :drop_if_exists , % Index { } = index , _mode } ) do
640
514
execute_ddl ( { :drop_if_exists , index } )
641
515
end
642
516
643
- @ impl true
644
517
def execute_ddl ( { :drop , % Constraint { } , _mode } ) do
645
518
raise ArgumentError , "SQLite3 does not support ALTER TABLE DROP CONSTRAINT."
646
519
end
647
520
648
- @ impl true
649
521
def execute_ddl ( { :drop_if_exists , % Constraint { } , _mode } ) do
650
522
raise ArgumentError , "SQLite3 does not support ALTER TABLE DROP CONSTRAINT."
651
523
end
652
524
653
- @ impl true
654
525
def execute_ddl ( { :rename , % Table { } = current_table , % Table { } = new_table } ) do
655
526
[
656
527
[
@@ -662,7 +533,6 @@ defmodule Ecto.Adapters.SQLite3.Connection do
662
533
]
663
534
end
664
535
665
- @ impl true
666
536
def execute_ddl ( { :rename , % Table { } = table , current_column , new_column } ) do
667
537
[
668
538
[
@@ -676,10 +546,8 @@ defmodule Ecto.Adapters.SQLite3.Connection do
676
546
]
677
547
end
678
548
679
- @ impl true
680
549
def execute_ddl ( string ) when is_binary ( string ) , do: [ string ]
681
550
682
- @ impl true
683
551
def execute_ddl ( keyword ) when is_list ( keyword ) do
684
552
raise ArgumentError , "SQLite3 adapter does not support keyword lists in execute"
685
553
end
@@ -1799,7 +1667,10 @@ defmodule Ecto.Adapters.SQLite3.Connection do
1799
1667
def quote_table ( table ) , do: quote_entity ( table )
1800
1668
1801
1669
defp quote_table ( nil , name ) , do: quote_entity ( name )
1802
- defp quote_table ( prefix , name ) , do: [ quote_entity ( prefix ) , ?. , quote_entity ( name ) ]
1670
+
1671
+ defp quote_table ( _prefix , _name ) do
1672
+ raise ArgumentError , "SQLite3 does not support table prefixes"
1673
+ end
1803
1674
1804
1675
defp quote_entity ( val ) when is_atom ( val ) do
1805
1676
quote_entity ( Atom . to_string ( val ) )
0 commit comments