sequel 3.24.1 → 3.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +28 -0
 - data/doc/association_basics.rdoc +3 -3
 - data/doc/dataset_basics.rdoc +4 -4
 - data/doc/migration.rdoc +6 -5
 - data/doc/opening_databases.rdoc +8 -5
 - data/doc/release_notes/3.25.0.txt +88 -0
 - data/lib/sequel/adapters/jdbc.rb +2 -2
 - data/lib/sequel/adapters/jdbc/postgresql.rb +6 -0
 - data/lib/sequel/adapters/shared/postgres.rb +0 -5
 - data/lib/sequel/adapters/tinytds.rb +1 -2
 - data/lib/sequel/database/schema_generator.rb +6 -4
 - data/lib/sequel/database/schema_methods.rb +17 -6
 - data/lib/sequel/dataset.rb +8 -0
 - data/lib/sequel/dataset/misc.rb +0 -9
 - data/lib/sequel/dataset/query.rb +80 -21
 - data/lib/sequel/extensions/migration.rb +1 -1
 - data/lib/sequel/model/base.rb +15 -6
 - data/lib/sequel/model/errors.rb +1 -1
 - data/lib/sequel/plugins/association_pks.rb +16 -0
 - data/lib/sequel/plugins/update_primary_key.rb +1 -1
 - data/lib/sequel/version.rb +2 -2
 - data/spec/adapters/mysql_spec.rb +7 -0
 - data/spec/core/database_spec.rb +0 -295
 - data/spec/core/dataset_spec.rb +70 -1
 - data/spec/core/expression_filters_spec.rb +39 -0
 - data/spec/core/schema_spec.rb +304 -0
 - data/spec/core/spec_helper.rb +29 -0
 - data/spec/extensions/association_pks_spec.rb +31 -0
 - data/spec/extensions/schema_spec.rb +12 -20
 - data/spec/integration/dataset_test.rb +17 -0
 - data/spec/integration/prepared_statement_test.rb +15 -0
 - data/spec/model/model_spec.rb +60 -0
 - data/spec/model/plugins_spec.rb +17 -0
 - data/spec/model/validations_spec.rb +11 -0
 - metadata +7 -5
 
    
        data/spec/core/dataset_spec.rb
    CHANGED
    
    | 
         @@ -759,6 +759,11 @@ describe "Dataset#exclude" do 
     | 
|
| 
       759 
759 
     | 
    
         
             
                  "SELECT * FROM test WHERE (region != 'Asia')"
         
     | 
| 
       760 
760 
     | 
    
         
             
              end
         
     | 
| 
       761 
761 
     | 
    
         | 
| 
      
 762 
     | 
    
         
            +
              specify "should affect the having clause if having clause is already used" do
         
     | 
| 
      
 763 
     | 
    
         
            +
                @dataset.group_and_count(:name).having{count > 2}.exclude{count > 5}.sql.should ==
         
     | 
| 
      
 764 
     | 
    
         
            +
                  "SELECT name, count(*) AS count FROM test GROUP BY name HAVING ((count > 2) AND (count <= 5))"
         
     | 
| 
      
 765 
     | 
    
         
            +
              end
         
     | 
| 
      
 766 
     | 
    
         
            +
             
     | 
| 
       762 
767 
     | 
    
         
             
              specify "should take multiple conditions as a hash and express the logic correctly in SQL" do
         
     | 
| 
       763 
768 
     | 
    
         
             
                @dataset.exclude(:region => 'Asia', :name => 'Japan').select_sql.
         
     | 
| 
       764 
769 
     | 
    
         
             
                  should match(Regexp.union(/WHERE \(\(region != 'Asia'\) OR \(name != 'Japan'\)\)/,
         
     | 
| 
         @@ -793,6 +798,28 @@ describe "Dataset#exclude" do 
     | 
|
| 
       793 
798 
     | 
    
         
             
              end
         
     | 
| 
       794 
799 
     | 
    
         
             
            end
         
     | 
| 
       795 
800 
     | 
    
         | 
| 
      
 801 
     | 
    
         
            +
            describe "Dataset#exclude_where" do
         
     | 
| 
      
 802 
     | 
    
         
            +
              before do
         
     | 
| 
      
 803 
     | 
    
         
            +
                @dataset = Sequel::Dataset.new(nil).from(:test)
         
     | 
| 
      
 804 
     | 
    
         
            +
              end
         
     | 
| 
      
 805 
     | 
    
         
            +
             
     | 
| 
      
 806 
     | 
    
         
            +
              specify "should correctly negate the expression and add it to the where clause" do
         
     | 
| 
      
 807 
     | 
    
         
            +
                @dataset.exclude_where(:region=>'Asia').sql.should == "SELECT * FROM test WHERE (region != 'Asia')"
         
     | 
| 
      
 808 
     | 
    
         
            +
                @dataset.exclude_where(:region=>'Asia').exclude_where(:region=>'NA').sql.should == "SELECT * FROM test WHERE ((region != 'Asia') AND (region != 'NA'))"
         
     | 
| 
      
 809 
     | 
    
         
            +
              end
         
     | 
| 
      
 810 
     | 
    
         
            +
             
     | 
| 
      
 811 
     | 
    
         
            +
              specify "should affect the where clause even if having clause is already used" do
         
     | 
| 
      
 812 
     | 
    
         
            +
                @dataset.group_and_count(:name).having{count > 2}.exclude_where(:region=>'Asia').sql.should ==
         
     | 
| 
      
 813 
     | 
    
         
            +
                  "SELECT name, count(*) AS count FROM test WHERE (region != 'Asia') GROUP BY name HAVING (count > 2)"
         
     | 
| 
      
 814 
     | 
    
         
            +
              end
         
     | 
| 
      
 815 
     | 
    
         
            +
            end
         
     | 
| 
      
 816 
     | 
    
         
            +
             
     | 
| 
      
 817 
     | 
    
         
            +
            describe "Dataset#exclude_having" do
         
     | 
| 
      
 818 
     | 
    
         
            +
              specify "should correctly negate the expression and add it to the having clause" do
         
     | 
| 
      
 819 
     | 
    
         
            +
                Sequel::Dataset.new(nil).from(:test).exclude_having{count > 2}.exclude_having{count < 0}.sql.should == "SELECT * FROM test HAVING ((count <= 2) AND (count >= 0))"
         
     | 
| 
      
 820 
     | 
    
         
            +
              end
         
     | 
| 
      
 821 
     | 
    
         
            +
            end
         
     | 
| 
      
 822 
     | 
    
         
            +
             
     | 
| 
       796 
823 
     | 
    
         
             
            describe "Dataset#invert" do
         
     | 
| 
       797 
824 
     | 
    
         
             
              before do
         
     | 
| 
       798 
825 
     | 
    
         
             
                @d = Sequel::Dataset.new(nil).from(:test)
         
     | 
| 
         @@ -897,7 +924,7 @@ describe "Dataset#group_by" do 
     | 
|
| 
       897 
924 
     | 
    
         
             
                  "SELECT * FROM test GROUP BY (type_id IS NULL)"
         
     | 
| 
       898 
925 
     | 
    
         
             
              end
         
     | 
| 
       899 
926 
     | 
    
         | 
| 
       900 
     | 
    
         
            -
              specify "should ungroup when passed nil 
     | 
| 
      
 927 
     | 
    
         
            +
              specify "should ungroup when passed nil or no arguments" do
         
     | 
| 
       901 
928 
     | 
    
         
             
                @dataset.group_by.select_sql.should ==
         
     | 
| 
       902 
929 
     | 
    
         
             
                  "SELECT * FROM test"
         
     | 
| 
       903 
930 
     | 
    
         
             
                @dataset.group_by(nil).select_sql.should ==
         
     | 
| 
         @@ -915,6 +942,13 @@ describe "Dataset#group_by" do 
     | 
|
| 
       915 
942 
     | 
    
         
             
                @dataset.group(:type_id=>nil).select_sql.should ==
         
     | 
| 
       916 
943 
     | 
    
         
             
                  "SELECT * FROM test GROUP BY (type_id IS NULL)"
         
     | 
| 
       917 
944 
     | 
    
         
             
              end
         
     | 
| 
      
 945 
     | 
    
         
            +
             
     | 
| 
      
 946 
     | 
    
         
            +
              specify "should take a virtual row block" do
         
     | 
| 
      
 947 
     | 
    
         
            +
                @dataset.group{type_id > 1}.sql.should == "SELECT * FROM test GROUP BY (type_id > 1)"
         
     | 
| 
      
 948 
     | 
    
         
            +
                @dataset.group_by{type_id > 1}.sql.should == "SELECT * FROM test GROUP BY (type_id > 1)"
         
     | 
| 
      
 949 
     | 
    
         
            +
                @dataset.group{[type_id > 1, type_id < 2]}.sql.should == "SELECT * FROM test GROUP BY (type_id > 1), (type_id < 2)"
         
     | 
| 
      
 950 
     | 
    
         
            +
                @dataset.group(:foo){type_id > 1}.sql.should == "SELECT * FROM test GROUP BY foo, (type_id > 1)"
         
     | 
| 
      
 951 
     | 
    
         
            +
              end
         
     | 
| 
       918 
952 
     | 
    
         
             
            end
         
     | 
| 
       919 
953 
     | 
    
         | 
| 
       920 
954 
     | 
    
         
             
            describe "Dataset#as" do
         
     | 
| 
         @@ -1219,6 +1253,27 @@ describe "Dataset#select" do 
     | 
|
| 
       1219 
1253 
     | 
    
         
             
              end
         
     | 
| 
       1220 
1254 
     | 
    
         
             
            end
         
     | 
| 
       1221 
1255 
     | 
    
         | 
| 
      
 1256 
     | 
    
         
            +
            describe "Dataset#select_group" do
         
     | 
| 
      
 1257 
     | 
    
         
            +
              before do
         
     | 
| 
      
 1258 
     | 
    
         
            +
                @d = Sequel::Dataset.new(nil).from(:test)
         
     | 
| 
      
 1259 
     | 
    
         
            +
              end
         
     | 
| 
      
 1260 
     | 
    
         
            +
             
     | 
| 
      
 1261 
     | 
    
         
            +
              specify "should set both SELECT and GROUP" do
         
     | 
| 
      
 1262 
     | 
    
         
            +
                @d.select_group(:name).sql.should == 'SELECT name FROM test GROUP BY name'
         
     | 
| 
      
 1263 
     | 
    
         
            +
                @d.select_group(:a, :b__c, :d___e).sql.should == 'SELECT a, b.c, d AS e FROM test GROUP BY a, b.c, d'
         
     | 
| 
      
 1264 
     | 
    
         
            +
              end
         
     | 
| 
      
 1265 
     | 
    
         
            +
             
     | 
| 
      
 1266 
     | 
    
         
            +
              specify "should remove from both SELECT and GROUP if no arguments" do
         
     | 
| 
      
 1267 
     | 
    
         
            +
                @d.select_group(:name).select_group.sql.should == 'SELECT * FROM test'
         
     | 
| 
      
 1268 
     | 
    
         
            +
              end
         
     | 
| 
      
 1269 
     | 
    
         
            +
             
     | 
| 
      
 1270 
     | 
    
         
            +
              specify "should accept virtual row blocks" do
         
     | 
| 
      
 1271 
     | 
    
         
            +
                @d.select_group{name}.sql.should == 'SELECT name FROM test GROUP BY name'
         
     | 
| 
      
 1272 
     | 
    
         
            +
                @d.select_group{[name, f(v).as(a)]}.sql.should == 'SELECT name, f(v) AS a FROM test GROUP BY name, f(v)'
         
     | 
| 
      
 1273 
     | 
    
         
            +
                @d.select_group(:name){f(v).as(a)}.sql.should == 'SELECT name, f(v) AS a FROM test GROUP BY name, f(v)'
         
     | 
| 
      
 1274 
     | 
    
         
            +
              end
         
     | 
| 
      
 1275 
     | 
    
         
            +
            end
         
     | 
| 
      
 1276 
     | 
    
         
            +
              
         
     | 
| 
       1222 
1277 
     | 
    
         
             
            describe "Dataset#select_all" do
         
     | 
| 
       1223 
1278 
     | 
    
         
             
              before do
         
     | 
| 
       1224 
1279 
     | 
    
         
             
                @d = Sequel::Dataset.new(nil).from(:test)
         
     | 
| 
         @@ -1231,6 +1286,14 @@ describe "Dataset#select_all" do 
     | 
|
| 
       1231 
1286 
     | 
    
         
             
              specify "should overrun the previous select option" do
         
     | 
| 
       1232 
1287 
     | 
    
         
             
                @d.select!(:a, :b, :c).select_all.sql.should == 'SELECT * FROM test'
         
     | 
| 
       1233 
1288 
     | 
    
         
             
              end
         
     | 
| 
      
 1289 
     | 
    
         
            +
             
     | 
| 
      
 1290 
     | 
    
         
            +
              specify "should select all columns in a table if given an argument" do
         
     | 
| 
      
 1291 
     | 
    
         
            +
                @d.select_all(:test).sql.should == 'SELECT test.* FROM test'
         
     | 
| 
      
 1292 
     | 
    
         
            +
              end
         
     | 
| 
      
 1293 
     | 
    
         
            +
              
         
     | 
| 
      
 1294 
     | 
    
         
            +
              specify "should select all columns all tables if given a multiple arguments" do
         
     | 
| 
      
 1295 
     | 
    
         
            +
                @d.select_all(:test, :foo).sql.should == 'SELECT test.*, foo.* FROM test'
         
     | 
| 
      
 1296 
     | 
    
         
            +
              end
         
     | 
| 
       1234 
1297 
     | 
    
         
             
            end
         
     | 
| 
       1235 
1298 
     | 
    
         | 
| 
       1236 
1299 
     | 
    
         
             
            describe "Dataset#select_more" do
         
     | 
| 
         @@ -1774,6 +1837,12 @@ describe "Dataset#group_and_count" do 
     | 
|
| 
       1774 
1837 
     | 
    
         
             
                @ds.group_and_count(:name.identifier.as(:n)).sql.should ==
         
     | 
| 
       1775 
1838 
     | 
    
         
             
                  "SELECT name AS n, count(*) AS count FROM test GROUP BY name"
         
     | 
| 
       1776 
1839 
     | 
    
         
             
              end
         
     | 
| 
      
 1840 
     | 
    
         
            +
             
     | 
| 
      
 1841 
     | 
    
         
            +
              specify "should take a virtual row block" do
         
     | 
| 
      
 1842 
     | 
    
         
            +
                @ds.group_and_count{(type_id > 1).as(t)}.sql.should == "SELECT (type_id > 1) AS t, count(*) AS count FROM test GROUP BY (type_id > 1)"
         
     | 
| 
      
 1843 
     | 
    
         
            +
                @ds.group_and_count{[(type_id > 1).as(t), type_id < 2]}.sql.should == "SELECT (type_id > 1) AS t, (type_id < 2), count(*) AS count FROM test GROUP BY (type_id > 1), (type_id < 2)"
         
     | 
| 
      
 1844 
     | 
    
         
            +
                @ds.group_and_count(:foo){type_id > 1}.sql.should == "SELECT foo, (type_id > 1), count(*) AS count FROM test GROUP BY foo, (type_id > 1)"
         
     | 
| 
      
 1845 
     | 
    
         
            +
              end
         
     | 
| 
       1777 
1846 
     | 
    
         
             
            end
         
     | 
| 
       1778 
1847 
     | 
    
         | 
| 
       1779 
1848 
     | 
    
         
             
            describe "Dataset#empty?" do
         
     | 
| 
         @@ -452,6 +452,45 @@ describe "Blockless Ruby Filters" do 
     | 
|
| 
       452 
452 
     | 
    
         
             
                e2 = ~:comment.like('%:hidden:%')
         
     | 
| 
       453 
453 
     | 
    
         
             
                e1.should == e2
         
     | 
| 
       454 
454 
     | 
    
         
             
              end
         
     | 
| 
      
 455 
     | 
    
         
            +
             
     | 
| 
      
 456 
     | 
    
         
            +
              it "should support expression filter methods on Datasets" do
         
     | 
| 
      
 457 
     | 
    
         
            +
                d = @d.select(:a)
         
     | 
| 
      
 458 
     | 
    
         
            +
             
     | 
| 
      
 459 
     | 
    
         
            +
                @d.lit(d + 1).should == '((SELECT a FROM items) + 1)'
         
     | 
| 
      
 460 
     | 
    
         
            +
                @d.lit(d - 1).should == '((SELECT a FROM items) - 1)'
         
     | 
| 
      
 461 
     | 
    
         
            +
                @d.lit(d * 1).should == '((SELECT a FROM items) * 1)'
         
     | 
| 
      
 462 
     | 
    
         
            +
                @d.lit(d / 1).should == '((SELECT a FROM items) / 1)'
         
     | 
| 
      
 463 
     | 
    
         
            +
             
     | 
| 
      
 464 
     | 
    
         
            +
                @d.lit(d => 1).should == '((SELECT a FROM items) = 1)'
         
     | 
| 
      
 465 
     | 
    
         
            +
                @d.lit(~{d => 1}).should == '((SELECT a FROM items) != 1)'
         
     | 
| 
      
 466 
     | 
    
         
            +
                @d.lit(d > 1).should == '((SELECT a FROM items) > 1)'
         
     | 
| 
      
 467 
     | 
    
         
            +
                @d.lit(d < 1).should == '((SELECT a FROM items) < 1)'
         
     | 
| 
      
 468 
     | 
    
         
            +
                @d.lit(d >= 1).should == '((SELECT a FROM items) >= 1)'
         
     | 
| 
      
 469 
     | 
    
         
            +
                @d.lit(d <= 1).should == '((SELECT a FROM items) <= 1)'
         
     | 
| 
      
 470 
     | 
    
         
            +
             
     | 
| 
      
 471 
     | 
    
         
            +
                @d.lit(d.as(:b)).should == '(SELECT a FROM items) AS b'
         
     | 
| 
      
 472 
     | 
    
         
            +
             
     | 
| 
      
 473 
     | 
    
         
            +
                @d.lit(d & :b).should == '((SELECT a FROM items) AND b)'
         
     | 
| 
      
 474 
     | 
    
         
            +
                @d.lit(d | :b).should == '((SELECT a FROM items) OR b)'
         
     | 
| 
      
 475 
     | 
    
         
            +
                @d.lit(~d).should == 'NOT (SELECT a FROM items)'
         
     | 
| 
      
 476 
     | 
    
         
            +
             
     | 
| 
      
 477 
     | 
    
         
            +
                @d.lit(d.cast(Integer)).should == 'CAST((SELECT a FROM items) AS integer)'
         
     | 
| 
      
 478 
     | 
    
         
            +
                @d.lit(d.cast_numeric).should == 'CAST((SELECT a FROM items) AS integer)'
         
     | 
| 
      
 479 
     | 
    
         
            +
                @d.lit(d.cast_string).should == 'CAST((SELECT a FROM items) AS varchar(255))'
         
     | 
| 
      
 480 
     | 
    
         
            +
                @d.lit(d.cast_numeric << :b).should == '(CAST((SELECT a FROM items) AS integer) << b)'
         
     | 
| 
      
 481 
     | 
    
         
            +
                @d.lit(d.cast_string + :b).should == '(CAST((SELECT a FROM items) AS varchar(255)) || b)'
         
     | 
| 
      
 482 
     | 
    
         
            +
             
     | 
| 
      
 483 
     | 
    
         
            +
                @d.lit(d.extract(:year)).should == 'extract(year FROM (SELECT a FROM items))'
         
     | 
| 
      
 484 
     | 
    
         
            +
                @d.lit(d.sql_boolean & :b).should == '((SELECT a FROM items) AND b)'
         
     | 
| 
      
 485 
     | 
    
         
            +
                @d.lit(d.sql_number << :b).should == '((SELECT a FROM items) << b)'
         
     | 
| 
      
 486 
     | 
    
         
            +
                @d.lit(d.sql_string + :b).should == '((SELECT a FROM items) || b)'
         
     | 
| 
      
 487 
     | 
    
         
            +
             
     | 
| 
      
 488 
     | 
    
         
            +
                @d.lit(d.asc).should == '(SELECT a FROM items) ASC'
         
     | 
| 
      
 489 
     | 
    
         
            +
                @d.lit(d.desc).should == '(SELECT a FROM items) DESC'
         
     | 
| 
      
 490 
     | 
    
         
            +
             
     | 
| 
      
 491 
     | 
    
         
            +
                @d.lit(d.like(:b)).should == '((SELECT a FROM items) LIKE b)'
         
     | 
| 
      
 492 
     | 
    
         
            +
                @d.lit(d.ilike(:b)).should == '((SELECT a FROM items) ILIKE b)'
         
     | 
| 
      
 493 
     | 
    
         
            +
              end
         
     | 
| 
       455 
494 
     | 
    
         | 
| 
       456 
495 
     | 
    
         
             
              if RUBY_VERSION < '1.9.0'
         
     | 
| 
       457 
496 
     | 
    
         
             
                it "should not allow inequality operations on true, false, or nil" do
         
     | 
    
        data/spec/core/schema_spec.rb
    CHANGED
    
    | 
         @@ -594,6 +594,16 @@ describe "DB#drop_table" do 
     | 
|
| 
       594 
594 
     | 
    
         
             
                @db.drop_table :cats
         
     | 
| 
       595 
595 
     | 
    
         
             
                @db.sqls.should == ['DROP TABLE cats']
         
     | 
| 
       596 
596 
     | 
    
         
             
              end
         
     | 
| 
      
 597 
     | 
    
         
            +
             
     | 
| 
      
 598 
     | 
    
         
            +
              specify "should drop multiple tables at once" do
         
     | 
| 
      
 599 
     | 
    
         
            +
                @db.drop_table :cats, :dogs
         
     | 
| 
      
 600 
     | 
    
         
            +
                @db.sqls.should == ['DROP TABLE cats', 'DROP TABLE dogs']
         
     | 
| 
      
 601 
     | 
    
         
            +
              end
         
     | 
| 
      
 602 
     | 
    
         
            +
             
     | 
| 
      
 603 
     | 
    
         
            +
              specify "should take an options hash and support the :cascade option" do
         
     | 
| 
      
 604 
     | 
    
         
            +
                @db.drop_table :cats, :dogs, :cascade=>true
         
     | 
| 
      
 605 
     | 
    
         
            +
                @db.sqls.should == ['DROP TABLE cats CASCADE', 'DROP TABLE dogs CASCADE']
         
     | 
| 
      
 606 
     | 
    
         
            +
              end
         
     | 
| 
       597 
607 
     | 
    
         
             
            end
         
     | 
| 
       598 
608 
     | 
    
         | 
| 
       599 
609 
     | 
    
         
             
            describe "DB#alter_table" do
         
     | 
| 
         @@ -722,6 +732,13 @@ describe "DB#alter_table" do 
     | 
|
| 
       722 
732 
     | 
    
         
             
                @db.sqls.should == ["ALTER TABLE cats DROP COLUMN score"]
         
     | 
| 
       723 
733 
     | 
    
         
             
              end
         
     | 
| 
       724 
734 
     | 
    
         | 
| 
      
 735 
     | 
    
         
            +
              specify "should support drop_column with :cascade=>true option" do
         
     | 
| 
      
 736 
     | 
    
         
            +
                @db.alter_table(:cats) do
         
     | 
| 
      
 737 
     | 
    
         
            +
                  drop_column :score, :cascade=>true
         
     | 
| 
      
 738 
     | 
    
         
            +
                end
         
     | 
| 
      
 739 
     | 
    
         
            +
                @db.sqls.should == ["ALTER TABLE cats DROP COLUMN score CASCADE"]
         
     | 
| 
      
 740 
     | 
    
         
            +
              end
         
     | 
| 
      
 741 
     | 
    
         
            +
             
     | 
| 
       725 
742 
     | 
    
         
             
              specify "should support drop_constraint" do
         
     | 
| 
       726 
743 
     | 
    
         
             
                @db.alter_table(:cats) do
         
     | 
| 
       727 
744 
     | 
    
         
             
                  drop_constraint :valid_score
         
     | 
| 
         @@ -729,6 +746,13 @@ describe "DB#alter_table" do 
     | 
|
| 
       729 
746 
     | 
    
         
             
                @db.sqls.should == ["ALTER TABLE cats DROP CONSTRAINT valid_score"]
         
     | 
| 
       730 
747 
     | 
    
         
             
              end
         
     | 
| 
       731 
748 
     | 
    
         | 
| 
      
 749 
     | 
    
         
            +
              specify "should support drop_constraint with :cascade=>true option" do
         
     | 
| 
      
 750 
     | 
    
         
            +
                @db.alter_table(:cats) do
         
     | 
| 
      
 751 
     | 
    
         
            +
                  drop_constraint :valid_score, :cascade=>true
         
     | 
| 
      
 752 
     | 
    
         
            +
                end
         
     | 
| 
      
 753 
     | 
    
         
            +
                @db.sqls.should == ["ALTER TABLE cats DROP CONSTRAINT valid_score CASCADE"]
         
     | 
| 
      
 754 
     | 
    
         
            +
              end
         
     | 
| 
      
 755 
     | 
    
         
            +
             
     | 
| 
       732 
756 
     | 
    
         
             
              specify "should support drop_index" do
         
     | 
| 
       733 
757 
     | 
    
         
             
                @db.alter_table(:cats) do
         
     | 
| 
       734 
758 
     | 
    
         
             
                  drop_index :name
         
     | 
| 
         @@ -776,6 +800,286 @@ describe "DB#alter_table" do 
     | 
|
| 
       776 
800 
     | 
    
         
             
              end
         
     | 
| 
       777 
801 
     | 
    
         
             
            end
         
     | 
| 
       778 
802 
     | 
    
         | 
| 
      
 803 
     | 
    
         
            +
            describe "Database#create_table" do
         
     | 
| 
      
 804 
     | 
    
         
            +
              before do
         
     | 
| 
      
 805 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 806 
     | 
    
         
            +
              end
         
     | 
| 
      
 807 
     | 
    
         
            +
              
         
     | 
| 
      
 808 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 809 
     | 
    
         
            +
                @db.create_table :test do
         
     | 
| 
      
 810 
     | 
    
         
            +
                  primary_key :id, :integer, :null => false
         
     | 
| 
      
 811 
     | 
    
         
            +
                  column :name, :text
         
     | 
| 
      
 812 
     | 
    
         
            +
                  index :name, :unique => true
         
     | 
| 
      
 813 
     | 
    
         
            +
                end
         
     | 
| 
      
 814 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 815 
     | 
    
         
            +
                  'CREATE TABLE test (id integer NOT NULL PRIMARY KEY AUTOINCREMENT, name text)',
         
     | 
| 
      
 816 
     | 
    
         
            +
                  'CREATE UNIQUE INDEX test_name_index ON test (name)'
         
     | 
| 
      
 817 
     | 
    
         
            +
                ]
         
     | 
| 
      
 818 
     | 
    
         
            +
              end
         
     | 
| 
      
 819 
     | 
    
         
            +
              
         
     | 
| 
      
 820 
     | 
    
         
            +
              specify "should create a temporary table" do
         
     | 
| 
      
 821 
     | 
    
         
            +
                @db.create_table :test_tmp, :temp => true do
         
     | 
| 
      
 822 
     | 
    
         
            +
                  primary_key :id, :integer, :null => false
         
     | 
| 
      
 823 
     | 
    
         
            +
                  column :name, :text
         
     | 
| 
      
 824 
     | 
    
         
            +
                  index :name, :unique => true
         
     | 
| 
      
 825 
     | 
    
         
            +
                end
         
     | 
| 
      
 826 
     | 
    
         
            +
                
         
     | 
| 
      
 827 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 828 
     | 
    
         
            +
                  'CREATE TEMPORARY TABLE test_tmp (id integer NOT NULL PRIMARY KEY AUTOINCREMENT, name text)',
         
     | 
| 
      
 829 
     | 
    
         
            +
                  'CREATE UNIQUE INDEX test_tmp_name_index ON test_tmp (name)'
         
     | 
| 
      
 830 
     | 
    
         
            +
                ]
         
     | 
| 
      
 831 
     | 
    
         
            +
              end
         
     | 
| 
      
 832 
     | 
    
         
            +
             
     | 
| 
      
 833 
     | 
    
         
            +
              specify "should not use default schema when creating a temporary table" do
         
     | 
| 
      
 834 
     | 
    
         
            +
                @db.default_schema = :foo
         
     | 
| 
      
 835 
     | 
    
         
            +
                @db.create_table :test_tmp, :temp => true do
         
     | 
| 
      
 836 
     | 
    
         
            +
                  column :name, :text
         
     | 
| 
      
 837 
     | 
    
         
            +
                end
         
     | 
| 
      
 838 
     | 
    
         
            +
                @db.sqls.should == ['CREATE TEMPORARY TABLE test_tmp (name text)']
         
     | 
| 
      
 839 
     | 
    
         
            +
              end
         
     | 
| 
      
 840 
     | 
    
         
            +
            end
         
     | 
| 
      
 841 
     | 
    
         
            +
             
     | 
| 
      
 842 
     | 
    
         
            +
            describe "Database#alter_table" do
         
     | 
| 
      
 843 
     | 
    
         
            +
              before do
         
     | 
| 
      
 844 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 845 
     | 
    
         
            +
              end
         
     | 
| 
      
 846 
     | 
    
         
            +
              
         
     | 
| 
      
 847 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 848 
     | 
    
         
            +
                @db.alter_table :xyz do
         
     | 
| 
      
 849 
     | 
    
         
            +
                  add_column :aaa, :text, :null => false, :unique => true
         
     | 
| 
      
 850 
     | 
    
         
            +
                  drop_column :bbb
         
     | 
| 
      
 851 
     | 
    
         
            +
                  rename_column :ccc, :ddd
         
     | 
| 
      
 852 
     | 
    
         
            +
                  set_column_type :eee, :integer
         
     | 
| 
      
 853 
     | 
    
         
            +
                  set_column_default :hhh, 'abcd'
         
     | 
| 
      
 854 
     | 
    
         
            +
                  
         
     | 
| 
      
 855 
     | 
    
         
            +
                  add_index :fff, :unique => true
         
     | 
| 
      
 856 
     | 
    
         
            +
                  drop_index :ggg
         
     | 
| 
      
 857 
     | 
    
         
            +
                end
         
     | 
| 
      
 858 
     | 
    
         
            +
                
         
     | 
| 
      
 859 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 860 
     | 
    
         
            +
                  'ALTER TABLE xyz ADD COLUMN aaa text NOT NULL UNIQUE',
         
     | 
| 
      
 861 
     | 
    
         
            +
                  'ALTER TABLE xyz DROP COLUMN bbb',
         
     | 
| 
      
 862 
     | 
    
         
            +
                  'ALTER TABLE xyz RENAME COLUMN ccc TO ddd',
         
     | 
| 
      
 863 
     | 
    
         
            +
                  'ALTER TABLE xyz ALTER COLUMN eee TYPE integer',
         
     | 
| 
      
 864 
     | 
    
         
            +
                  "ALTER TABLE xyz ALTER COLUMN hhh SET DEFAULT 'abcd'",
         
     | 
| 
      
 865 
     | 
    
         
            +
                  
         
     | 
| 
      
 866 
     | 
    
         
            +
                  'CREATE UNIQUE INDEX xyz_fff_index ON xyz (fff)',
         
     | 
| 
      
 867 
     | 
    
         
            +
                  'DROP INDEX xyz_ggg_index'
         
     | 
| 
      
 868 
     | 
    
         
            +
                ]
         
     | 
| 
      
 869 
     | 
    
         
            +
              end
         
     | 
| 
      
 870 
     | 
    
         
            +
            end
         
     | 
| 
      
 871 
     | 
    
         
            +
             
     | 
| 
      
 872 
     | 
    
         
            +
            describe "Database#add_column" do
         
     | 
| 
      
 873 
     | 
    
         
            +
              before do
         
     | 
| 
      
 874 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 875 
     | 
    
         
            +
              end
         
     | 
| 
      
 876 
     | 
    
         
            +
              
         
     | 
| 
      
 877 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 878 
     | 
    
         
            +
                @db.add_column :test, :name, :text, :unique => true
         
     | 
| 
      
 879 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 880 
     | 
    
         
            +
                  'ALTER TABLE test ADD COLUMN name text UNIQUE'
         
     | 
| 
      
 881 
     | 
    
         
            +
                ]
         
     | 
| 
      
 882 
     | 
    
         
            +
              end
         
     | 
| 
      
 883 
     | 
    
         
            +
            end
         
     | 
| 
      
 884 
     | 
    
         
            +
             
     | 
| 
      
 885 
     | 
    
         
            +
            describe "Database#drop_column" do
         
     | 
| 
      
 886 
     | 
    
         
            +
              before do
         
     | 
| 
      
 887 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 888 
     | 
    
         
            +
              end
         
     | 
| 
      
 889 
     | 
    
         
            +
              
         
     | 
| 
      
 890 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 891 
     | 
    
         
            +
                @db.drop_column :test, :name
         
     | 
| 
      
 892 
     | 
    
         
            +
                @db.sqls.should == ['ALTER TABLE test DROP COLUMN name']
         
     | 
| 
      
 893 
     | 
    
         
            +
              end
         
     | 
| 
      
 894 
     | 
    
         
            +
              
         
     | 
| 
      
 895 
     | 
    
         
            +
              specify "should use CASCADE for :cascade=>true option" do
         
     | 
| 
      
 896 
     | 
    
         
            +
                @db.drop_column :test, :name, :cascade=>true
         
     | 
| 
      
 897 
     | 
    
         
            +
                @db.sqls.should == ['ALTER TABLE test DROP COLUMN name CASCADE']
         
     | 
| 
      
 898 
     | 
    
         
            +
              end
         
     | 
| 
      
 899 
     | 
    
         
            +
            end
         
     | 
| 
      
 900 
     | 
    
         
            +
             
     | 
| 
      
 901 
     | 
    
         
            +
            describe "Database#rename_column" do
         
     | 
| 
      
 902 
     | 
    
         
            +
              before do
         
     | 
| 
      
 903 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 904 
     | 
    
         
            +
              end
         
     | 
| 
      
 905 
     | 
    
         
            +
              
         
     | 
| 
      
 906 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 907 
     | 
    
         
            +
                @db.rename_column :test, :abc, :def
         
     | 
| 
      
 908 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 909 
     | 
    
         
            +
                  'ALTER TABLE test RENAME COLUMN abc TO def'
         
     | 
| 
      
 910 
     | 
    
         
            +
                ]
         
     | 
| 
      
 911 
     | 
    
         
            +
              end
         
     | 
| 
      
 912 
     | 
    
         
            +
            end
         
     | 
| 
      
 913 
     | 
    
         
            +
             
     | 
| 
      
 914 
     | 
    
         
            +
            describe "Database#set_column_type" do
         
     | 
| 
      
 915 
     | 
    
         
            +
              before do
         
     | 
| 
      
 916 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 917 
     | 
    
         
            +
              end
         
     | 
| 
      
 918 
     | 
    
         
            +
              
         
     | 
| 
      
 919 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 920 
     | 
    
         
            +
                @db.set_column_type :test, :name, :integer
         
     | 
| 
      
 921 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 922 
     | 
    
         
            +
                  'ALTER TABLE test ALTER COLUMN name TYPE integer'
         
     | 
| 
      
 923 
     | 
    
         
            +
                ]
         
     | 
| 
      
 924 
     | 
    
         
            +
              end
         
     | 
| 
      
 925 
     | 
    
         
            +
            end
         
     | 
| 
      
 926 
     | 
    
         
            +
             
     | 
| 
      
 927 
     | 
    
         
            +
            describe "Database#set_column_default" do
         
     | 
| 
      
 928 
     | 
    
         
            +
              before do
         
     | 
| 
      
 929 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 930 
     | 
    
         
            +
              end
         
     | 
| 
      
 931 
     | 
    
         
            +
              
         
     | 
| 
      
 932 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 933 
     | 
    
         
            +
                @db.set_column_default :test, :name, 'zyx'
         
     | 
| 
      
 934 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 935 
     | 
    
         
            +
                  "ALTER TABLE test ALTER COLUMN name SET DEFAULT 'zyx'"
         
     | 
| 
      
 936 
     | 
    
         
            +
                ]
         
     | 
| 
      
 937 
     | 
    
         
            +
              end
         
     | 
| 
      
 938 
     | 
    
         
            +
            end
         
     | 
| 
      
 939 
     | 
    
         
            +
             
     | 
| 
      
 940 
     | 
    
         
            +
            describe "Database#add_index" do
         
     | 
| 
      
 941 
     | 
    
         
            +
              before do
         
     | 
| 
      
 942 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 943 
     | 
    
         
            +
              end
         
     | 
| 
      
 944 
     | 
    
         
            +
              
         
     | 
| 
      
 945 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 946 
     | 
    
         
            +
                @db.add_index :test, :name, :unique => true
         
     | 
| 
      
 947 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 948 
     | 
    
         
            +
                  'CREATE UNIQUE INDEX test_name_index ON test (name)'
         
     | 
| 
      
 949 
     | 
    
         
            +
                ]
         
     | 
| 
      
 950 
     | 
    
         
            +
              end
         
     | 
| 
      
 951 
     | 
    
         
            +
              
         
     | 
| 
      
 952 
     | 
    
         
            +
              specify "should accept multiple columns" do
         
     | 
| 
      
 953 
     | 
    
         
            +
                @db.add_index :test, [:one, :two]
         
     | 
| 
      
 954 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 955 
     | 
    
         
            +
                  'CREATE INDEX test_one_two_index ON test (one, two)'
         
     | 
| 
      
 956 
     | 
    
         
            +
                ]
         
     | 
| 
      
 957 
     | 
    
         
            +
              end
         
     | 
| 
      
 958 
     | 
    
         
            +
            end
         
     | 
| 
      
 959 
     | 
    
         
            +
             
     | 
| 
      
 960 
     | 
    
         
            +
            describe "Database#drop_index" do
         
     | 
| 
      
 961 
     | 
    
         
            +
              before do
         
     | 
| 
      
 962 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 963 
     | 
    
         
            +
              end
         
     | 
| 
      
 964 
     | 
    
         
            +
              
         
     | 
| 
      
 965 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 966 
     | 
    
         
            +
                @db.drop_index :test, :name
         
     | 
| 
      
 967 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 968 
     | 
    
         
            +
                  'DROP INDEX test_name_index'
         
     | 
| 
      
 969 
     | 
    
         
            +
                ]
         
     | 
| 
      
 970 
     | 
    
         
            +
              end
         
     | 
| 
      
 971 
     | 
    
         
            +
              
         
     | 
| 
      
 972 
     | 
    
         
            +
            end
         
     | 
| 
      
 973 
     | 
    
         
            +
             
     | 
| 
      
 974 
     | 
    
         
            +
            describe "Database#drop_table" do
         
     | 
| 
      
 975 
     | 
    
         
            +
              before do
         
     | 
| 
      
 976 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 977 
     | 
    
         
            +
              end
         
     | 
| 
      
 978 
     | 
    
         
            +
              
         
     | 
| 
      
 979 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 980 
     | 
    
         
            +
                @db.drop_table :test
         
     | 
| 
      
 981 
     | 
    
         
            +
                @db.sqls.should == ['DROP TABLE test']
         
     | 
| 
      
 982 
     | 
    
         
            +
              end
         
     | 
| 
      
 983 
     | 
    
         
            +
              
         
     | 
| 
      
 984 
     | 
    
         
            +
              specify "should accept multiple table names" do
         
     | 
| 
      
 985 
     | 
    
         
            +
                @db.drop_table :a, :bb, :ccc
         
     | 
| 
      
 986 
     | 
    
         
            +
                @db.sqls.should == [
         
     | 
| 
      
 987 
     | 
    
         
            +
                  'DROP TABLE a',
         
     | 
| 
      
 988 
     | 
    
         
            +
                  'DROP TABLE bb',
         
     | 
| 
      
 989 
     | 
    
         
            +
                  'DROP TABLE ccc'
         
     | 
| 
      
 990 
     | 
    
         
            +
                ]
         
     | 
| 
      
 991 
     | 
    
         
            +
              end
         
     | 
| 
      
 992 
     | 
    
         
            +
            end
         
     | 
| 
      
 993 
     | 
    
         
            +
             
     | 
| 
      
 994 
     | 
    
         
            +
            describe "Database#rename_table" do
         
     | 
| 
      
 995 
     | 
    
         
            +
              before do
         
     | 
| 
      
 996 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 997 
     | 
    
         
            +
              end
         
     | 
| 
      
 998 
     | 
    
         
            +
              
         
     | 
| 
      
 999 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 1000 
     | 
    
         
            +
                @db.rename_table :abc, :xyz
         
     | 
| 
      
 1001 
     | 
    
         
            +
                @db.sqls.should == ['ALTER TABLE abc RENAME TO xyz']
         
     | 
| 
      
 1002 
     | 
    
         
            +
              end
         
     | 
| 
      
 1003 
     | 
    
         
            +
            end
         
     | 
| 
      
 1004 
     | 
    
         
            +
             
     | 
| 
      
 1005 
     | 
    
         
            +
            describe "Database#create_view" do
         
     | 
| 
      
 1006 
     | 
    
         
            +
              before do
         
     | 
| 
      
 1007 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 1008 
     | 
    
         
            +
              end
         
     | 
| 
      
 1009 
     | 
    
         
            +
              
         
     | 
| 
      
 1010 
     | 
    
         
            +
              specify "should construct proper SQL with raw SQL" do
         
     | 
| 
      
 1011 
     | 
    
         
            +
                @db.create_view :test, "SELECT * FROM xyz"
         
     | 
| 
      
 1012 
     | 
    
         
            +
                @db.sqls.should == ['CREATE VIEW test AS SELECT * FROM xyz']
         
     | 
| 
      
 1013 
     | 
    
         
            +
                @db.sqls.clear
         
     | 
| 
      
 1014 
     | 
    
         
            +
                @db.create_view :test.identifier, "SELECT * FROM xyz"
         
     | 
| 
      
 1015 
     | 
    
         
            +
                @db.sqls.should == ['CREATE VIEW test AS SELECT * FROM xyz']
         
     | 
| 
      
 1016 
     | 
    
         
            +
              end
         
     | 
| 
      
 1017 
     | 
    
         
            +
              
         
     | 
| 
      
 1018 
     | 
    
         
            +
              specify "should construct proper SQL with dataset" do
         
     | 
| 
      
 1019 
     | 
    
         
            +
                @db.create_view :test, @db[:items].select(:a, :b).order(:c)
         
     | 
| 
      
 1020 
     | 
    
         
            +
                @db.sqls.should == ['CREATE VIEW test AS SELECT a, b FROM items ORDER BY c']
         
     | 
| 
      
 1021 
     | 
    
         
            +
                @db.sqls.clear
         
     | 
| 
      
 1022 
     | 
    
         
            +
                @db.create_view :test.qualify(:sch), @db[:items].select(:a, :b).order(:c)
         
     | 
| 
      
 1023 
     | 
    
         
            +
                @db.sqls.should == ['CREATE VIEW sch.test AS SELECT a, b FROM items ORDER BY c']
         
     | 
| 
      
 1024 
     | 
    
         
            +
              end
         
     | 
| 
      
 1025 
     | 
    
         
            +
            end
         
     | 
| 
      
 1026 
     | 
    
         
            +
             
     | 
| 
      
 1027 
     | 
    
         
            +
            describe "Database#create_or_replace_view" do
         
     | 
| 
      
 1028 
     | 
    
         
            +
              before do
         
     | 
| 
      
 1029 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 1030 
     | 
    
         
            +
              end
         
     | 
| 
      
 1031 
     | 
    
         
            +
              
         
     | 
| 
      
 1032 
     | 
    
         
            +
              specify "should construct proper SQL with raw SQL" do
         
     | 
| 
      
 1033 
     | 
    
         
            +
                @db.create_or_replace_view :test, "SELECT * FROM xyz"
         
     | 
| 
      
 1034 
     | 
    
         
            +
                @db.sqls.should == ['CREATE OR REPLACE VIEW test AS SELECT * FROM xyz']
         
     | 
| 
      
 1035 
     | 
    
         
            +
                @db.sqls.clear
         
     | 
| 
      
 1036 
     | 
    
         
            +
                @db.create_or_replace_view :sch__test, "SELECT * FROM xyz"
         
     | 
| 
      
 1037 
     | 
    
         
            +
                @db.sqls.should == ['CREATE OR REPLACE VIEW sch.test AS SELECT * FROM xyz']
         
     | 
| 
      
 1038 
     | 
    
         
            +
              end
         
     | 
| 
      
 1039 
     | 
    
         
            +
             
     | 
| 
      
 1040 
     | 
    
         
            +
              specify "should construct proper SQL with dataset" do
         
     | 
| 
      
 1041 
     | 
    
         
            +
                @db.create_or_replace_view :test, @db[:items].select(:a, :b).order(:c)
         
     | 
| 
      
 1042 
     | 
    
         
            +
                @db.sqls.should == ['CREATE OR REPLACE VIEW test AS SELECT a, b FROM items ORDER BY c']
         
     | 
| 
      
 1043 
     | 
    
         
            +
                @db.sqls.clear
         
     | 
| 
      
 1044 
     | 
    
         
            +
                @db.create_or_replace_view :test.identifier, @db[:items].select(:a, :b).order(:c)
         
     | 
| 
      
 1045 
     | 
    
         
            +
                @db.sqls.should == ['CREATE OR REPLACE VIEW test AS SELECT a, b FROM items ORDER BY c']
         
     | 
| 
      
 1046 
     | 
    
         
            +
              end
         
     | 
| 
      
 1047 
     | 
    
         
            +
            end
         
     | 
| 
      
 1048 
     | 
    
         
            +
             
     | 
| 
      
 1049 
     | 
    
         
            +
            describe "Database#drop_view" do
         
     | 
| 
      
 1050 
     | 
    
         
            +
              before do
         
     | 
| 
      
 1051 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 1052 
     | 
    
         
            +
              end
         
     | 
| 
      
 1053 
     | 
    
         
            +
              
         
     | 
| 
      
 1054 
     | 
    
         
            +
              specify "should construct proper SQL" do
         
     | 
| 
      
 1055 
     | 
    
         
            +
                @db.drop_view :test
         
     | 
| 
      
 1056 
     | 
    
         
            +
                @db.drop_view :test.identifier
         
     | 
| 
      
 1057 
     | 
    
         
            +
                @db.drop_view :sch__test
         
     | 
| 
      
 1058 
     | 
    
         
            +
                @db.drop_view :test.qualify(:sch)
         
     | 
| 
      
 1059 
     | 
    
         
            +
                @db.sqls.should == ['DROP VIEW test', 'DROP VIEW test', 'DROP VIEW sch.test', 'DROP VIEW sch.test']
         
     | 
| 
      
 1060 
     | 
    
         
            +
              end
         
     | 
| 
      
 1061 
     | 
    
         
            +
             
     | 
| 
      
 1062 
     | 
    
         
            +
              specify "should drop multiple views at once" do
         
     | 
| 
      
 1063 
     | 
    
         
            +
                @db.drop_view :cats, :dogs
         
     | 
| 
      
 1064 
     | 
    
         
            +
                @db.sqls.should == ['DROP VIEW cats', 'DROP VIEW dogs']
         
     | 
| 
      
 1065 
     | 
    
         
            +
              end
         
     | 
| 
      
 1066 
     | 
    
         
            +
             
     | 
| 
      
 1067 
     | 
    
         
            +
              specify "should take an options hash and support the :cascade option" do
         
     | 
| 
      
 1068 
     | 
    
         
            +
                @db.drop_view :cats, :dogs, :cascade=>true
         
     | 
| 
      
 1069 
     | 
    
         
            +
                @db.sqls.should == ['DROP VIEW cats CASCADE', 'DROP VIEW dogs CASCADE']
         
     | 
| 
      
 1070 
     | 
    
         
            +
              end
         
     | 
| 
      
 1071 
     | 
    
         
            +
            end
         
     | 
| 
      
 1072 
     | 
    
         
            +
             
     | 
| 
      
 1073 
     | 
    
         
            +
            describe "Database#alter_table_sql" do
         
     | 
| 
      
 1074 
     | 
    
         
            +
              before do
         
     | 
| 
      
 1075 
     | 
    
         
            +
                @db = DummyDatabase.new
         
     | 
| 
      
 1076 
     | 
    
         
            +
              end
         
     | 
| 
      
 1077 
     | 
    
         
            +
              
         
     | 
| 
      
 1078 
     | 
    
         
            +
              specify "should raise error for an invalid op" do
         
     | 
| 
      
 1079 
     | 
    
         
            +
                proc {@db.send(:alter_table_sql, :mau, :op => :blah)}.should raise_error(Sequel::Error)
         
     | 
| 
      
 1080 
     | 
    
         
            +
              end
         
     | 
| 
      
 1081 
     | 
    
         
            +
            end
         
     | 
| 
      
 1082 
     | 
    
         
            +
             
     | 
| 
       779 
1083 
     | 
    
         
             
            describe "Schema Parser" do
         
     | 
| 
       780 
1084 
     | 
    
         
             
              before do
         
     | 
| 
       781 
1085 
     | 
    
         
             
                @sqls = []
         
     |