activerecord 2.3.2 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activerecord might be problematic. Click here for more details.

Files changed (55) hide show
  1. data/CHANGELOG +11 -0
  2. data/Rakefile +10 -10
  3. data/lib/active_record/associations.rb +67 -30
  4. data/lib/active_record/associations/association_collection.rb +9 -5
  5. data/lib/active_record/associations/association_proxy.rb +2 -2
  6. data/lib/active_record/associations/belongs_to_association.rb +22 -4
  7. data/lib/active_record/associations/belongs_to_polymorphic_association.rb +5 -1
  8. data/lib/active_record/associations/has_one_through_association.rb +8 -8
  9. data/lib/active_record/autosave_association.rb +11 -6
  10. data/lib/active_record/base.rb +16 -21
  11. data/lib/active_record/batches.rb +23 -15
  12. data/lib/active_record/calculations.rb +5 -13
  13. data/lib/active_record/connection_adapters/postgresql_adapter.rb +66 -22
  14. data/lib/active_record/connection_adapters/sqlite_adapter.rb +3 -0
  15. data/lib/active_record/fixtures.rb +5 -4
  16. data/lib/active_record/named_scope.rb +2 -2
  17. data/lib/active_record/schema_dumper.rb +5 -1
  18. data/lib/active_record/serialization.rb +3 -2
  19. data/lib/active_record/serializers/json_serializer.rb +8 -18
  20. data/lib/active_record/session_store.rb +9 -1
  21. data/lib/active_record/timestamp.rb +39 -9
  22. data/lib/active_record/validations.rb +1 -1
  23. data/lib/active_record/version.rb +1 -1
  24. data/test/cases/associations/belongs_to_associations_test.rb +102 -4
  25. data/test/cases/associations/eager_test.rb +12 -0
  26. data/test/cases/associations/has_many_associations_test.rb +6 -0
  27. data/test/cases/associations/has_one_through_associations_test.rb +8 -1
  28. data/test/cases/associations/inner_join_association_test.rb +5 -0
  29. data/test/cases/autosave_association_test.rb +22 -0
  30. data/test/cases/base_test.rb +2 -2
  31. data/test/cases/calculations_test.rb +8 -14
  32. data/test/cases/copy_table_test_sqlite.rb +5 -5
  33. data/test/cases/finder_test.rb +6 -0
  34. data/test/cases/fixtures_test.rb +5 -0
  35. data/test/cases/helper.rb +1 -2
  36. data/test/cases/json_serialization_test.rb +57 -57
  37. data/test/cases/method_scoping_test.rb +13 -3
  38. data/test/cases/reflection_test.rb +5 -5
  39. data/test/cases/schema_dumper_test.rb +17 -7
  40. data/test/cases/schema_test_postgresql.rb +76 -0
  41. data/test/cases/timestamp_test.rb +75 -0
  42. data/test/debug.log +415 -0
  43. data/test/fixtures/fixture_database.sqlite3 +0 -0
  44. data/test/fixtures/fixture_database_2.sqlite3 +0 -0
  45. data/test/models/author.rb +4 -0
  46. data/test/models/company.rb +7 -7
  47. data/test/models/developer.rb +10 -0
  48. data/test/models/essay.rb +3 -0
  49. data/test/models/pet.rb +1 -1
  50. data/test/models/project.rb +1 -1
  51. data/test/models/reply.rb +2 -1
  52. data/test/models/topic.rb +1 -0
  53. data/test/models/toy.rb +2 -0
  54. data/test/schema/schema.rb +15 -0
  55. metadata +6 -3
@@ -591,6 +591,16 @@ class DefaultScopingTest < ActiveRecord::TestCase
591
591
  assert_equal expected, received
592
592
  end
593
593
 
594
+ def test_default_scope_with_conditions_string
595
+ assert_equal Developer.find_all_by_name('David').map(&:id).sort, DeveloperCalledDavid.all.map(&:id).sort
596
+ assert_equal nil, DeveloperCalledDavid.create!.name
597
+ end
598
+
599
+ def test_default_scope_with_conditions_hash
600
+ assert_equal Developer.find_all_by_name('Jamis').map(&:id).sort, DeveloperCalledJamis.all.map(&:id).sort
601
+ assert_equal 'Jamis', DeveloperCalledJamis.create!.name
602
+ end
603
+
594
604
  def test_default_scoping_with_threads
595
605
  scope = [{ :create => {}, :find => { :order => 'salary DESC' } }]
596
606
 
@@ -628,9 +638,9 @@ class DefaultScopingTest < ActiveRecord::TestCase
628
638
  assert_equal expected, received
629
639
  end
630
640
 
631
- def test_named_scope
632
- expected = Developer.find(:all, :order => 'salary DESC, name DESC').collect { |dev| dev.salary }
633
- received = DeveloperOrderedBySalary.by_name.find(:all).collect { |dev| dev.salary }
641
+ def test_named_scope_overwrites_default
642
+ expected = Developer.find(:all, :order => 'name DESC').collect { |dev| dev.name }
643
+ received = DeveloperOrderedBySalary.by_name.find(:all).collect { |dev| dev.name }
634
644
  assert_equal expected, received
635
645
  end
636
646
 
@@ -21,25 +21,25 @@ class ReflectionTest < ActiveRecord::TestCase
21
21
 
22
22
  def test_read_attribute_names
23
23
  assert_equal(
24
- %w( id title author_name author_email_address bonus_time written_on last_read content approved replies_count parent_id type ).sort,
24
+ %w( id title author_name author_email_address bonus_time written_on last_read content approved replies_count parent_id parent_title type ).sort,
25
25
  @first.attribute_names
26
26
  )
27
27
  end
28
28
 
29
29
  def test_columns
30
- assert_equal 12, Topic.columns.length
30
+ assert_equal 13, Topic.columns.length
31
31
  end
32
32
 
33
33
  def test_columns_are_returned_in_the_order_they_were_declared
34
34
  column_names = Topic.columns.map { |column| column.name }
35
- assert_equal %w(id title author_name author_email_address written_on bonus_time last_read content approved replies_count parent_id type), column_names
35
+ assert_equal %w(id title author_name author_email_address written_on bonus_time last_read content approved replies_count parent_id parent_title type), column_names
36
36
  end
37
37
 
38
38
  def test_content_columns
39
39
  content_columns = Topic.content_columns
40
40
  content_column_names = content_columns.map {|column| column.name}
41
- assert_equal 8, content_columns.length
42
- assert_equal %w(title author_name author_email_address written_on bonus_time last_read content approved).sort, content_column_names.sort
41
+ assert_equal 9, content_columns.length
42
+ assert_equal %w(title author_name author_email_address written_on bonus_time last_read content approved parent_title).sort, content_column_names.sort
43
43
  end
44
44
 
45
45
  def test_column_string_type_and_limit
@@ -22,6 +22,11 @@ class SchemaDumperTest < ActiveRecord::TestCase
22
22
  assert_no_match %r{create_table "sqlite_sequence"}, output
23
23
  end
24
24
 
25
+ def test_schema_dump_includes_camelcase_table_name
26
+ output = standard_dump
27
+ assert_match %r{create_table "CamelCase"}, output
28
+ end
29
+
25
30
  def assert_line_up(lines, pattern, required = false)
26
31
  return assert(true) if lines.empty?
27
32
  matches = lines.map { |line| line.match(pattern) }
@@ -147,19 +152,24 @@ class SchemaDumperTest < ActiveRecord::TestCase
147
152
  end
148
153
  end
149
154
 
155
+ def test_schema_dumps_index_columns_in_right_order
156
+ index_definition = standard_dump.split(/\n/).grep(/add_index.*companies/).first.strip
157
+ assert_equal 'add_index "companies", ["firm_id", "type", "rating", "ruby_type"], :name => "company_index"', index_definition
158
+ end
159
+
160
+ def test_schema_dump_should_honor_nonstandard_primary_keys
161
+ output = standard_dump
162
+ match = output.match(%r{create_table "movies"(.*)do})
163
+ assert_not_nil(match, "nonstandardpk table not found")
164
+ assert_match %r(:primary_key => "movieid"), match[1], "non-standard primary key not preserved"
165
+ end
166
+
150
167
  if current_adapter?(:MysqlAdapter)
151
168
  def test_schema_dump_should_not_add_default_value_for_mysql_text_field
152
169
  output = standard_dump
153
170
  assert_match %r{t.text\s+"body",\s+:null => false$}, output
154
171
  end
155
172
 
156
- def test_mysql_schema_dump_should_honor_nonstandard_primary_keys
157
- output = standard_dump
158
- match = output.match(%r{create_table "movies"(.*)do})
159
- assert_not_nil(match, "nonstandardpk table not found")
160
- assert_match %r(:primary_key => "movieid"), match[1], "non-standard primary key not preserved"
161
- end
162
-
163
173
  def test_schema_dump_includes_length_for_mysql_blob_and_text_fields
164
174
  output = standard_dump
165
175
  assert_match %r{t.binary\s+"tiny_blob",\s+:limit => 255$}, output
@@ -6,6 +6,7 @@ class SchemaTest < ActiveRecord::TestCase
6
6
  SCHEMA_NAME = 'test_schema'
7
7
  SCHEMA2_NAME = 'test_schema2'
8
8
  TABLE_NAME = 'things'
9
+ CAPITALIZED_TABLE_NAME = 'Things'
9
10
  INDEX_A_NAME = 'a_index_things_on_name'
10
11
  INDEX_B_NAME = 'b_index_things_on_different_columns_in_each_schema'
11
12
  INDEX_A_COLUMN = 'name'
@@ -18,9 +19,27 @@ class SchemaTest < ActiveRecord::TestCase
18
19
  'moment timestamp without time zone default now()'
19
20
  ]
20
21
 
22
+ class Thing1 < ActiveRecord::Base
23
+ set_table_name "test_schema.things"
24
+ end
25
+
26
+ class Thing2 < ActiveRecord::Base
27
+ set_table_name "test_schema2.things"
28
+ end
29
+
30
+ class Thing3 < ActiveRecord::Base
31
+ set_table_name 'test_schema."things.table"'
32
+ end
33
+
34
+ class Thing4 < ActiveRecord::Base
35
+ set_table_name 'test_schema."Things"'
36
+ end
37
+
21
38
  def setup
22
39
  @connection = ActiveRecord::Base.connection
23
40
  @connection.execute "CREATE SCHEMA #{SCHEMA_NAME} CREATE TABLE #{TABLE_NAME} (#{COLUMNS.join(',')})"
41
+ @connection.execute "CREATE TABLE #{SCHEMA_NAME}.\"#{TABLE_NAME}.table\" (#{COLUMNS.join(',')})"
42
+ @connection.execute "CREATE TABLE #{SCHEMA_NAME}.\"#{CAPITALIZED_TABLE_NAME}\" (#{COLUMNS.join(',')})"
24
43
  @connection.execute "CREATE SCHEMA #{SCHEMA2_NAME} CREATE TABLE #{TABLE_NAME} (#{COLUMNS.join(',')})"
25
44
  @connection.execute "CREATE INDEX #{INDEX_A_NAME} ON #{SCHEMA_NAME}.#{TABLE_NAME} USING btree (#{INDEX_A_COLUMN});"
26
45
  @connection.execute "CREATE INDEX #{INDEX_A_NAME} ON #{SCHEMA2_NAME}.#{TABLE_NAME} USING btree (#{INDEX_A_COLUMN});"
@@ -39,6 +58,12 @@ class SchemaTest < ActiveRecord::TestCase
39
58
  end
40
59
  end
41
60
 
61
+ def test_with_schema_prefixed_capitalized_table_name
62
+ assert_nothing_raised do
63
+ assert_equal COLUMNS, columns("#{SCHEMA_NAME}.#{CAPITALIZED_TABLE_NAME}")
64
+ end
65
+ end
66
+
42
67
  def test_with_schema_search_path
43
68
  assert_nothing_raised do
44
69
  with_schema_search_path(SCHEMA_NAME) do
@@ -47,6 +72,47 @@ class SchemaTest < ActiveRecord::TestCase
47
72
  end
48
73
  end
49
74
 
75
+
76
+ def test_proper_encoding_of_table_name
77
+ assert_equal '"table_name"', @connection.quote_table_name('table_name')
78
+ assert_equal '"table.name"', @connection.quote_table_name('"table.name"')
79
+ assert_equal '"schema_name"."table_name"', @connection.quote_table_name('schema_name.table_name')
80
+ assert_equal '"schema_name"."table.name"', @connection.quote_table_name('schema_name."table.name"')
81
+ assert_equal '"schema.name"."table_name"', @connection.quote_table_name('"schema.name".table_name')
82
+ assert_equal '"schema.name"."table.name"', @connection.quote_table_name('"schema.name"."table.name"')
83
+ end
84
+
85
+ def test_classes_with_qualified_schema_name
86
+ assert_equal 0, Thing1.count
87
+ assert_equal 0, Thing2.count
88
+ assert_equal 0, Thing3.count
89
+ assert_equal 0, Thing4.count
90
+
91
+ Thing1.create(:id => 1, :name => "thing1", :email => "thing1@localhost", :moment => Time.now)
92
+ assert_equal 1, Thing1.count
93
+ assert_equal 0, Thing2.count
94
+ assert_equal 0, Thing3.count
95
+ assert_equal 0, Thing4.count
96
+
97
+ Thing2.create(:id => 1, :name => "thing1", :email => "thing1@localhost", :moment => Time.now)
98
+ assert_equal 1, Thing1.count
99
+ assert_equal 1, Thing2.count
100
+ assert_equal 0, Thing3.count
101
+ assert_equal 0, Thing4.count
102
+
103
+ Thing3.create(:id => 1, :name => "thing1", :email => "thing1@localhost", :moment => Time.now)
104
+ assert_equal 1, Thing1.count
105
+ assert_equal 1, Thing2.count
106
+ assert_equal 1, Thing3.count
107
+ assert_equal 0, Thing4.count
108
+
109
+ Thing4.create(:id => 1, :name => "thing1", :email => "thing1@localhost", :moment => Time.now)
110
+ assert_equal 1, Thing1.count
111
+ assert_equal 1, Thing2.count
112
+ assert_equal 1, Thing3.count
113
+ assert_equal 1, Thing4.count
114
+ end
115
+
50
116
  def test_raise_on_unquoted_schema_name
51
117
  assert_raise(ActiveRecord::StatementInvalid) do
52
118
  with_schema_search_path '$user,public'
@@ -69,6 +135,16 @@ class SchemaTest < ActiveRecord::TestCase
69
135
  do_dump_index_tests_for_schema(SCHEMA2_NAME, INDEX_A_COLUMN, INDEX_B_COLUMN_S2)
70
136
  end
71
137
 
138
+ def test_with_uppercase_index_name
139
+ ActiveRecord::Base.connection.execute "CREATE INDEX \"things_Index\" ON #{SCHEMA_NAME}.things (name)"
140
+ assert_nothing_raised { ActiveRecord::Base.connection.remove_index :things, :name => "#{SCHEMA_NAME}.things_Index"}
141
+
142
+ ActiveRecord::Base.connection.execute "CREATE INDEX \"things_Index\" ON #{SCHEMA_NAME}.things (name)"
143
+ ActiveRecord::Base.connection.schema_search_path = SCHEMA_NAME
144
+ assert_nothing_raised { ActiveRecord::Base.connection.remove_index :things, :name => "things_Index"}
145
+ ActiveRecord::Base.connection.schema_search_path = "public"
146
+ end
147
+
72
148
  private
73
149
  def columns(table_name)
74
150
  @connection.send(:column_definitions, table_name).map do |name, type, default|
@@ -0,0 +1,75 @@
1
+ require 'cases/helper'
2
+ require 'models/developer'
3
+ require 'models/owner'
4
+ require 'models/pet'
5
+
6
+ class TimestampTest < ActiveRecord::TestCase
7
+ fixtures :developers, :owners, :pets
8
+
9
+ def setup
10
+ @developer = Developer.first
11
+ @previously_updated_at = @developer.updated_at
12
+ end
13
+
14
+ def test_saving_a_changed_record_updates_its_timestamp
15
+ @developer.name = "Jack Bauer"
16
+ @developer.save!
17
+
18
+ assert @previously_updated_at != @developer.updated_at
19
+ end
20
+
21
+ def test_saving_a_unchanged_record_doesnt_update_its_timestamp
22
+ @developer.save!
23
+
24
+ assert @previously_updated_at == @developer.updated_at
25
+ end
26
+
27
+ def test_touching_a_record_updates_its_timestamp
28
+ @developer.touch
29
+
30
+ assert @previously_updated_at != @developer.updated_at
31
+ end
32
+
33
+ def test_touching_a_different_attribute
34
+ previously_created_at = @developer.created_at
35
+ @developer.touch(:created_at)
36
+
37
+ assert previously_created_at != @developer.created_at
38
+ end
39
+
40
+ def test_saving_a_record_with_a_belongs_to_that_specifies_touching_the_parent_should_update_the_parent_updated_at
41
+ pet = Pet.first
42
+ owner = pet.owner
43
+ previously_owner_updated_at = owner.updated_at
44
+
45
+ pet.name = "Fluffy the Third"
46
+ pet.save
47
+
48
+ assert previously_owner_updated_at != pet.owner.updated_at
49
+ end
50
+
51
+ def test_destroying_a_record_with_a_belongs_to_that_specifies_touching_the_parent_should_update_the_parent_updated_at
52
+ pet = Pet.first
53
+ owner = pet.owner
54
+ previously_owner_updated_at = owner.updated_at
55
+
56
+ pet.destroy
57
+
58
+ assert previously_owner_updated_at != pet.owner.updated_at
59
+ end
60
+
61
+ def test_saving_a_record_with_a_belongs_to_that_specifies_touching_a_specific_attribute_the_parent_should_update_that_attribute
62
+ Pet.belongs_to :owner, :touch => :happy_at
63
+
64
+ pet = Pet.first
65
+ owner = pet.owner
66
+ previously_owner_happy_at = owner.happy_at
67
+
68
+ pet.name = "Fluffy the Third"
69
+ pet.save
70
+
71
+ assert previously_owner_happy_at != pet.owner.happy_at
72
+ ensure
73
+ Pet.belongs_to :owner, :touch => true
74
+ end
75
+ end
@@ -0,0 +1,415 @@
1
+ # Logfile created on Mon Feb 23 11:47:55 +0100 2009 by /
2
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
3
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
4
+ Post Load (1.1ms) SELECT * FROM "posts" ORDER BY id asc
5
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
6
+ SQL (2.8ms)  SELECT name
7
+ FROM sqlite_master
8
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
9
+ 
10
+ SQL (2.5ms)  SELECT name
11
+ FROM sqlite_master
12
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
13
+ 
14
+ SQL (2.4ms)  SELECT name
15
+ FROM sqlite_master
16
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
17
+ 
18
+ SQL (2.4ms)  SELECT name
19
+ FROM sqlite_master
20
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
21
+ 
22
+ SQL (2.3ms)  SELECT name
23
+ FROM sqlite_master
24
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
25
+ 
26
+ SQL (2.0ms)  SELECT name
27
+ FROM sqlite_master
28
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
29
+ 
30
+ SQL (2.0ms)  SELECT name
31
+ FROM sqlite_master
32
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
33
+ 
34
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
35
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
36
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
37
+ SQL (0.2ms) SELECT count(*) AS count_all FROM "posts" 
38
+ SQL (2.0ms)  SELECT name
39
+ FROM sqlite_master
40
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
41
+ 
42
+ Post Load (1.2ms) SELECT * FROM "posts" ORDER BY id asc
43
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
44
+ Post Load (0.4ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 2
45
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
46
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
47
+ Post Load (1.0ms) SELECT * FROM "posts" ORDER BY id asc
48
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
49
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 2
50
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
51
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
52
+ Post Load (0.9ms) SELECT * FROM "posts" ORDER BY id asc
53
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
54
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 2
55
+ Post Load (0.9ms) SELECT * FROM "posts" ORDER BY id asc
56
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
57
+ Post Load (1.2ms) SELECT * FROM "posts" ORDER BY id asc
58
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
59
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 2
60
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
61
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
62
+ Post Load (0.9ms) SELECT * FROM "posts" ORDER BY id asc
63
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
64
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
65
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
66
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
67
+ Post Load (1.1ms) SELECT * FROM "posts" ORDER BY id asc
68
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
69
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
70
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
71
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
72
+ Post Load (1.0ms) SELECT * FROM "posts" ORDER BY id asc
73
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
74
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
75
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
76
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
77
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
78
+ SQL (0.2ms) SELECT count(*) AS count_all FROM "posts" 
79
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
80
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
81
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
82
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
83
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
84
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
85
+ Post Load (1.0ms) SELECT * FROM "posts" ORDER BY id asc
86
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
87
+ Post Load (1.0ms) SELECT * FROM "posts" ORDER BY id asc
88
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
89
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
90
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
91
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
92
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
93
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
94
+ Post Load (0.6ms) SELECT * FROM "posts" ORDER BY id asc
95
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
96
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
97
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
98
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
99
+ Post Load (0.6ms) SELECT * FROM "posts" ORDER BY id asc
100
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
101
+ Post Load (0.6ms) SELECT * FROM "posts" ORDER BY id asc
102
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
103
+ Post Load (0.9ms) SELECT * FROM "posts" ORDER BY id asc
104
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
105
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
106
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
107
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
108
+ Post Load (0.6ms) SELECT * FROM "posts" ORDER BY id asc
109
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
110
+ Post Load (1.0ms) SELECT * FROM "posts" ORDER BY id asc
111
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
112
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
113
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
114
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
115
+ SQL (2.0ms)  SELECT name
116
+ FROM sqlite_master
117
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
118
+ 
119
+ Post Load (1.0ms) SELECT * FROM "posts" ORDER BY id asc
120
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
121
+ Post Load (1.0ms) SELECT * FROM "posts" ORDER BY id asc
122
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
123
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
124
+ SQL (2.3ms)  SELECT name
125
+ FROM sqlite_master
126
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
127
+ 
128
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
129
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
130
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
131
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
132
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
133
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
134
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
135
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
136
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
137
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
138
+ Post Load (1.0ms) SELECT * FROM "posts" ORDER BY id asc
139
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
140
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
141
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
142
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
143
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
144
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
145
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
146
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
147
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
148
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
149
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
150
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
151
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
152
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 2
153
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 2
154
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 2
155
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 2
156
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 2
157
+ Post Load (1.1ms) SELECT * FROM "posts" ORDER BY id asc
158
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
159
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
160
+ Post Load (0.4ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 2
161
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 2
162
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 2
163
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 2
164
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 2
165
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
166
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
167
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
168
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
169
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
170
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
171
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
172
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
173
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
174
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
175
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
176
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
177
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
178
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
179
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
180
+ Post Load (0.6ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
181
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
182
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
183
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
184
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
185
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
186
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
187
+ Post Load (0.8ms) SELECT * FROM "posts" ORDER BY id asc
188
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
189
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
190
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
191
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
192
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
193
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
194
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
195
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
196
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
197
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
198
+ Post Load (0.6ms) SELECT * FROM "posts" ORDER BY id asc
199
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
200
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
201
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
202
+ Post Load (1.1ms) SELECT * FROM "posts" ORDER BY id asc
203
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
204
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
205
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
206
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
207
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
208
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
209
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
210
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
211
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
212
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
213
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
214
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
215
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
216
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
217
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
218
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
219
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
220
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
221
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
222
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
223
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
224
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
225
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
226
+ Post Load (0.4ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
227
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
228
+ Post Load (1.0ms) SELECT * FROM "posts" ORDER BY id asc
229
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
230
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
231
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
232
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
233
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
234
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
235
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
236
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
237
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
238
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
239
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
240
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
241
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
242
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
243
+ Post Load (0.6ms) SELECT * FROM "posts" ORDER BY id asc
244
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
245
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
246
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
247
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
248
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
249
+ Post Load (0.3ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
250
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
251
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
252
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
253
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
254
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
255
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
256
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
257
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 2) ORDER BY posts.id ASC LIMIT 1
258
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
259
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
260
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
261
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
262
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
263
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
264
+ Post Load (1.0ms) SELECT * FROM "posts" ORDER BY id asc
265
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
266
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
267
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
268
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
269
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
270
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
271
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
272
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
273
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
274
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
275
+ Post Load (0.7ms) SELECT * FROM "posts" ORDER BY id asc
276
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
277
+ Post Load (0.6ms) SELECT * FROM "posts" ORDER BY id asc
278
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
279
+ Post Load (0.6ms) SELECT * FROM "posts" ORDER BY id asc
280
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
281
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
282
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 0) ORDER BY posts.id ASC LIMIT 1
283
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 1) ORDER BY posts.id ASC LIMIT 1
284
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
285
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
286
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
287
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
288
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
289
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
290
+ Post Load (0.6ms) SELECT * FROM "posts" ORDER BY id asc
291
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
292
+ SQL (0.1ms) SELECT count(*) AS count_all FROM "posts" 
293
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id >= 2) ORDER BY posts.id ASC LIMIT 1
294
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 2) ORDER BY posts.id ASC LIMIT 1
295
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 3) ORDER BY posts.id ASC LIMIT 1
296
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 4) ORDER BY posts.id ASC LIMIT 1
297
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 5) ORDER BY posts.id ASC LIMIT 1
298
+ Post Load (0.2ms) SELECT * FROM "posts" WHERE (posts.id > 6) ORDER BY posts.id ASC LIMIT 1
299
+ Post Load (0.1ms) SELECT * FROM "posts" WHERE (posts.id > 7) ORDER BY posts.id ASC LIMIT 1
300
+ Ship Load (0.2ms) SELECT * FROM "ships" LIMIT 1
301
+ Ship Update (0.3ms) UPDATE "ships" SET "name" = 'Maersk Alabama' WHERE "id" = 2
302
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
303
+ Developer Update (0.3ms) UPDATE "developers" SET "name" = 'Jack Bauer', "updated_at" = '2009-04-16 16:45:18' WHERE "id" = 1
304
+ Developer Load (0.3ms) SELECT * FROM "developers" LIMIT 1
305
+ Developer Update (0.2ms) UPDATE "developers" SET "name" = 'Jack Bauer', "updated_at" = '2009-04-16 16:45:50' WHERE "id" = 1
306
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
307
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
308
+ Developer Update (0.3ms) UPDATE "developers" SET "name" = 'Jack Bauer', "updated_at" = '2009-04-16 16:47:14' WHERE "id" = 1
309
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
310
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
311
+ Developer Update (0.2ms) UPDATE "developers" SET "updated_at" = '2009-04-16 16:47:14' WHERE "id" = 1
312
+ SQL (4.1ms)  SELECT name
313
+ FROM sqlite_master
314
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
315
+ 
316
+ Developer Load (0.4ms) SELECT * FROM "developers" LIMIT 1
317
+ Developer Update (0.3ms) UPDATE "developers" SET "name" = 'Jack Bauer', "updated_at" = '2009-04-16 17:06:16' WHERE "id" = 1
318
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
319
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
320
+ Developer Update (0.2ms) UPDATE "developers" SET "created_at" = '2009-04-16 17:06:16', "updated_at" = '2009-04-16 17:06:16' WHERE "id" = 1
321
+ Developer Load (0.5ms) SELECT * FROM "developers" LIMIT 1
322
+ Developer Update (0.4ms) UPDATE "developers" SET "updated_at" = '2009-04-16 17:06:16' WHERE "id" = 1
323
+ Developer Load (0.3ms) SELECT * FROM "developers" LIMIT 1
324
+ Developer Update (0.3ms) UPDATE "developers" SET "name" = 'Jack Bauer', "updated_at" = '2009-04-16 17:06:30' WHERE "id" = 1
325
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
326
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
327
+ Developer Update (0.2ms) UPDATE "developers" SET "created_at" = '2009-04-16 17:06:30', "updated_at" = '2009-04-16 17:06:30' WHERE "id" = 1
328
+ Developer Load (0.3ms) SELECT * FROM "developers" LIMIT 1
329
+ Developer Update (0.4ms) UPDATE "developers" SET "updated_at" = '2009-04-16 17:06:30' WHERE "id" = 1
330
+ Developer Load (0.3ms) SELECT * FROM "developers" LIMIT 1
331
+ Developer Update (0.3ms) UPDATE "developers" SET "name" = 'Jack Bauer', "updated_at" = '2009-04-16 17:07:01' WHERE "id" = 1
332
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
333
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
334
+ Developer Update (0.3ms) UPDATE "developers" SET "created_at" = '2009-04-16 17:07:01', "updated_at" = '2009-04-16 17:07:01' WHERE "id" = 1
335
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
336
+ Developer Update (0.2ms) UPDATE "developers" SET "updated_at" = '2009-04-16 17:07:01' WHERE "id" = 1
337
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
338
+ Developer Update (0.2ms) UPDATE "developers" SET "name" = 'Jack Bauer', "updated_at" = '2009-04-16 17:16:43' WHERE "id" = 1
339
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
340
+ Pet Load (0.1ms) SELECT * FROM "pets" LIMIT 1
341
+ Owner Load (0.1ms) SELECT * FROM "owners" WHERE ("owners"."owner_id" = 1) 
342
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
343
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
344
+ Developer Update (0.5ms) UPDATE "developers" SET "created_at" = '2009-04-16 17:16:43', "updated_at" = '2009-04-16 17:16:43' WHERE "id" = 1
345
+ Developer Load (0.5ms) SELECT * FROM "developers" LIMIT 1
346
+ Developer Update (0.3ms) UPDATE "developers" SET "updated_at" = '2009-04-16 17:16:43' WHERE "id" = 1
347
+ Developer Load (0.4ms) SELECT * FROM "developers" LIMIT 1
348
+ Developer Update (0.3ms) UPDATE "developers" SET "name" = 'Jack Bauer', "updated_at" = '2009-04-16 17:19:07' WHERE "id" = 1
349
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
350
+ Pet Load (0.1ms) SELECT * FROM "pets" LIMIT 1
351
+ Owner Load (0.3ms) SELECT * FROM "owners" WHERE ("owners"."owner_id" = 1) 
352
+ Pet Update (0.2ms) UPDATE "pets" SET "name" = 'Fluffy the Third' WHERE "pet_id" = 1
353
+ Owner Update (0.2ms) UPDATE "owners" SET "happy_at" = '2009-04-16 17:19:07', "updated_at" = '2009-04-16 17:19:07' WHERE "owner_id" = 1
354
+ Owner Update (0.1ms) UPDATE "owners" SET "happy_at" = '2009-04-16 17:19:07', "updated_at" = '2009-04-16 17:19:07' WHERE "owner_id" = 1
355
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
356
+ Pet Load (0.1ms) SELECT * FROM "pets" LIMIT 1
357
+ Owner Load (0.1ms) SELECT * FROM "owners" WHERE ("owners"."owner_id" = 1) 
358
+ Pet Update (0.2ms) UPDATE "pets" SET "name" = 'Fluffy the Third' WHERE "pet_id" = 1
359
+ Owner Update (0.1ms) UPDATE "owners" SET "updated_at" = '2009-04-16 17:19:07' WHERE "owner_id" = 1
360
+ Owner Update (0.1ms) UPDATE "owners" SET "updated_at" = '2009-04-16 17:19:07' WHERE "owner_id" = 1
361
+ Owner Update (0.1ms) UPDATE "owners" SET "updated_at" = '2009-04-16 17:19:07' WHERE "owner_id" = 1
362
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
363
+ Developer Load (0.3ms) SELECT * FROM "developers" LIMIT 1
364
+ Developer Update (0.3ms) UPDATE "developers" SET "created_at" = '2009-04-16 17:19:07', "updated_at" = '2009-04-16 17:19:07' WHERE "id" = 1
365
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
366
+ Developer Update (0.3ms) UPDATE "developers" SET "updated_at" = '2009-04-16 17:19:07' WHERE "id" = 1
367
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
368
+ Pet Load (0.1ms) SELECT * FROM "pets" LIMIT 1
369
+ Owner Load (0.1ms) SELECT * FROM "owners" WHERE ("owners"."owner_id" = 1) 
370
+ Pet Destroy (0.2ms) DELETE FROM "pets" WHERE "pet_id" = 1
371
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
372
+ Developer Update (0.2ms) UPDATE "developers" SET "name" = 'Jack Bauer', "updated_at" = '2009-04-16 17:20:53' WHERE "id" = 1
373
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
374
+ Pet Load (0.1ms) SELECT * FROM "pets" LIMIT 1
375
+ Owner Load (0.1ms) SELECT * FROM "owners" WHERE ("owners"."owner_id" = 1) 
376
+ Pet Update (0.2ms) UPDATE "pets" SET "name" = 'Fluffy the Third' WHERE "pet_id" = 1
377
+ Owner Update (0.1ms) UPDATE "owners" SET "happy_at" = '2009-04-16 17:20:53', "updated_at" = '2009-04-16 17:20:53' WHERE "owner_id" = 1
378
+ Owner Update (0.1ms) UPDATE "owners" SET "happy_at" = '2009-04-16 17:20:53', "updated_at" = '2009-04-16 17:20:53' WHERE "owner_id" = 1
379
+ Developer Load (0.3ms) SELECT * FROM "developers" LIMIT 1
380
+ Pet Load (0.1ms) SELECT * FROM "pets" LIMIT 1
381
+ Owner Load (0.1ms) SELECT * FROM "owners" WHERE ("owners"."owner_id" = 1) 
382
+ Pet Update (0.2ms) UPDATE "pets" SET "name" = 'Fluffy the Third' WHERE "pet_id" = 1
383
+ Owner Update (0.1ms) UPDATE "owners" SET "updated_at" = '2009-04-16 17:20:53' WHERE "owner_id" = 1
384
+ Owner Update (0.1ms) UPDATE "owners" SET "updated_at" = '2009-04-16 17:20:53' WHERE "owner_id" = 1
385
+ Owner Update (0.1ms) UPDATE "owners" SET "updated_at" = '2009-04-16 17:20:53' WHERE "owner_id" = 1
386
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
387
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
388
+ Developer Update (0.2ms) UPDATE "developers" SET "created_at" = '2009-04-16 17:20:53', "updated_at" = '2009-04-16 17:20:53' WHERE "id" = 1
389
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
390
+ Developer Update (0.2ms) UPDATE "developers" SET "updated_at" = '2009-04-16 17:20:53' WHERE "id" = 1
391
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
392
+ Pet Load (0.2ms) SELECT * FROM "pets" LIMIT 1
393
+ Owner Load (0.1ms) SELECT * FROM "owners" WHERE ("owners"."owner_id" = 1) 
394
+ Pet Destroy (0.3ms) DELETE FROM "pets" WHERE "pet_id" = 1
395
+ Owner Update (0.1ms) UPDATE "owners" SET "updated_at" = '2009-04-16 17:21:31' WHERE "owner_id" = 1
396
+ Developer Load (0.3ms) SELECT * FROM "developers" LIMIT 1
397
+ Developer Update (0.3ms) UPDATE "developers" SET "name" = 'Jack Bauer', "updated_at" = '2009-04-16 17:21:31' WHERE "id" = 1
398
+ Developer Load (0.3ms) SELECT * FROM "developers" LIMIT 1
399
+ Pet Load (0.1ms) SELECT * FROM "pets" LIMIT 1
400
+ Owner Load (0.1ms) SELECT * FROM "owners" WHERE ("owners"."owner_id" = 1) 
401
+ Pet Update (0.2ms) UPDATE "pets" SET "name" = 'Fluffy the Third' WHERE "pet_id" = 1
402
+ Owner Update (0.1ms) UPDATE "owners" SET "happy_at" = '2009-04-16 17:21:31', "updated_at" = '2009-04-16 17:21:31' WHERE "owner_id" = 1
403
+ Owner Update (0.1ms) UPDATE "owners" SET "happy_at" = '2009-04-16 17:21:31', "updated_at" = '2009-04-16 17:21:31' WHERE "owner_id" = 1
404
+ Developer Load (0.3ms) SELECT * FROM "developers" LIMIT 1
405
+ Pet Load (0.2ms) SELECT * FROM "pets" LIMIT 1
406
+ Owner Load (0.1ms) SELECT * FROM "owners" WHERE ("owners"."owner_id" = 1) 
407
+ Pet Update (0.3ms) UPDATE "pets" SET "name" = 'Fluffy the Third' WHERE "pet_id" = 1
408
+ Owner Update (0.1ms) UPDATE "owners" SET "updated_at" = '2009-04-16 17:21:31' WHERE "owner_id" = 1
409
+ Owner Update (0.1ms) UPDATE "owners" SET "updated_at" = '2009-04-16 17:21:31' WHERE "owner_id" = 1
410
+ Owner Update (0.1ms) UPDATE "owners" SET "updated_at" = '2009-04-16 17:21:31' WHERE "owner_id" = 1
411
+ Developer Load (0.3ms) SELECT * FROM "developers" LIMIT 1
412
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
413
+ Developer Update (0.2ms) UPDATE "developers" SET "created_at" = '2009-04-16 17:21:31', "updated_at" = '2009-04-16 17:21:31' WHERE "id" = 1
414
+ Developer Load (0.2ms) SELECT * FROM "developers" LIMIT 1
415
+ Developer Update (0.2ms) UPDATE "developers" SET "updated_at" = '2009-04-16 17:21:31' WHERE "id" = 1