baza 0.0.14 → 0.0.15
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.
- checksums.yaml +4 -4
 - data/README.md +58 -13
 - data/VERSION +1 -1
 - data/baza.gemspec +15 -3
 - data/include/db.rb +871 -865
 - data/include/drivers/mysql/mysql.rb +104 -297
 - data/include/drivers/mysql/mysql_column.rb +133 -0
 - data/include/drivers/mysql/mysql_columns.rb +4 -127
 - data/include/drivers/mysql/mysql_index.rb +76 -0
 - data/include/drivers/mysql/mysql_indexes.rb +0 -73
 - data/include/drivers/mysql/mysql_result.rb +42 -0
 - data/include/drivers/mysql/mysql_result_java.rb +61 -0
 - data/include/drivers/mysql/mysql_result_mysql2.rb +26 -0
 - data/include/drivers/mysql/mysql_result_unbuffered.rb +72 -0
 - data/include/drivers/mysql/mysql_sqlspecs.rb +1 -1
 - data/include/drivers/mysql/mysql_table.rb +361 -0
 - data/include/drivers/mysql/mysql_tables.rb +23 -381
 - data/include/drivers/sqlite3/libknjdb_java_sqlite3.rb +17 -22
 - data/include/drivers/sqlite3/libknjdb_sqlite3_ironruby.rb +13 -13
 - data/include/drivers/sqlite3/sqlite3.rb +39 -105
 - data/include/drivers/sqlite3/sqlite3_column.rb +146 -0
 - data/include/drivers/sqlite3/sqlite3_columns.rb +17 -149
 - data/include/drivers/sqlite3/sqlite3_index.rb +55 -0
 - data/include/drivers/sqlite3/sqlite3_indexes.rb +0 -52
 - data/include/drivers/sqlite3/sqlite3_result.rb +35 -0
 - data/include/drivers/sqlite3/sqlite3_result_java.rb +39 -0
 - data/include/drivers/sqlite3/sqlite3_table.rb +399 -0
 - data/include/drivers/sqlite3/sqlite3_tables.rb +7 -403
 - data/include/idquery.rb +19 -19
 - data/include/model.rb +139 -139
 - data/include/model_handler_sqlhelper.rb +74 -74
 - data/spec/support/driver_columns_collection.rb +17 -0
 - metadata +14 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: fd02457700f9360c5cef41f8b101fa297016136e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 66949e26d04439be674b2cdd908c613753c5e26d
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 13fdc63c67474ad44f1ba5b029046246d9339a5bfff7cdcdfb9761f3ebff42df0599d85f03409be4ed9e947613565dca672e9e0e679b0d5fbc3bda07f2c4c4cb
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 28472e1d5af9ab5763a15f0dd8f3b33761948d167b572f06fa084e17d882eea51c262e3d0acf16cb736fd4824cce2974d2bbd3b7d37c9efffec4ea1cbd009bc7
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -71,7 +71,7 @@ db.update(:users, {name: "Kasper Johansen"}, {name: "Kasper"}) 
     | 
|
| 
       71 
71 
     | 
    
         | 
| 
       72 
72 
     | 
    
         
             
            ### Delete
         
     | 
| 
       73 
73 
     | 
    
         
             
            ```ruby
         
     | 
| 
       74 
     | 
    
         
            -
            db.delete(:users,  
     | 
| 
      
 74 
     | 
    
         
            +
            db.delete(:users, name: "Kasper")
         
     | 
| 
       75 
75 
     | 
    
         
             
            ```
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
            ### Upsert
         
     | 
| 
         @@ -85,11 +85,11 @@ db.upsert(:users, {name: "Kasper"}, {age: 27}) 
     | 
|
| 
       85 
85 
     | 
    
         
             
            ### Table creation
         
     | 
| 
       86 
86 
     | 
    
         
             
            ```ruby
         
     | 
| 
       87 
87 
     | 
    
         
             
            db.tables.create(:users, {
         
     | 
| 
       88 
     | 
    
         
            -
              : 
     | 
| 
       89 
     | 
    
         
            -
                {: 
     | 
| 
       90 
     | 
    
         
            -
                {: 
     | 
| 
      
 88 
     | 
    
         
            +
              columns: [
         
     | 
| 
      
 89 
     | 
    
         
            +
                {name: :id, type: :int, autoincr: true, primarykey: true},
         
     | 
| 
      
 90 
     | 
    
         
            +
                {name: :name, type: :varchar}
         
     | 
| 
       91 
91 
     | 
    
         
             
              ],
         
     | 
| 
       92 
     | 
    
         
            -
              : 
     | 
| 
      
 92 
     | 
    
         
            +
              indexes: [
         
     | 
| 
       93 
93 
     | 
    
         
             
                :name
         
     | 
| 
       94 
94 
     | 
    
         
             
              ]
         
     | 
| 
       95 
95 
     | 
    
         
             
            })
         
     | 
| 
         @@ -119,6 +119,16 @@ table = db.tables[:users] 
     | 
|
| 
       119 
119 
     | 
    
         
             
            table.rename(:new_table_name)
         
     | 
| 
       120 
120 
     | 
    
         
             
            ```
         
     | 
| 
       121 
121 
     | 
    
         | 
| 
      
 122 
     | 
    
         
            +
            ### Table optimizing
         
     | 
| 
      
 123 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 124 
     | 
    
         
            +
            table.optimize
         
     | 
| 
      
 125 
     | 
    
         
            +
            ```
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
            ### Table rows counting
         
     | 
| 
      
 128 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 129 
     | 
    
         
            +
            table.rows_count
         
     | 
| 
      
 130 
     | 
    
         
            +
            ```
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
       122 
132 
     | 
    
         
             
            ### Column listing
         
     | 
| 
       123 
133 
     | 
    
         
             
            ```ruby
         
     | 
| 
       124 
134 
     | 
    
         
             
            table = db.tables[:users]
         
     | 
| 
         @@ -127,14 +137,47 @@ cols = table.columns 
     | 
|
| 
       127 
137 
     | 
    
         | 
| 
       128 
138 
     | 
    
         
             
            Or a specific column:
         
     | 
| 
       129 
139 
     | 
    
         
             
            ```ruby
         
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
            puts "Column: #{ 
     | 
| 
      
 140 
     | 
    
         
            +
            column = table.column(:id)
         
     | 
| 
      
 141 
     | 
    
         
            +
            puts "Column: #{column.name} #{column.type}(#{column.maxlength})"
         
     | 
| 
      
 142 
     | 
    
         
            +
            puts "Default: #{column.default}"
         
     | 
| 
      
 143 
     | 
    
         
            +
            ```
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
            ### Column altering
         
     | 
| 
      
 146 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 147 
     | 
    
         
            +
            column.change(name: "newname", type: :varchar, default: "")
         
     | 
| 
      
 148 
     | 
    
         
            +
            ```
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
            ### Drop column
         
     | 
| 
      
 151 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 152 
     | 
    
         
            +
            column.drop
         
     | 
| 
      
 153 
     | 
    
         
            +
            ```
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
            ### Get an index by name
         
     | 
| 
      
 156 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 157 
     | 
    
         
            +
            index = table.index("index_name")
         
     | 
| 
      
 158 
     | 
    
         
            +
            ```
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
            ### Rename index
         
     | 
| 
      
 161 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 162 
     | 
    
         
            +
            index.rename("new name")
         
     | 
| 
      
 163 
     | 
    
         
            +
            ```
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
            ### Dropping an index
         
     | 
| 
      
 166 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 167 
     | 
    
         
            +
            index.drop
         
     | 
| 
      
 168 
     | 
    
         
            +
            ```
         
     | 
| 
      
 169 
     | 
    
         
            +
             
     | 
| 
      
 170 
     | 
    
         
            +
            ### Getting various data from an index
         
     | 
| 
      
 171 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 172 
     | 
    
         
            +
            puts "Unique: #{index.unique?}"
         
     | 
| 
      
 173 
     | 
    
         
            +
            puts "Primary: #{index.primary?}"
         
     | 
| 
      
 174 
     | 
    
         
            +
            puts "Table: #{index.table}"
         
     | 
| 
       132 
175 
     | 
    
         
             
            ```
         
     | 
| 
       133 
176 
     | 
    
         | 
| 
       134 
177 
     | 
    
         
             
            ## Copying databases
         
     | 
| 
       135 
178 
     | 
    
         
             
            ```ruby
         
     | 
| 
       136 
     | 
    
         
            -
            db_mysql = Baza::Db.new(: 
     | 
| 
       137 
     | 
    
         
            -
            db_sqlite = Baza::Db.new(: 
     | 
| 
      
 179 
     | 
    
         
            +
            db_mysql = Baza::Db.new(type: :mysql, subtype: :mysql2, ...)
         
     | 
| 
      
 180 
     | 
    
         
            +
            db_sqlite = Baza::Db.new(type: :sqlite3, path: ...)
         
     | 
| 
       138 
181 
     | 
    
         | 
| 
       139 
182 
     | 
    
         
             
            db_mysql.copy_to(db_sqlite)
         
     | 
| 
       140 
183 
     | 
    
         
             
            ```
         
     | 
| 
         @@ -142,7 +185,7 @@ db_mysql.copy_to(db_sqlite) 
     | 
|
| 
       142 
185 
     | 
    
         
             
            ## Dumping SQL to an IO
         
     | 
| 
       143 
186 
     | 
    
         
             
            ```ruby
         
     | 
| 
       144 
187 
     | 
    
         
             
            db = Baza::Db.new(...)
         
     | 
| 
       145 
     | 
    
         
            -
            dump = Baza::Dump.new(: 
     | 
| 
      
 188 
     | 
    
         
            +
            dump = Baza::Dump.new(db: db)
         
     | 
| 
       146 
189 
     | 
    
         
             
            str_io = StringIO.new
         
     | 
| 
       147 
190 
     | 
    
         
             
            dump.dump(str_io)
         
     | 
| 
       148 
191 
     | 
    
         
             
            ```
         
     | 
| 
         @@ -151,17 +194,19 @@ dump.dump(str_io) 
     | 
|
| 
       151 
194 
     | 
    
         
             
            ```ruby
         
     | 
| 
       152 
195 
     | 
    
         
             
            db.transaction do
         
     | 
| 
       153 
196 
     | 
    
         
             
              1000.times do
         
     | 
| 
       154 
     | 
    
         
            -
                db.insert(:users,  
     | 
| 
      
 197 
     | 
    
         
            +
                db.insert(:users, name: "Kasper")
         
     | 
| 
       155 
198 
     | 
    
         
             
              end
         
     | 
| 
       156 
199 
     | 
    
         
             
            end
         
     | 
| 
       157 
200 
     | 
    
         
             
            ```
         
     | 
| 
       158 
201 
     | 
    
         | 
| 
       159 
202 
     | 
    
         
             
            ## Query Buffer
         
     | 
| 
       160 
     | 
    
         
            -
            In order to speed things up, but without using transactions directly, you can use a query buffer. This stores various instructions in memory and flushes them every now and then through transactions or intelligent queries (like multi-insertion). The drawback is that it will not be possible to test the queries for errors before a flush is executed and it wont be possible to read results  
     | 
| 
      
 203 
     | 
    
         
            +
            In order to speed things up, but without using transactions directly, you can use a query buffer. This stores various instructions in memory and flushes them every now and then through transactions or intelligent queries (like multi-insertion). The drawback is that it will not be possible to test the queries for errors before a flush is executed and it wont be possible to read results from any of the queries.
         
     | 
| 
      
 204 
     | 
    
         
            +
             
     | 
| 
      
 205 
     | 
    
         
            +
            It is fairly simple do:
         
     | 
| 
       161 
206 
     | 
    
         
             
            ```ruby
         
     | 
| 
       162 
207 
     | 
    
         
             
            db.q_buffer do |buffer|
         
     | 
| 
       163 
208 
     | 
    
         
             
              100_000.times do |count|
         
     | 
| 
       164 
     | 
    
         
            -
                buffer.insert(:table_name,  
     | 
| 
      
 209 
     | 
    
         
            +
                buffer.insert(:table_name, name: "Kasper #{count}")
         
     | 
| 
       165 
210 
     | 
    
         | 
| 
       166 
211 
     | 
    
         
             
                buffer.query("UPDATE table SET ...")
         
     | 
| 
       167 
212 
     | 
    
         
             
                buffer.query("DELETE FROM table WHERE ...")
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.0.15
         
     | 
    
        data/baza.gemspec
    CHANGED
    
    | 
         @@ -2,16 +2,16 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            # DO NOT EDIT THIS FILE DIRECTLY
         
     | 
| 
       3 
3 
     | 
    
         
             
            # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
         
     | 
| 
       4 
4 
     | 
    
         
             
            # -*- encoding: utf-8 -*-
         
     | 
| 
       5 
     | 
    
         
            -
            # stub: baza 0.0. 
     | 
| 
      
 5 
     | 
    
         
            +
            # stub: baza 0.0.15 ruby lib
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       8 
8 
     | 
    
         
             
              s.name = "baza"
         
     | 
| 
       9 
     | 
    
         
            -
              s.version = "0.0. 
     | 
| 
      
 9 
     | 
    
         
            +
              s.version = "0.0.15"
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.authors = ["Kasper Johansen"]
         
     | 
| 
       14 
     | 
    
         
            -
              s.date = " 
     | 
| 
      
 14 
     | 
    
         
            +
              s.date = "2015-03-17"
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.description = "A database abstraction layer, model framework and database framework."
         
     | 
| 
       16 
16 
     | 
    
         
             
              s.email = "kj@gfish.com"
         
     | 
| 
       17 
17 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
         @@ -33,16 +33,28 @@ Gem::Specification.new do |s| 
     | 
|
| 
       33 
33 
     | 
    
         
             
                "include/driver.rb",
         
     | 
| 
       34 
34 
     | 
    
         
             
                "include/drivers/active_record/active_record.rb",
         
     | 
| 
       35 
35 
     | 
    
         
             
                "include/drivers/mysql/mysql.rb",
         
     | 
| 
      
 36 
     | 
    
         
            +
                "include/drivers/mysql/mysql_column.rb",
         
     | 
| 
       36 
37 
     | 
    
         
             
                "include/drivers/mysql/mysql_columns.rb",
         
     | 
| 
      
 38 
     | 
    
         
            +
                "include/drivers/mysql/mysql_index.rb",
         
     | 
| 
       37 
39 
     | 
    
         
             
                "include/drivers/mysql/mysql_indexes.rb",
         
     | 
| 
      
 40 
     | 
    
         
            +
                "include/drivers/mysql/mysql_result.rb",
         
     | 
| 
      
 41 
     | 
    
         
            +
                "include/drivers/mysql/mysql_result_java.rb",
         
     | 
| 
      
 42 
     | 
    
         
            +
                "include/drivers/mysql/mysql_result_mysql2.rb",
         
     | 
| 
      
 43 
     | 
    
         
            +
                "include/drivers/mysql/mysql_result_unbuffered.rb",
         
     | 
| 
       38 
44 
     | 
    
         
             
                "include/drivers/mysql/mysql_sqlspecs.rb",
         
     | 
| 
      
 45 
     | 
    
         
            +
                "include/drivers/mysql/mysql_table.rb",
         
     | 
| 
       39 
46 
     | 
    
         
             
                "include/drivers/mysql/mysql_tables.rb",
         
     | 
| 
       40 
47 
     | 
    
         
             
                "include/drivers/sqlite3/libknjdb_java_sqlite3.rb",
         
     | 
| 
       41 
48 
     | 
    
         
             
                "include/drivers/sqlite3/libknjdb_sqlite3_ironruby.rb",
         
     | 
| 
       42 
49 
     | 
    
         
             
                "include/drivers/sqlite3/sqlite3.rb",
         
     | 
| 
      
 50 
     | 
    
         
            +
                "include/drivers/sqlite3/sqlite3_column.rb",
         
     | 
| 
       43 
51 
     | 
    
         
             
                "include/drivers/sqlite3/sqlite3_columns.rb",
         
     | 
| 
      
 52 
     | 
    
         
            +
                "include/drivers/sqlite3/sqlite3_index.rb",
         
     | 
| 
       44 
53 
     | 
    
         
             
                "include/drivers/sqlite3/sqlite3_indexes.rb",
         
     | 
| 
      
 54 
     | 
    
         
            +
                "include/drivers/sqlite3/sqlite3_result.rb",
         
     | 
| 
      
 55 
     | 
    
         
            +
                "include/drivers/sqlite3/sqlite3_result_java.rb",
         
     | 
| 
       45 
56 
     | 
    
         
             
                "include/drivers/sqlite3/sqlite3_sqlspecs.rb",
         
     | 
| 
      
 57 
     | 
    
         
            +
                "include/drivers/sqlite3/sqlite3_table.rb",
         
     | 
| 
       46 
58 
     | 
    
         
             
                "include/drivers/sqlite3/sqlite3_tables.rb",
         
     | 
| 
       47 
59 
     | 
    
         
             
                "include/dump.rb",
         
     | 
| 
       48 
60 
     | 
    
         
             
                "include/idquery.rb",
         
     |