aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Kallen <nkallen@nick-kallens-computer-2.local>2008-01-03 23:41:43 -0800
committerNick Kallen <nkallen@nick-kallens-computer-2.local>2008-01-03 23:41:43 -0800
commita5d62729799ed58ce344dba0621e951dbc92ab3f (patch)
tree11e3b9f32b649c32d5e7b84f4546c835e6a29b2e
parent6c89e3818d85e3169a7fb8de27b25357c2259881 (diff)
downloadrails-a5d62729799ed58ce344dba0621e951dbc92ab3f.tar.gz
rails-a5d62729799ed58ce344dba0621e951dbc92ab3f.tar.bz2
rails-a5d62729799ed58ce344dba0621e951dbc92ab3f.zip
new usage of builder
`
-rw-r--r--eager include.txt49
-rw-r--r--lib/sql_algebra.rb6
-rw-r--r--lib/sql_algebra/extensions/base.rb15
-rw-r--r--lib/sql_algebra/extensions/object.rb8
-rw-r--r--lib/sql_algebra/relations/inner_join_relation.rb2
-rw-r--r--lib/sql_algebra/relations/join_relation.rb32
-rw-r--r--lib/sql_algebra/relations/left_outer_join_relation.rb2
-rw-r--r--lib/sql_algebra/relations/relation.rb75
-rw-r--r--lib/sql_algebra/relations/selection_relation.rb12
-rw-r--r--lib/sql_algebra/relations/table_relation.rb17
-rw-r--r--lib/sql_algebra/sql_builder/order_builder.rb16
-rw-r--r--lib/sql_algebra/sql_builder/selects_builder.rb20
-rw-r--r--lib/sql_algebra/sql_builder/sql_builder_adapter.rb22
-rw-r--r--spec/debug.log1
-rw-r--r--spec/integration/debug.log1581
-rw-r--r--spec/integration/scratch_spec.rb39
-rw-r--r--spec/relations/attribute_spec.rb1
-rw-r--r--spec/relations/join_relation_spec.rb22
-rw-r--r--spec/relations/order_relation_spec.rb15
-rw-r--r--spec/relations/projection_relation_spec.rb10
-rw-r--r--spec/relations/range_relation_spec.rb5
-rw-r--r--spec/relations/relation_spec.rb8
-rw-r--r--spec/relations/selection_relation_spec.rb9
-rw-r--r--spec/relations/table_relation_spec.rb5
-rw-r--r--spec/spec_helper.rb11
25 files changed, 1853 insertions, 130 deletions
diff --git a/eager include.txt b/eager include.txt
new file mode 100644
index 0000000000..0c56323b40
--- /dev/null
+++ b/eager include.txt
@@ -0,0 +1,49 @@
+User.find( :all, :include => { :photos => :camera } )
+
+User.reflection[:photos].klass.reflection[:camera]
+
+users_photos_camera = User.relation << User.reflections[:photos].relation << Photo.reflections[:camera].relation
+
+users_photos_camera.each do |record|
+ User.bring_forth(record, :photos => :camera)
+end
+
+def User.bring_forth(record, included = { :photos => :camera })
+ user = @cache[ record % 'users.id' ] || User.instantiate(record % User.attributes)
+ user.photos.bring_forth(record, :camera)
+end
+
+def User.photos.bring_forth(record, included = :camera)
+ photo = @cache[ record % 'photos.id' ] || Photo.instantiate(record % Photo.attributes)
+ photo.camera.bring_forth(record)
+end
+
+def User.photos.camera.bring_forth(record, included = nil)
+ camera = @cache [ record % 'cameras.id' ] || Camera.instantiate(record % Camera.attributes)
+end
+
+###########################
+
+# first, rename the attributes to remove ambiguity (analogous to c0_t0 stuff)
+eager_loaded_user_cameras = @user_cameras.rename(
+ @user.attributes => @user.attributes.prefixed,
+ @photos.attributes => ...,
+ @cameras.attributes => ...,
+)
+
+# second, bring forth!!
+class Repository
+ def bring_forth(record, includes = [])
+ object = cache.get(record % klass.primary_key) { Klass.instantiate(record % Klass.attributes) }
+ includes.each do |include|
+ case include
+ when Symbol
+ object.send(association = include).bring_forth(record)
+ when Hash
+ include.each do |association, nested_associations|
+ object.send(association).bring_forth(record, nested_associations)
+ end
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/lib/sql_algebra.rb b/lib/sql_algebra.rb
index 5753a48d2f..b3e3c8d176 100644
--- a/lib/sql_algebra.rb
+++ b/lib/sql_algebra.rb
@@ -1,8 +1,10 @@
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'rubygems'
-require 'active_support'
+require 'activesupport'
+require 'activerecord'
require 'sql_algebra/relations/relation'
+require 'sql_algebra/relations/compound_relation'
require 'sql_algebra/relations/table_relation'
require 'sql_algebra/relations/join_operation'
require 'sql_algebra/relations/inner_join_operation'
@@ -15,6 +17,7 @@ require 'sql_algebra/relations/projection_relation'
require 'sql_algebra/relations/selection_relation'
require 'sql_algebra/relations/order_relation'
require 'sql_algebra/relations/range_relation'
+require 'sql_algebra/relations/join'
require 'sql_algebra/predicates/predicate'
require 'sql_algebra/predicates/binary_predicate'
@@ -30,7 +33,6 @@ require 'sql_algebra/predicates/match_predicate'
require 'sql_algebra/extensions/range'
require 'sql_algebra/extensions/object'
-require 'sql_algebra/sql_builder/sql_builder_adapter'
require 'sql_algebra/sql_builder/sql_builder'
require 'sql_algebra/sql_builder/select_builder'
require 'sql_algebra/sql_builder/joins_builder'
diff --git a/lib/sql_algebra/extensions/base.rb b/lib/sql_algebra/extensions/base.rb
new file mode 100644
index 0000000000..79f2ce75d1
--- /dev/null
+++ b/lib/sql_algebra/extensions/base.rb
@@ -0,0 +1,15 @@
+class ActiveRecord::Base
+ def self.bring_forth(record, includes = [])
+ object = cache.get(record % klass.primary_key) { Klass.instantiate(record % Klass.attributes) }
+ includes.each do |include|
+ case include
+ when Symbol
+ object.send(association = include).bring_forth(record)
+ when Hash
+ include.each do |association, nested_associations|
+ object.send(association).bring_forth(record, nested_associations)
+ end
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/lib/sql_algebra/extensions/object.rb b/lib/sql_algebra/extensions/object.rb
new file mode 100644
index 0000000000..639e810a97
--- /dev/null
+++ b/lib/sql_algebra/extensions/object.rb
@@ -0,0 +1,8 @@
+class Object
+ def to_sql(builder = EqualsConditionBuilder.new)
+ me = self
+ builder.call do
+ value me
+ end
+ end
+end \ No newline at end of file
diff --git a/lib/sql_algebra/relations/inner_join_relation.rb b/lib/sql_algebra/relations/inner_join_relation.rb
index 1ef965a6f5..6b932e3b21 100644
--- a/lib/sql_algebra/relations/inner_join_relation.rb
+++ b/lib/sql_algebra/relations/inner_join_relation.rb
@@ -1,5 +1,5 @@
class InnerJoinRelation < JoinRelation
- def join_name
+ def join_type
:inner_join
end
end \ No newline at end of file
diff --git a/lib/sql_algebra/relations/join_relation.rb b/lib/sql_algebra/relations/join_relation.rb
index b96cd175de..dc57e24c96 100644
--- a/lib/sql_algebra/relations/join_relation.rb
+++ b/lib/sql_algebra/relations/join_relation.rb
@@ -11,24 +11,22 @@ class JoinRelation < Relation
(relation2 == other.relation1 and relation1 == other.relation2))
end
- def to_sql(builder = SelectBuilder.new)
- relation2.to_sql(translate_from_to_inner_join_on_predicates(relation1.to_sql(builder)))
+ def joins
+ relation1.joins + relation2.joins + [Join.new(relation1, relation2, predicates, join_type)]
end
- private
- # translate 'from' to 'inner join on <predicates>'
- def translate_from_to_inner_join_on_predicates(builder)
- schmoin_name, schmredicates = join_name, predicates
- SqlBuilderAdapter.new(builder) do |builder|
- define_method :from do |table|
- builder.call do
- send(schmoin_name, table) do
- schmredicates.each do |predicate|
- predicate.to_sql(self)
- end
- end
- end
- end
- end
+ def selects
+ relation1.selects + relation2.selects
end
+
+ def attributes
+ relation1.attributes + relation2.attributes
+ end
+
+ def attribute(name)
+ relation1[name] || relation2[name]
+ end
+
+ protected
+ delegate :table, :to => :relation1
end \ No newline at end of file
diff --git a/lib/sql_algebra/relations/left_outer_join_relation.rb b/lib/sql_algebra/relations/left_outer_join_relation.rb
index c7722c394d..f4ece43861 100644
--- a/lib/sql_algebra/relations/left_outer_join_relation.rb
+++ b/lib/sql_algebra/relations/left_outer_join_relation.rb
@@ -1,5 +1,5 @@
class LeftOuterJoinRelation < JoinRelation
- def join_name
+ def join_type
:left_outer_join
end
end \ No newline at end of file
diff --git a/lib/sql_algebra/relations/relation.rb b/lib/sql_algebra/relations/relation.rb
index bd812b368d..8c21927d01 100644
--- a/lib/sql_algebra/relations/relation.rb
+++ b/lib/sql_algebra/relations/relation.rb
@@ -1,34 +1,65 @@
class Relation
- def <=>(other)
- InnerJoinOperation.new(self, other)
- end
+ module Operations
+ def <=>(other)
+ InnerJoinOperation.new(self, other)
+ end
- def <<(other)
- LeftOuterJoinOperation.new(self, other)
- end
+ def <<(other)
+ LeftOuterJoinOperation.new(self, other)
+ end
- def [](index)
- case index
- when Symbol
- Attribute.new(self, index)
- when Range
- RangeRelation.new(self, index)
+ def [](index)
+ case index
+ when Symbol
+ attribute(index)
+ when Range
+ RangeRelation.new(self, index)
+ end
end
- end
- def include?(attribute)
- RelationInclusionPredicate.new(attribute, self)
- end
+ def include?(attribute)
+ RelationInclusionPredicate.new(attribute, self)
+ end
- def select(*predicates)
- SelectionRelation.new(self, *predicates)
+ def select(*predicates)
+ SelectionRelation.new(self, *predicates)
+ end
+
+ def project(*attributes)
+ ProjectionRelation.new(self, *attributes)
+ end
+
+ def order(*attributes)
+ OrderRelation.new(self, *attributes)
+ end
end
+ include Operations
- def project(*attributes)
- ProjectionRelation.new(self, *attributes)
+ def connection
+ ActiveRecord::Base.connection
end
- def order(*attributes)
- OrderRelation.new(self, *attributes)
+ def to_sql(builder = SelectBuilder.new)
+ builder.call do
+ select do
+ attributes.each { |a| a.to_sql(self) }
+ end
+ from table do
+ joins.each { |j| j.to_sql(self) }
+ end
+ where do
+ selects.each { |s| s.to_sql(self) }
+ end
+ order_by do
+ orders.each { |o| o.to_sql(self) }
+ end
+ end
end
+
+ protected
+ def attributes; [] end
+ def joins; [] end
+ def selects; [] end
+ def orders; [] end
+
end \ No newline at end of file
diff --git a/lib/sql_algebra/relations/selection_relation.rb b/lib/sql_algebra/relations/selection_relation.rb
index 51461de7d2..72911aa65a 100644
--- a/lib/sql_algebra/relations/selection_relation.rb
+++ b/lib/sql_algebra/relations/selection_relation.rb
@@ -1,4 +1,4 @@
-class SelectionRelation < Relation
+class SelectionRelation < CompoundRelation
attr_reader :relation, :predicate
def initialize(relation, *predicates)
@@ -10,13 +10,7 @@ class SelectionRelation < Relation
relation == other.relation and predicate == other.predicate
end
- def to_sql(builder = SelectBuilder.new)
- relation.to_sql(builder).call do
- where do
- predicate.to_sql(self)
- end
- end
+ def selects
+ [predicate]
end
-
- delegate :[], :to => :relation
end \ No newline at end of file
diff --git a/lib/sql_algebra/relations/table_relation.rb b/lib/sql_algebra/relations/table_relation.rb
index 60bdfda8ee..1915b42565 100644
--- a/lib/sql_algebra/relations/table_relation.rb
+++ b/lib/sql_algebra/relations/table_relation.rb
@@ -5,10 +5,19 @@ class TableRelation < Relation
@table = table
end
- def to_sql(builder = SelectBuilder.new)
- builder.call do
- select { all }
- from table
+ def attributes
+ attributes_by_name.values
+ end
+
+ protected
+ def attribute(name)
+ attributes_by_name[name.to_s]
+ end
+
+ private
+ def attributes_by_name
+ @attributes_by_name ||= connection.columns(table, "#{table} Columns").inject({}) do |attributes_by_name, column|
+ attributes_by_name.merge(column.name => Attribute.new(self, column.name.to_sym))
end
end
end \ No newline at end of file
diff --git a/lib/sql_algebra/sql_builder/order_builder.rb b/lib/sql_algebra/sql_builder/order_builder.rb
new file mode 100644
index 0000000000..4eea40fa36
--- /dev/null
+++ b/lib/sql_algebra/sql_builder/order_builder.rb
@@ -0,0 +1,16 @@
+class OrderBuilder < SqlBuilder
+ def initialize(&block)
+ @orders = []
+ super(&block)
+ end
+
+ def column(table, column, aliaz = nil)
+ @orders << (aliaz ? aliaz : "#{table}.#{column}")
+ end
+
+ def to_s
+ @orders.join(', ')
+ end
+
+ delegate :blank?, :to => :@orders
+end \ No newline at end of file
diff --git a/lib/sql_algebra/sql_builder/selects_builder.rb b/lib/sql_algebra/sql_builder/selects_builder.rb
new file mode 100644
index 0000000000..72f6f52397
--- /dev/null
+++ b/lib/sql_algebra/sql_builder/selects_builder.rb
@@ -0,0 +1,20 @@
+class SelectsBuilder < SqlBuilder
+ def initialize(&block)
+ @selects = []
+ super(&block)
+ end
+
+ def to_s
+ @selects.join(', ')
+ end
+
+ def all
+ @selects << :*
+ end
+
+ def column(table, column, aliaz = nil)
+ @selects << "#{table}.#{column}" + (aliaz ? " AS #{aliaz}" : '')
+ end
+
+ delegate :blank?, :to => :@selects
+end \ No newline at end of file
diff --git a/lib/sql_algebra/sql_builder/sql_builder_adapter.rb b/lib/sql_algebra/sql_builder/sql_builder_adapter.rb
deleted file mode 100644
index 9bb5271f33..0000000000
--- a/lib/sql_algebra/sql_builder/sql_builder_adapter.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-class SqlBuilderAdapter
- instance_methods.each { |m| undef_method m unless m =~ /^__|^instance_eval|class/ }
-
- def initialize(adaptee, &block)
- @adaptee = adaptee
- (class << self; self end).class_eval do
- (adaptee.methods - instance_methods).each { |m| delegate m, :to => :@adaptee }
- end
- (class << self; self end).instance_exec(@adaptee, &block)
- end
-
- def call(&block)
- @caller = eval("self", block.binding)
- returning self do |adapter|
- instance_eval(&block)
- end
- end
-
- def method_missing(method, *args, &block)
- @caller.send(method, *args, &block)
- end
-end \ No newline at end of file
diff --git a/spec/debug.log b/spec/debug.log
new file mode 100644
index 0000000000..d38ed11d82
--- /dev/null
+++ b/spec/debug.log
@@ -0,0 +1 @@
+# Logfile created on Tue Jan 01 17:49:28 -0800 2008 by logger.rb/1.5.2.9
diff --git a/spec/integration/debug.log b/spec/integration/debug.log
new file mode 100644
index 0000000000..9b5b08cc20
--- /dev/null
+++ b/spec/integration/debug.log
@@ -0,0 +1,1581 @@
+# Logfile created on Tue Jan 01 18:37:24 -0800 2008 by logger.rb/1.5.2.9
+ SQL (0.000147) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010719) SHOW FIELDS FROM `users`
+ SQL (0.002219) SHOW FIELDS FROM `photos`
+ SQL (0.001538) SHOW FIELDS FROM `users`
+ SQL (0.002551) SHOW FIELDS FROM `photos`
+ SQL (0.001835) SHOW FIELDS FROM `cameras`
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010748) SHOW FIELDS FROM `users`
+ SQL (0.002223) SHOW FIELDS FROM `photos`
+ SQL (0.002938) SHOW FIELDS FROM `users`
+ SQL (0.002466) SHOW FIELDS FROM `photos`
+ SQL (0.001493) SHOW FIELDS FROM `cameras`
+ SQL (0.000116) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010722) SHOW FIELDS FROM `users`
+ SQL (0.002196) SHOW FIELDS FROM `photos`
+ SQL (0.001528) SHOW FIELDS FROM `users`
+ SQL (0.001373) SHOW FIELDS FROM `photos`
+ SQL (0.001372) SHOW FIELDS FROM `cameras`
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.001599) SHOW FIELDS FROM `users`
+ SQL (0.012868) SHOW FIELDS FROM `photos`
+ SQL (0.001681) SHOW FIELDS FROM `users`
+ SQL (0.002253) SHOW FIELDS FROM `photos`
+ SQL (0.002186) SHOW FIELDS FROM `cameras`
+ SQL (0.000147) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010737) SHOW FIELDS FROM `users`
+ SQL (0.002277) SHOW FIELDS FROM `photos`
+ SQL (0.001517) SHOW FIELDS FROM `users`
+ SQL (0.001368) SHOW FIELDS FROM `photos`
+ SQL (0.001481) SHOW FIELDS FROM `cameras`
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010719) SHOW FIELDS FROM `users`
+ SQL (0.002651) SHOW FIELDS FROM `photos`
+ SQL (0.001464) SHOW FIELDS FROM `users`
+ SQL (0.001504) SHOW FIELDS FROM `photos`
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010820) SHOW FIELDS FROM `users`
+ SQL (0.002194) SHOW FIELDS FROM `photos`
+ SQL (0.001565) SHOW FIELDS FROM `users`
+ SQL (0.001282) SHOW FIELDS FROM `photos`
+ SQL (0.000147) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010719) SHOW FIELDS FROM `users`
+ SQL (0.002103) SHOW FIELDS FROM `photos`
+ SQL (0.001468) SHOW FIELDS FROM `users`
+ SQL (0.001526) SHOW FIELDS FROM `photos`
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010648) SHOW FIELDS FROM `users`
+ SQL (0.002458) SHOW FIELDS FROM `photos`
+ SQL (0.001525) SHOW FIELDS FROM `users`
+ SQL (0.001571) SHOW FIELDS FROM `photos`
+ SQL (0.001274) SHOW FIELDS FROM `users`
+ SQL (0.001527) SHOW FIELDS FROM `photos`
+ SQL (0.000130) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010705) SHOW FIELDS FROM `users`
+ SQL (0.002444) SHOW FIELDS FROM `photos`
+ SQL (0.001608) SHOW FIELDS FROM `users`
+ SQL (0.001488) SHOW FIELDS FROM `photos`
+ SQL (0.001462) SHOW FIELDS FROM `users`
+ SQL (0.001492) SHOW FIELDS FROM `photos`
+ SQL (0.015956) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.001676) SHOW TABLES
+ User Columns (0.001593) SHOW FIELDS FROM `users`
+ SQL (0.000144) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010771) SHOW FIELDS FROM `users`
+ SQL (0.002480) SHOW FIELDS FROM `photos`
+ SQL (0.001474) SHOW FIELDS FROM `users`
+ SQL (0.001357) SHOW FIELDS FROM `photos`
+ SQL (0.011769) SHOW FIELDS FROM `users`
+ SQL (0.001586) SHOW FIELDS FROM `photos`
+ SQL (0.000232) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000120) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010804) SHOW FIELDS FROM `users`
+ SQL (0.002188) SHOW FIELDS FROM `photos`
+ SQL (0.001478) SHOW FIELDS FROM `users`
+ SQL (0.001550) SHOW FIELDS FROM `photos`
+ SQL (0.001413) SHOW FIELDS FROM `users`
+ SQL (0.001515) SHOW FIELDS FROM `photos`
+ SQL (0.000251) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000147) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010826) SHOW FIELDS FROM `users`
+ SQL (0.002353) SHOW FIELDS FROM `photos`
+ SQL (0.001500) SHOW FIELDS FROM `users`
+ SQL (0.001522) SHOW FIELDS FROM `photos`
+ SQL (0.001438) SHOW FIELDS FROM `users`
+ SQL (0.001436) SHOW FIELDS FROM `photos`
+ SQL (0.000266) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001396) SHOW FIELDS FROM `users`
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010772) SHOW FIELDS FROM `users`
+ SQL (0.002268) SHOW FIELDS FROM `photos`
+ SQL (0.001566) SHOW FIELDS FROM `users`
+ SQL (0.001390) SHOW FIELDS FROM `photos`
+ SQL (0.001466) SHOW FIELDS FROM `users`
+ SQL (0.001600) SHOW FIELDS FROM `photos`
+ SQL (0.000247) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010742) SHOW FIELDS FROM `users`
+ SQL (0.002382) SHOW FIELDS FROM `photos`
+ SQL (0.001490) SHOW FIELDS FROM `users`
+ SQL (0.001505) SHOW FIELDS FROM `photos`
+ SQL (0.001846) SHOW FIELDS FROM `users`
+ SQL (0.001491) SHOW FIELDS FROM `photos`
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010798) SHOW FIELDS FROM `users`
+ SQL (0.002447) SHOW FIELDS FROM `photos`
+ SQL (0.001557) SHOW FIELDS FROM `users`
+ SQL (0.001387) SHOW FIELDS FROM `photos`
+ SQL (0.001469) SHOW FIELDS FROM `users`
+ SQL (0.001394) SHOW FIELDS FROM `photos`
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010727) SHOW FIELDS FROM `users`
+ SQL (0.002213) SHOW FIELDS FROM `photos`
+ SQL (0.001491) SHOW FIELDS FROM `users`
+ SQL (0.001407) SHOW FIELDS FROM `photos`
+ SQL (0.001457) SHOW FIELDS FROM `users`
+ SQL (0.001529) SHOW FIELDS FROM `photos`
+ SQL (0.000247) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000320) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000135) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010663) SHOW FIELDS FROM `users`
+ SQL (0.002319) SHOW FIELDS FROM `photos`
+ SQL (0.001467) SHOW FIELDS FROM `users`
+ SQL (0.001319) SHOW FIELDS FROM `photos`
+ SQL (0.010583) SHOW FIELDS FROM `users`
+ SQL (0.001805) SHOW FIELDS FROM `photos`
+ SQL (0.000290) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000271) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010733) SHOW FIELDS FROM `users`
+ SQL (0.002277) SHOW FIELDS FROM `photos`
+ SQL (0.001500) SHOW FIELDS FROM `users`
+ SQL (0.001387) SHOW FIELDS FROM `photos`
+ SQL (0.001421) SHOW FIELDS FROM `users`
+ SQL (0.001726) SHOW FIELDS FROM `photos`
+ SQL (0.000261) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000261) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001432) SHOW FIELDS FROM `photos`
+ SQL (0.000134) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010759) SHOW FIELDS FROM `users`
+ SQL (0.002287) SHOW FIELDS FROM `photos`
+ SQL (0.001424) SHOW FIELDS FROM `users`
+ SQL (0.001550) SHOW FIELDS FROM `photos`
+ SQL (0.001342) SHOW FIELDS FROM `cameras`
+ SQL (0.001545) SHOW FIELDS FROM `users`
+ SQL (0.001488) SHOW FIELDS FROM `photos`
+ SQL (0.000249) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000290) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000139) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010766) SHOW FIELDS FROM `users`
+ SQL (0.002183) SHOW FIELDS FROM `photos`
+ SQL (0.001465) SHOW FIELDS FROM `users`
+ SQL (0.001492) SHOW FIELDS FROM `photos`
+ SQL (0.012690) SHOW FIELDS FROM `cameras`
+ SQL (0.001591) SHOW FIELDS FROM `users`
+ SQL (0.001740) SHOW FIELDS FROM `photos`
+ SQL (0.000261) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000262) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000110) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010751) SHOW FIELDS FROM `users`
+ SQL (0.002343) SHOW FIELDS FROM `photos`
+ SQL (0.001476) SHOW FIELDS FROM `users`
+ SQL (0.001513) SHOW FIELDS FROM `photos`
+ SQL (0.001495) SHOW FIELDS FROM `cameras`
+ SQL (0.001569) SHOW FIELDS FROM `users`
+ SQL (0.001497) SHOW FIELDS FROM `photos`
+ SQL (0.000249) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.028671) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010774) SHOW FIELDS FROM `users`
+ SQL (0.002229) SHOW FIELDS FROM `photos`
+ SQL (0.001532) SHOW FIELDS FROM `users`
+ SQL (0.001526) SHOW FIELDS FROM `photos`
+ SQL (0.001463) SHOW FIELDS FROM `cameras`
+ SQL (0.001558) SHOW FIELDS FROM `users`
+ SQL (0.001479) SHOW FIELDS FROM `photos`
+ SQL (0.000253) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000248) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000141) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010731) SHOW FIELDS FROM `users`
+ SQL (0.002167) SHOW FIELDS FROM `photos`
+ SQL (0.001370) SHOW FIELDS FROM `users`
+ SQL (0.001523) SHOW FIELDS FROM `photos`
+ SQL (0.001275) SHOW FIELDS FROM `cameras`
+ SQL (0.001480) SHOW FIELDS FROM `users`
+ SQL (0.001193) SHOW FIELDS FROM `photos`
+ SQL (0.000228) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000228) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.011242) SHOW FIELDS FROM `users`
+ SQL (0.001695) SHOW FIELDS FROM `photos`
+ SQL (0.001744) SHOW FIELDS FROM `users`
+ SQL (0.001452) SHOW FIELDS FROM `photos`
+ SQL (0.001419) SHOW FIELDS FROM `cameras`
+ SQL (0.001378) SHOW FIELDS FROM `users`
+ SQL (0.002561) SHOW FIELDS FROM `photos`
+ SQL (0.000923) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000275) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000157) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010515) SHOW FIELDS FROM `users`
+ SQL (0.002311) SHOW FIELDS FROM `photos`
+ SQL (0.002045) SHOW FIELDS FROM `users`
+ SQL (0.001878) SHOW FIELDS FROM `photos`
+ SQL (0.001586) SHOW FIELDS FROM `cameras`
+ SQL (0.001397) SHOW FIELDS FROM `users`
+ SQL (0.001944) SHOW FIELDS FROM `photos`
+ SQL (0.000453) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000283) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010759) SHOW FIELDS FROM `users`
+ SQL (0.002066) SHOW FIELDS FROM `photos`
+ SQL (0.001582) SHOW FIELDS FROM `users`
+ SQL (0.001459) SHOW FIELDS FROM `photos`
+ SQL (0.001418) SHOW FIELDS FROM `cameras`
+ SQL (0.001367) SHOW FIELDS FROM `users`
+ SQL (0.001849) SHOW FIELDS FROM `photos`
+ SQL (0.001231) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000357) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010706) SHOW FIELDS FROM `users`
+ SQL (0.002375) SHOW FIELDS FROM `photos`
+ SQL (0.001616) SHOW FIELDS FROM `users`
+ SQL (0.001826) SHOW FIELDS FROM `photos`
+ SQL (0.001508) SHOW FIELDS FROM `cameras`
+ SQL (0.001638) SHOW FIELDS FROM `users`
+ SQL (0.001719) SHOW FIELDS FROM `photos`
+ SQL (0.001674) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000337) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000114) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010717) SHOW FIELDS FROM `users`
+ SQL (0.002698) SHOW FIELDS FROM `photos`
+ SQL (0.001432) SHOW FIELDS FROM `users`
+ SQL (0.001686) SHOW FIELDS FROM `photos`
+ SQL (0.001403) SHOW FIELDS FROM `cameras`
+ SQL (0.001809) SHOW FIELDS FROM `users`
+ SQL (0.001590) SHOW FIELDS FROM `photos`
+ SQL (0.000540) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000341) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010746) SHOW FIELDS FROM `users`
+ SQL (0.002455) SHOW FIELDS FROM `photos`
+ SQL (0.001483) SHOW FIELDS FROM `users`
+ SQL (0.001588) SHOW FIELDS FROM `photos`
+ SQL (0.001513) SHOW FIELDS FROM `cameras`
+ SQL (0.001247) SHOW FIELDS FROM `users`
+ SQL (0.001527) SHOW FIELDS FROM `photos`
+ SQL (0.000227) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000252) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000142) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010735) SHOW FIELDS FROM `users`
+ SQL (0.002400) SHOW FIELDS FROM `photos`
+ SQL (0.001299) SHOW FIELDS FROM `users`
+ SQL (0.001451) SHOW FIELDS FROM `photos`
+ SQL (0.001173) SHOW FIELDS FROM `cameras`
+ SQL (0.001530) SHOW FIELDS FROM `users`
+ SQL (0.001793) SHOW FIELDS FROM `photos`
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010758) SHOW FIELDS FROM `users`
+ SQL (0.002271) SHOW FIELDS FROM `photos`
+ SQL (0.001485) SHOW FIELDS FROM `users`
+ SQL (0.001578) SHOW FIELDS FROM `photos`
+ SQL (0.001492) SHOW FIELDS FROM `cameras`
+ SQL (0.001389) SHOW FIELDS FROM `users`
+ SQL (0.001391) SHOW FIELDS FROM `photos`
+ SQL (0.000249) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000170) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010733) SHOW FIELDS FROM `users`
+ SQL (0.002313) SHOW FIELDS FROM `photos`
+ SQL (0.001469) SHOW FIELDS FROM `users`
+ SQL (0.001593) SHOW FIELDS FROM `photos`
+ SQL (0.001511) SHOW FIELDS FROM `cameras`
+ SQL (0.001484) SHOW FIELDS FROM `users`
+ SQL (0.001478) SHOW FIELDS FROM `photos`
+ SQL (0.000232) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000148) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010796) SHOW FIELDS FROM `users`
+ SQL (0.001970) SHOW FIELDS FROM `photos`
+ SQL (0.001558) SHOW FIELDS FROM `users`
+ SQL (0.001440) SHOW FIELDS FROM `photos`
+ SQL (0.001354) SHOW FIELDS FROM `cameras`
+ SQL (0.001544) SHOW FIELDS FROM `users`
+ SQL (0.001405) SHOW FIELDS FROM `photos`
+ SQL (0.000239) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000111) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010751) SHOW FIELDS FROM `users`
+ SQL (0.002354) SHOW FIELDS FROM `photos`
+ SQL (0.001463) SHOW FIELDS FROM `users`
+ SQL (0.001588) SHOW FIELDS FROM `photos`
+ SQL (0.001505) SHOW FIELDS FROM `cameras`
+ SQL (0.001464) SHOW FIELDS FROM `users`
+ SQL (0.001509) SHOW FIELDS FROM `photos`
+ SQL (0.000235) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000133) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010651) SHOW FIELDS FROM `users`
+ SQL (0.002468) SHOW FIELDS FROM `photos`
+ SQL (0.001364) SHOW FIELDS FROM `users`
+ SQL (0.001503) SHOW FIELDS FROM `photos`
+ SQL (0.001543) SHOW FIELDS FROM `cameras`
+ SQL (0.001452) SHOW FIELDS FROM `users`
+ SQL (0.001445) SHOW FIELDS FROM `photos`
+ SQL (0.000228) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000147) SET SQL_AUTO_IS_NULL=0
+ SQL (0.330787) SHOW FIELDS FROM `users`
+ SQL (0.002584) SHOW FIELDS FROM `photos`
+ SQL (0.001456) SHOW FIELDS FROM `users`
+ SQL (0.001621) SHOW FIELDS FROM `photos`
+ SQL (0.001475) SHOW FIELDS FROM `cameras`
+ SQL (0.001481) SHOW FIELDS FROM `users`
+ SQL (0.001552) SHOW FIELDS FROM `photos`
+ SQL (0.000226) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000144) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010706) SHOW FIELDS FROM `users`
+ SQL (0.002394) SHOW FIELDS FROM `photos`
+ SQL (0.001322) SHOW FIELDS FROM `users`
+ SQL (0.001656) SHOW FIELDS FROM `photos`
+ SQL (0.001495) SHOW FIELDS FROM `cameras`
+ SQL (0.001498) SHOW FIELDS FROM `users`
+ SQL (0.001510) SHOW FIELDS FROM `photos`
+ SQL (0.000222) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010785) SHOW FIELDS FROM `users`
+ SQL (0.002249) SHOW FIELDS FROM `photos`
+ SQL (0.001469) SHOW FIELDS FROM `users`
+ SQL (0.001410) SHOW FIELDS FROM `photos`
+ SQL (0.001666) SHOW FIELDS FROM `cameras`
+ SQL (0.001627) SHOW FIELDS FROM `users`
+ SQL (0.002215) SHOW FIELDS FROM `photos`
+ SQL (0.000942) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000149) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010774) SHOW FIELDS FROM `users`
+ SQL (0.001649) SHOW FIELDS FROM `photos`
+ SQL (0.001497) SHOW FIELDS FROM `users`
+ SQL (0.001457) SHOW FIELDS FROM `photos`
+ SQL (0.001345) SHOW FIELDS FROM `cameras`
+ SQL (0.001298) SHOW FIELDS FROM `users`
+ SQL (0.001849) SHOW FIELDS FROM `photos`
+ SQL (0.000967) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000143) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010724) SHOW FIELDS FROM `users`
+ SQL (0.002360) SHOW FIELDS FROM `photos`
+ SQL (0.001570) SHOW FIELDS FROM `users`
+ SQL (0.001733) SHOW FIELDS FROM `photos`
+ SQL (0.001487) SHOW FIELDS FROM `cameras`
+ SQL (0.001624) SHOW FIELDS FROM `users`
+ SQL (0.001840) SHOW FIELDS FROM `photos`
+ SQL (0.001080) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000148) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010885) SHOW FIELDS FROM `users`
+ SQL (0.002106) SHOW FIELDS FROM `photos`
+ SQL (0.001603) SHOW FIELDS FROM `users`
+ SQL (0.001575) SHOW FIELDS FROM `photos`
+ SQL (0.001529) SHOW FIELDS FROM `cameras`
+ SQL (0.001517) SHOW FIELDS FROM `users`
+ SQL (0.001556) SHOW FIELDS FROM `photos`
+ SQL (0.000260) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010689) SHOW FIELDS FROM `users`
+ SQL (0.002034) SHOW FIELDS FROM `photos`
+ SQL (0.001430) SHOW FIELDS FROM `users`
+ SQL (0.001590) SHOW FIELDS FROM `photos`
+ SQL (0.001434) SHOW FIELDS FROM `cameras`
+ SQL (0.001543) SHOW FIELDS FROM `users`
+ SQL (0.001597) SHOW FIELDS FROM `photos`
+ SQL (0.001103) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000143) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010735) SHOW FIELDS FROM `users`
+ SQL (0.002171) SHOW FIELDS FROM `photos`
+ SQL (0.001553) SHOW FIELDS FROM `users`
+ SQL (0.001586) SHOW FIELDS FROM `photos`
+ SQL (0.001520) SHOW FIELDS FROM `cameras`
+ SQL (0.001441) SHOW FIELDS FROM `users`
+ SQL (0.001560) SHOW FIELDS FROM `photos`
+ SQL (0.001796) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010772) SHOW FIELDS FROM `users`
+ SQL (0.002291) SHOW FIELDS FROM `photos`
+ SQL (0.001505) SHOW FIELDS FROM `users`
+ SQL (0.001466) SHOW FIELDS FROM `photos`
+ SQL (0.002032) SHOW FIELDS FROM `cameras`
+ SQL (0.001543) SHOW FIELDS FROM `users`
+ SQL (0.001434) SHOW FIELDS FROM `photos`
+ SQL (0.000147) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010845) SHOW FIELDS FROM `users`
+ SQL (0.002185) SHOW FIELDS FROM `photos`
+ SQL (0.001479) SHOW FIELDS FROM `users`
+ SQL (0.001551) SHOW FIELDS FROM `photos`
+ SQL (0.001459) SHOW FIELDS FROM `cameras`
+ SQL (0.001521) SHOW FIELDS FROM `users`
+ SQL (0.001392) SHOW FIELDS FROM `photos`
+ SQL (0.000222) SELECT photos.user_id, photos.camera_id, photos.id
+FROM photos 
+ SQL (0.000246) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000136) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010662) SHOW FIELDS FROM `users`
+ SQL (0.002267) SHOW FIELDS FROM `photos`
+ SQL (0.001467) SHOW FIELDS FROM `users`
+ SQL (0.001437) SHOW FIELDS FROM `photos`
+ SQL (0.001355) SHOW FIELDS FROM `cameras`
+ SQL (0.001506) SHOW FIELDS FROM `users`
+ SQL (0.012944) SHOW FIELDS FROM `photos`
+ SQL (0.000256) SELECT *
+FROM photos 
+ SQL (0.000271) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010682) SHOW FIELDS FROM `users`
+ SQL (0.002485) SHOW FIELDS FROM `photos`
+ SQL (0.001454) SHOW FIELDS FROM `users`
+ SQL (0.001588) SHOW FIELDS FROM `photos`
+ SQL (0.001480) SHOW FIELDS FROM `cameras`
+ SQL (0.001539) SHOW FIELDS FROM `users`
+ SQL (0.001735) SHOW FIELDS FROM `photos`
+ SQL (0.000111) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010744) SHOW FIELDS FROM `users`
+ SQL (0.002250) SHOW FIELDS FROM `photos`
+ SQL (0.001491) SHOW FIELDS FROM `users`
+ SQL (0.001534) SHOW FIELDS FROM `photos`
+ SQL (0.001499) SHOW FIELDS FROM `cameras`
+ SQL (0.001482) SHOW FIELDS FROM `users`
+ SQL (0.001496) SHOW FIELDS FROM `photos`
+ SQL (0.000165) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010840) SHOW FIELDS FROM `users`
+ SQL (0.002301) SHOW FIELDS FROM `photos`
+ SQL (0.001598) SHOW FIELDS FROM `users`
+ SQL (0.001456) SHOW FIELDS FROM `photos`
+ SQL (0.001241) SHOW FIELDS FROM `cameras`
+ SQL (0.001479) SHOW FIELDS FROM `users`
+ SQL (0.000887) SHOW FIELDS FROM `photos`
+ SQL (0.000137) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010721) SHOW FIELDS FROM `users`
+ SQL (0.002243) SHOW FIELDS FROM `photos`
+ SQL (0.001485) SHOW FIELDS FROM `users`
+ SQL (0.001592) SHOW FIELDS FROM `photos`
+ SQL (0.001519) SHOW FIELDS FROM `cameras`
+ SQL (0.001480) SHOW FIELDS FROM `users`
+ SQL (0.001534) SHOW FIELDS FROM `photos`
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010748) SHOW FIELDS FROM `users`
+ SQL (0.002303) SHOW FIELDS FROM `photos`
+ SQL (0.001459) SHOW FIELDS FROM `users`
+ SQL (0.001580) SHOW FIELDS FROM `photos`
+ SQL (0.001584) SHOW FIELDS FROM `cameras`
+ SQL (0.001507) SHOW FIELDS FROM `users`
+ SQL (0.001526) SHOW FIELDS FROM `photos`
+ SQL (0.000139) SET SQL_AUTO_IS_NULL=0
+ SQL (0.001564) SHOW FIELDS FROM `users`
+ SQL (0.001517) SHOW FIELDS FROM `photos`
+ SQL (0.001405) SHOW FIELDS FROM `users`
+ SQL (0.001516) SHOW FIELDS FROM `photos`
+ SQL (0.001704) SHOW FIELDS FROM `cameras`
+ SQL (0.001583) SHOW FIELDS FROM `users`
+ SQL (0.001579) SHOW FIELDS FROM `photos`
+ SQL (0.000135) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010720) SHOW FIELDS FROM `users`
+ SQL (0.002156) SHOW FIELDS FROM `photos`
+ SQL (0.001639) SHOW FIELDS FROM `users`
+ SQL (0.001434) SHOW FIELDS FROM `photos`
+ SQL (0.001357) SHOW FIELDS FROM `cameras`
+ SQL (0.001513) SHOW FIELDS FROM `users`
+ SQL (0.001474) SHOW FIELDS FROM `photos`
+ SQL (0.000147) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010719) SHOW FIELDS FROM `users`
+ SQL (0.002256) SHOW FIELDS FROM `photos`
+ SQL (0.001531) SHOW FIELDS FROM `users`
+ SQL (0.001453) SHOW FIELDS FROM `photos`
+ SQL (0.001388) SHOW FIELDS FROM `cameras`
+ SQL (0.001494) SHOW FIELDS FROM `users`
+ SQL (0.001101) SHOW FIELDS FROM `photos`
+ SQL (0.000219) SELECT users.id
+FROM users
+WHERE users.id = 1
+ SQL (0.000157) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.011477) SHOW FIELDS FROM `users`
+ SQL (0.002257) SHOW FIELDS FROM `photos`
+ SQL (0.001520) SHOW FIELDS FROM `users`
+ SQL (0.001410) SHOW FIELDS FROM `photos`
+ SQL (0.001383) SHOW FIELDS FROM `cameras`
+ SQL (0.001505) SHOW FIELDS FROM `users`
+ SQL (0.001462) SHOW FIELDS FROM `photos`
+ SQL (0.000222) SELECT users.id
+FROM users
+WHERE users.id = 1
+ SQL (0.000197) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000148) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010701) SHOW FIELDS FROM `users`
+ SQL (0.002382) SHOW FIELDS FROM `photos`
+ SQL (0.001523) SHOW FIELDS FROM `users`
+ SQL (0.001558) SHOW FIELDS FROM `photos`
+ SQL (0.001494) SHOW FIELDS FROM `cameras`
+ SQL (0.001467) SHOW FIELDS FROM `users`
+ SQL (0.001516) SHOW FIELDS FROM `photos`
+ SQL (0.000129) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010711) SHOW FIELDS FROM `users`
+ SQL (0.002382) SHOW FIELDS FROM `photos`
+ SQL (0.001495) SHOW FIELDS FROM `users`
+ SQL (0.001445) SHOW FIELDS FROM `photos`
+ SQL (0.001363) SHOW FIELDS FROM `cameras`
+ SQL (0.001557) SHOW FIELDS FROM `users`
+ SQL (0.001433) SHOW FIELDS FROM `photos`
+ SQL (0.000000) Mysql::Error: Unknown column 'photos.id' in 'field list': SELECT photos.id
+FROM users
+WHERE users.id = 1
+ SQL (0.000132) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010902) SHOW FIELDS FROM `users`
+ SQL (0.002079) SHOW FIELDS FROM `photos`
+ SQL (0.001455) SHOW FIELDS FROM `users`
+ SQL (0.001626) SHOW FIELDS FROM `photos`
+ SQL (0.012539) SHOW FIELDS FROM `cameras`
+ SQL (0.001557) SHOW FIELDS FROM `users`
+ SQL (0.001437) SHOW FIELDS FROM `photos`
+ SQL (0.000255) SELECT users.id
+FROM users
+WHERE users.id = 1
+ SQL (0.000225) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000148) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010766) SHOW FIELDS FROM `users`
+ SQL (0.002370) SHOW FIELDS FROM `photos`
+ SQL (0.001453) SHOW FIELDS FROM `users`
+ SQL (0.001556) SHOW FIELDS FROM `photos`
+ SQL (0.001492) SHOW FIELDS FROM `cameras`
+ SQL (0.001243) SHOW FIELDS FROM `users`
+ SQL (0.001527) SHOW FIELDS FROM `photos`
+ SQL (0.000151) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010730) SHOW FIELDS FROM `users`
+ SQL (0.002308) SHOW FIELDS FROM `photos`
+ SQL (0.001489) SHOW FIELDS FROM `users`
+ SQL (0.001571) SHOW FIELDS FROM `photos`
+ SQL (0.001345) SHOW FIELDS FROM `cameras`
+ SQL (0.001456) SHOW FIELDS FROM `users`
+ SQL (0.001161) SHOW FIELDS FROM `photos`
+ SQL (0.000215) SELECT users.id
+FROM users
+WHERE users.id = 1
+ SQL (0.000261) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000139) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010683) SHOW FIELDS FROM `users`
+ SQL (0.002298) SHOW FIELDS FROM `photos`
+ SQL (0.001478) SHOW FIELDS FROM `users`
+ SQL (0.001413) SHOW FIELDS FROM `photos`
+ SQL (0.001521) SHOW FIELDS FROM `cameras`
+ SQL (0.001462) SHOW FIELDS FROM `users`
+ SQL (0.001509) SHOW FIELDS FROM `photos`
+ SQL (0.001637) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000136) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010714) SHOW FIELDS FROM `users`
+ SQL (0.002255) SHOW FIELDS FROM `photos`
+ SQL (0.001471) SHOW FIELDS FROM `users`
+ SQL (0.001491) SHOW FIELDS FROM `photos`
+ SQL (0.001494) SHOW FIELDS FROM `cameras`
+ SQL (0.001537) SHOW FIELDS FROM `users`
+ SQL (0.001500) SHOW FIELDS FROM `photos`
+ SQL (0.000144) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010658) SHOW FIELDS FROM `users`
+ SQL (0.002047) SHOW FIELDS FROM `photos`
+ SQL (0.001307) SHOW FIELDS FROM `users`
+ SQL (0.001529) SHOW FIELDS FROM `photos`
+ SQL (0.001380) SHOW FIELDS FROM `cameras`
+ SQL (0.001558) SHOW FIELDS FROM `users`
+ SQL (0.000851) SHOW FIELDS FROM `photos`
+ SQL (0.000135) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010643) SHOW FIELDS FROM `users`
+ SQL (0.002531) SHOW FIELDS FROM `photos`
+ SQL (0.001449) SHOW FIELDS FROM `users`
+ SQL (0.001423) SHOW FIELDS FROM `photos`
+ SQL (0.001522) SHOW FIELDS FROM `cameras`
+ SQL (0.001515) SHOW FIELDS FROM `users`
+ SQL (0.001581) SHOW FIELDS FROM `photos`
+ SQL (0.000147) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010786) SHOW FIELDS FROM `users`
+ SQL (0.002348) SHOW FIELDS FROM `photos`
+ SQL (0.001476) SHOW FIELDS FROM `users`
+ SQL (0.001604) SHOW FIELDS FROM `photos`
+ SQL (0.001380) SHOW FIELDS FROM `cameras`
+ SQL (0.001484) SHOW FIELDS FROM `users`
+ SQL (0.001383) SHOW FIELDS FROM `photos`
+ SQL (0.000117) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010702) SHOW FIELDS FROM `users`
+ SQL (0.002339) SHOW FIELDS FROM `photos`
+ SQL (0.001304) SHOW FIELDS FROM `users`
+ SQL (0.001578) SHOW FIELDS FROM `photos`
+ SQL (0.001470) SHOW FIELDS FROM `cameras`
+ SQL (0.001524) SHOW FIELDS FROM `users`
+ SQL (0.001554) SHOW FIELDS FROM `photos`
+ SQL (0.000144) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010746) SHOW FIELDS FROM `users`
+ SQL (0.002433) SHOW FIELDS FROM `photos`
+ SQL (0.001489) SHOW FIELDS FROM `users`
+ SQL (0.001530) SHOW FIELDS FROM `photos`
+ SQL (0.001540) SHOW FIELDS FROM `cameras`
+ SQL (0.001528) SHOW FIELDS FROM `users`
+ SQL (0.001524) SHOW FIELDS FROM `photos`
+ SQL (0.000393) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000149) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010676) SHOW FIELDS FROM `users`
+ SQL (0.002224) SHOW FIELDS FROM `photos`
+ SQL (0.001456) SHOW FIELDS FROM `users`
+ SQL (0.001773) SHOW FIELDS FROM `photos`
+ SQL (0.001509) SHOW FIELDS FROM `cameras`
+ SQL (0.001473) SHOW FIELDS FROM `users`
+ SQL (0.001511) SHOW FIELDS FROM `photos`
+ SQL (0.000274) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010825) SHOW FIELDS FROM `users`
+ SQL (0.002358) SHOW FIELDS FROM `photos`
+ SQL (0.001492) SHOW FIELDS FROM `users`
+ SQL (0.001578) SHOW FIELDS FROM `photos`
+ SQL (0.001702) SHOW FIELDS FROM `cameras`
+ SQL (0.001495) SHOW FIELDS FROM `users`
+ SQL (0.001778) SHOW FIELDS FROM `photos`
+ SQL (0.000348) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000113) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010701) SHOW FIELDS FROM `users`
+ SQL (0.002380) SHOW FIELDS FROM `photos`
+ SQL (0.001329) SHOW FIELDS FROM `users`
+ SQL (0.001403) SHOW FIELDS FROM `photos`
+ SQL (0.001409) SHOW FIELDS FROM `cameras`
+ SQL (0.001458) SHOW FIELDS FROM `users`
+ SQL (0.001486) SHOW FIELDS FROM `photos`
+ SQL (0.000562) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000134) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010761) SHOW FIELDS FROM `users`
+ SQL (0.002300) SHOW FIELDS FROM `photos`
+ SQL (0.001565) SHOW FIELDS FROM `users`
+ SQL (0.001514) SHOW FIELDS FROM `photos`
+ SQL (0.001377) SHOW FIELDS FROM `cameras`
+ SQL (0.001553) SHOW FIELDS FROM `users`
+ SQL (0.001454) SHOW FIELDS FROM `photos`
+ SQL (0.000319) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000156) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010664) SHOW FIELDS FROM `users`
+ SQL (0.002495) SHOW FIELDS FROM `photos`
+ SQL (0.001454) SHOW FIELDS FROM `users`
+ SQL (0.001569) SHOW FIELDS FROM `photos`
+ SQL (0.001277) SHOW FIELDS FROM `cameras`
+ SQL (0.001250) SHOW FIELDS FROM `users`
+ SQL (0.001543) SHOW FIELDS FROM `photos`
+ SQL (0.000263) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000143) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010756) SHOW FIELDS FROM `users`
+ SQL (0.002397) SHOW FIELDS FROM `photos`
+ SQL (0.001731) SHOW FIELDS FROM `users`
+ SQL (0.001443) SHOW FIELDS FROM `photos`
+ SQL (0.001366) SHOW FIELDS FROM `cameras`
+ SQL (0.001472) SHOW FIELDS FROM `users`
+ SQL (0.001420) SHOW FIELDS FROM `photos`
+ SQL (0.000148) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010705) SHOW FIELDS FROM `users`
+ SQL (0.002368) SHOW FIELDS FROM `photos`
+ SQL (0.001556) SHOW FIELDS FROM `users`
+ SQL (0.001472) SHOW FIELDS FROM `photos`
+ SQL (0.001455) SHOW FIELDS FROM `cameras`
+ SQL (0.001475) SHOW FIELDS FROM `users`
+ SQL (0.002127) SHOW FIELDS FROM `photos`
+ SQL (0.001414) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010742) SHOW FIELDS FROM `users`
+ SQL (0.002380) SHOW FIELDS FROM `photos`
+ SQL (0.001634) SHOW FIELDS FROM `users`
+ SQL (0.001587) SHOW FIELDS FROM `photos`
+ SQL (0.001452) SHOW FIELDS FROM `cameras`
+ SQL (0.001454) SHOW FIELDS FROM `users`
+ SQL (0.001514) SHOW FIELDS FROM `photos`
+ SQL (0.000135) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010668) SHOW FIELDS FROM `users`
+ SQL (0.002191) SHOW FIELDS FROM `photos`
+ SQL (0.001521) SHOW FIELDS FROM `users`
+ SQL (0.001418) SHOW FIELDS FROM `photos`
+ SQL (0.001330) SHOW FIELDS FROM `cameras`
+ SQL (0.001474) SHOW FIELDS FROM `users`
+ SQL (0.001406) SHOW FIELDS FROM `photos`
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010693) SHOW FIELDS FROM `users`
+ SQL (0.002296) SHOW FIELDS FROM `photos`
+ SQL (0.001485) SHOW FIELDS FROM `users`
+ SQL (0.001604) SHOW FIELDS FROM `photos`
+ SQL (0.001479) SHOW FIELDS FROM `cameras`
+ SQL (0.001660) SHOW FIELDS FROM `users`
+ SQL (0.001632) SHOW FIELDS FROM `photos`
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010678) SHOW FIELDS FROM `users`
+ SQL (0.002302) SHOW FIELDS FROM `photos`
+ SQL (0.001501) SHOW FIELDS FROM `users`
+ SQL (0.001360) SHOW FIELDS FROM `photos`
+ SQL (0.001353) SHOW FIELDS FROM `cameras`
+ SQL (0.001562) SHOW FIELDS FROM `users`
+ SQL (0.001542) SHOW FIELDS FROM `photos`
+ SQL (0.000147) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010704) SHOW FIELDS FROM `users`
+ SQL (0.002335) SHOW FIELDS FROM `photos`
+ SQL (0.001425) SHOW FIELDS FROM `users`
+ SQL (0.001468) SHOW FIELDS FROM `photos`
+ SQL (0.001469) SHOW FIELDS FROM `cameras`
+ SQL (0.001573) SHOW FIELDS FROM `users`
+ SQL (0.001489) SHOW FIELDS FROM `photos`
+ SQL (0.000148) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010787) SHOW FIELDS FROM `users`
+ SQL (0.002303) SHOW FIELDS FROM `photos`
+ SQL (0.001529) SHOW FIELDS FROM `users`
+ SQL (0.001689) SHOW FIELDS FROM `photos`
+ SQL (0.001503) SHOW FIELDS FROM `cameras`
+ SQL (0.001463) SHOW FIELDS FROM `users`
+ SQL (0.001487) SHOW FIELDS FROM `photos`
+ SQL (0.000149) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010737) SHOW FIELDS FROM `users`
+ SQL (0.002412) SHOW FIELDS FROM `photos`
+ SQL (0.001487) SHOW FIELDS FROM `users`
+ SQL (0.001547) SHOW FIELDS FROM `photos`
+ SQL (0.001571) SHOW FIELDS FROM `cameras`
+ SQL (0.001482) SHOW FIELDS FROM `users`
+ SQL (0.001395) SHOW FIELDS FROM `photos`
+ SQL (0.000481) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010918) SHOW FIELDS FROM `users`
+ SQL (0.001957) SHOW FIELDS FROM `photos`
+ SQL (0.001485) SHOW FIELDS FROM `users`
+ SQL (0.001498) SHOW FIELDS FROM `photos`
+ SQL (0.001374) SHOW FIELDS FROM `cameras`
+ SQL (0.001461) SHOW FIELDS FROM `users`
+ SQL (0.001923) SHOW FIELDS FROM `photos`
+ SQL (0.000233) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000232) SELECT photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.011208) SHOW FIELDS FROM `users`
+ SQL (0.002172) SHOW FIELDS FROM `photos`
+ SQL (0.001453) SHOW FIELDS FROM `users`
+ SQL (0.001526) SHOW FIELDS FROM `photos`
+ SQL (0.001666) SHOW FIELDS FROM `cameras`
+ SQL (0.001273) SHOW FIELDS FROM `users`
+ SQL (0.001845) SHOW FIELDS FROM `photos`
+ SQL (0.000270) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000133) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010785) SHOW FIELDS FROM `users`
+ SQL (0.002207) SHOW FIELDS FROM `photos`
+ SQL (0.001480) SHOW FIELDS FROM `users`
+ SQL (0.001563) SHOW FIELDS FROM `photos`
+ SQL (0.001459) SHOW FIELDS FROM `cameras`
+ SQL (0.001206) SHOW FIELDS FROM `users`
+ SQL (0.001250) SHOW FIELDS FROM `photos`
+ SQL (0.000224) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000227) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000192) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010546) SHOW FIELDS FROM `users`
+ SQL (0.002397) SHOW FIELDS FROM `photos`
+ SQL (0.002065) SHOW FIELDS FROM `users`
+ SQL (0.001381) SHOW FIELDS FROM `photos`
+ SQL (0.000979) SHOW FIELDS FROM `cameras`
+ SQL (0.001410) SHOW FIELDS FROM `users`
+ SQL (0.001516) SHOW FIELDS FROM `photos`
+ SQL (0.000216) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000240) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010781) SHOW FIELDS FROM `users`
+ SQL (0.002045) SHOW FIELDS FROM `photos`
+ SQL (0.001462) SHOW FIELDS FROM `users`
+ SQL (0.001712) SHOW FIELDS FROM `photos`
+ SQL (0.001383) SHOW FIELDS FROM `cameras`
+ SQL (0.001934) SHOW FIELDS FROM `users`
+ SQL (0.001974) SHOW FIELDS FROM `photos`
+ SQL (0.000277) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000266) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010789) SHOW FIELDS FROM `users`
+ SQL (0.002174) SHOW FIELDS FROM `photos`
+ SQL (0.001549) SHOW FIELDS FROM `users`
+ SQL (0.001406) SHOW FIELDS FROM `photos`
+ SQL (0.001380) SHOW FIELDS FROM `cameras`
+ SQL (0.001590) SHOW FIELDS FROM `users`
+ SQL (0.001465) SHOW FIELDS FROM `photos`
+ SQL (0.000236) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000260) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000148) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010729) SHOW FIELDS FROM `users`
+ SQL (0.002288) SHOW FIELDS FROM `photos`
+ SQL (0.001373) SHOW FIELDS FROM `users`
+ SQL (0.001594) SHOW FIELDS FROM `photos`
+ SQL (0.001516) SHOW FIELDS FROM `cameras`
+ SQL (0.001470) SHOW FIELDS FROM `users`
+ SQL (0.001653) SHOW FIELDS FROM `photos`
+ SQL (0.000249) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000324) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010695) SHOW FIELDS FROM `users`
+ SQL (0.002188) SHOW FIELDS FROM `photos`
+ SQL (0.001450) SHOW FIELDS FROM `users`
+ SQL (0.001569) SHOW FIELDS FROM `photos`
+ SQL (0.001437) SHOW FIELDS FROM `cameras`
+ SQL (0.001780) SHOW FIELDS FROM `users`
+ SQL (0.002270) SHOW FIELDS FROM `photos`
+ SQL (0.001585) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000325) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000151) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010721) SHOW FIELDS FROM `users`
+ SQL (0.002947) SHOW FIELDS FROM `photos`
+ SQL (0.001515) SHOW FIELDS FROM `users`
+ SQL (0.001270) SHOW FIELDS FROM `photos`
+ SQL (0.001479) SHOW FIELDS FROM `cameras`
+ SQL (0.001428) SHOW FIELDS FROM `users`
+ SQL (0.001953) SHOW FIELDS FROM `photos`
+ SQL (0.000253) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000279) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010670) SHOW FIELDS FROM `users`
+ SQL (0.002111) SHOW FIELDS FROM `photos`
+ SQL (0.001460) SHOW FIELDS FROM `users`
+ SQL (0.001578) SHOW FIELDS FROM `photos`
+ SQL (0.001576) SHOW FIELDS FROM `cameras`
+ SQL (0.001497) SHOW FIELDS FROM `users`
+ SQL (0.001326) SHOW FIELDS FROM `photos`
+ SQL (0.000235) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000250) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.001613) SHOW FIELDS FROM `users`
+ SQL (0.001535) SHOW FIELDS FROM `photos`
+ SQL (0.001418) SHOW FIELDS FROM `users`
+ SQL (0.001545) SHOW FIELDS FROM `photos`
+ SQL (0.001536) SHOW FIELDS FROM `cameras`
+ SQL (0.001527) SHOW FIELDS FROM `users`
+ SQL (0.001497) SHOW FIELDS FROM `photos`
+ SQL (0.000230) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000227) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000134) SET SQL_AUTO_IS_NULL=0
+ SQL (0.011304) SHOW FIELDS FROM `users`
+ SQL (0.002381) SHOW FIELDS FROM `photos`
+ SQL (0.001508) SHOW FIELDS FROM `users`
+ SQL (0.001665) SHOW FIELDS FROM `photos`
+ SQL (0.001498) SHOW FIELDS FROM `cameras`
+ SQL (0.001503) SHOW FIELDS FROM `users`
+ SQL (0.001514) SHOW FIELDS FROM `photos`
+ SQL (0.000225) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000231) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000134) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010747) SHOW FIELDS FROM `users`
+ SQL (0.002111) SHOW FIELDS FROM `photos`
+ SQL (0.001510) SHOW FIELDS FROM `users`
+ SQL (0.001581) SHOW FIELDS FROM `photos`
+ SQL (0.001428) SHOW FIELDS FROM `cameras`
+ SQL (0.001507) SHOW FIELDS FROM `users`
+ SQL (0.001808) SHOW FIELDS FROM `photos`
+ SQL (0.000247) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000237) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010702) SHOW FIELDS FROM `users`
+ SQL (0.002320) SHOW FIELDS FROM `photos`
+ SQL (0.001504) SHOW FIELDS FROM `users`
+ SQL (0.001589) SHOW FIELDS FROM `photos`
+ SQL (0.001555) SHOW FIELDS FROM `cameras`
+ SQL (0.002636) SHOW FIELDS FROM `users`
+ SQL (0.001766) SHOW FIELDS FROM `photos`
+ SQL (0.000239) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000281) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000115) SET SQL_AUTO_IS_NULL=0
+ SQL (0.011377) SHOW FIELDS FROM `users`
+ SQL (0.002266) SHOW FIELDS FROM `photos`
+ SQL (0.001512) SHOW FIELDS FROM `users`
+ SQL (0.001553) SHOW FIELDS FROM `photos`
+ SQL (0.001686) SHOW FIELDS FROM `cameras`
+ SQL (0.001487) SHOW FIELDS FROM `users`
+ SQL (0.001520) SHOW FIELDS FROM `photos`
+ SQL (0.000223) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000233) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000133) SET SQL_AUTO_IS_NULL=0
+ SQL (0.011494) SHOW FIELDS FROM `users`
+ SQL (0.002092) SHOW FIELDS FROM `photos`
+ SQL (0.001556) SHOW FIELDS FROM `cameras`
+ SQL (0.001490) SHOW FIELDS FROM `users`
+ SQL (0.001594) SHOW FIELDS FROM `photos`
+ SQL (0.001273) SHOW FIELDS FROM `cameras`
+ SQL (0.001512) SHOW FIELDS FROM `users`
+ SQL (0.001362) SHOW FIELDS FROM `photos`
+ SQL (0.001476) SHOW FIELDS FROM `cameras`
+ SQL (0.000227) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000335) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.001514) SHOW FIELDS FROM `users`
+ SQL (0.001589) SHOW FIELDS FROM `photos`
+ SQL (0.001412) SHOW FIELDS FROM `cameras`
+ SQL (0.000110) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010696) SHOW FIELDS FROM `users`
+ SQL (0.002449) SHOW FIELDS FROM `photos`
+ SQL (0.001558) SHOW FIELDS FROM `cameras`
+ SQL (0.001720) SHOW FIELDS FROM `users`
+ SQL (0.001577) SHOW FIELDS FROM `photos`
+ SQL (0.001420) SHOW FIELDS FROM `cameras`
+ SQL (0.009109) SHOW FIELDS FROM `users`
+ SQL (0.001770) SHOW FIELDS FROM `photos`
+ SQL (0.001409) SHOW FIELDS FROM `cameras`
+ SQL (0.000247) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000305) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ User Columns (0.001429) SHOW FIELDS FROM `users`
+ SQL (0.001503) SHOW FIELDS FROM `users`
+ SQL (0.001595) SHOW FIELDS FROM `photos`
+ SQL (0.001775) SHOW FIELDS FROM `cameras`
+ SQL (0.000137) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010741) SHOW FIELDS FROM `users`
+ SQL (0.002217) SHOW FIELDS FROM `photos`
+ SQL (0.001614) SHOW FIELDS FROM `cameras`
+ SQL (0.001277) SHOW FIELDS FROM `users`
+ SQL (0.001394) SHOW FIELDS FROM `photos`
+ SQL (0.001412) SHOW FIELDS FROM `cameras`
+ SQL (0.001534) SHOW FIELDS FROM `users`
+ SQL (0.001595) SHOW FIELDS FROM `photos`
+ SQL (0.001771) SHOW FIELDS FROM `cameras`
+ SQL (0.000246) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000287) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.001537) SHOW FIELDS FROM `users`
+ SQL (0.001578) SHOW FIELDS FROM `photos`
+ SQL (0.001351) SHOW FIELDS FROM `cameras`
+ SQL (0.000124) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010755) SHOW FIELDS FROM `users`
+ SQL (0.002276) SHOW FIELDS FROM `photos`
+ SQL (0.001312) SHOW FIELDS FROM `cameras`
+ SQL (0.002071) SHOW FIELDS FROM `users`
+ SQL (0.001613) SHOW FIELDS FROM `photos`
+ SQL (0.001271) SHOW FIELDS FROM `cameras`
+ SQL (0.001665) SHOW FIELDS FROM `users`
+ SQL (0.001605) SHOW FIELDS FROM `photos`
+ SQL (0.001360) SHOW FIELDS FROM `cameras`
+ SQL (0.000247) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000303) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ User Columns (0.001449) SHOW FIELDS FROM `users`
+ SQL (0.001510) SHOW FIELDS FROM `users`
+ SQL (0.001413) SHOW FIELDS FROM `photos`
+ SQL (0.001546) SHOW FIELDS FROM `cameras`
+ SQL (0.000115) SET SQL_AUTO_IS_NULL=0
+ SQL (0.001542) SHOW FIELDS FROM `users`
+ SQL (0.001224) SHOW FIELDS FROM `photos`
+ SQL (0.001201) SHOW FIELDS FROM `cameras`
+ SQL (0.001325) SHOW FIELDS FROM `users`
+ SQL (0.001269) SHOW FIELDS FROM `photos`
+ SQL (0.001364) SHOW FIELDS FROM `cameras`
+ SQL (0.001517) SHOW FIELDS FROM `users`
+ SQL (0.001422) SHOW FIELDS FROM `photos`
+ SQL (0.001674) SHOW FIELDS FROM `cameras`
+ SQL (0.000270) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000269) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ User Columns (0.008183) SHOW FIELDS FROM `users`
+ Photo Columns (0.001576) SHOW FIELDS FROM `photos`
+ SQL (0.001595) SHOW FIELDS FROM `users`
+ SQL (0.001461) SHOW FIELDS FROM `photos`
+ SQL (0.001327) SHOW FIELDS FROM `cameras`
+ SQL (0.000129) SET SQL_AUTO_IS_NULL=0
+ SQL (0.001503) SHOW FIELDS FROM `users`
+ SQL (0.001544) SHOW FIELDS FROM `photos`
+ SQL (0.001444) SHOW FIELDS FROM `cameras`
+ SQL (0.001509) SHOW FIELDS FROM `users`
+ SQL (0.001593) SHOW FIELDS FROM `photos`
+ SQL (0.001422) SHOW FIELDS FROM `cameras`
+ SQL (0.001487) SHOW FIELDS FROM `users`
+ SQL (0.001996) SHOW FIELDS FROM `photos`
+ SQL (0.001380) SHOW FIELDS FROM `cameras`
+ SQL (0.000275) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000279) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ User Columns (0.001516) SHOW FIELDS FROM `users`
+ SQL (0.001449) SHOW FIELDS FROM `users`
+ SQL (0.001558) SHOW FIELDS FROM `photos`
+ SQL (0.001347) SHOW FIELDS FROM `cameras`
+ SQL (0.000133) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010735) SHOW FIELDS FROM `users`
+ SQL (0.002173) SHOW FIELDS FROM `photos`
+ SQL (0.001449) SHOW FIELDS FROM `cameras`
+ SQL (0.001510) SHOW FIELDS FROM `users`
+ SQL (0.001410) SHOW FIELDS FROM `photos`
+ SQL (0.001592) SHOW FIELDS FROM `cameras`
+ SQL (0.001570) SHOW FIELDS FROM `users`
+ SQL (0.001423) SHOW FIELDS FROM `photos`
+ SQL (0.001301) SHOW FIELDS FROM `cameras`
+ SQL (0.000287) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000301) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ User Columns (0.001475) SHOW FIELDS FROM `users`
+ Photo Columns (0.001465) SHOW FIELDS FROM `photos`
+ SQL (0.001633) SHOW FIELDS FROM `users`
+ SQL (0.001467) SHOW FIELDS FROM `photos`
+ SQL (0.001332) SHOW FIELDS FROM `cameras`
+ SQL (0.000132) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010888) SHOW FIELDS FROM `users`
+ SQL (0.002202) SHOW FIELDS FROM `photos`
+ SQL (0.001500) SHOW FIELDS FROM `cameras`
+ SQL (0.001457) SHOW FIELDS FROM `users`
+ SQL (0.001593) SHOW FIELDS FROM `photos`
+ SQL (0.001424) SHOW FIELDS FROM `cameras`
+ SQL (0.001492) SHOW FIELDS FROM `users`
+ SQL (0.001520) SHOW FIELDS FROM `photos`
+ SQL (0.001480) SHOW FIELDS FROM `cameras`
+ SQL (0.000290) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000263) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ SQL (0.000320) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ User Columns (0.001896) SHOW FIELDS FROM `users`
+ SQL (0.001262) SHOW FIELDS FROM `users`
+ SQL (0.001675) SHOW FIELDS FROM `photos`
+ SQL (0.001409) SHOW FIELDS FROM `cameras`
+ SQL (0.000130) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010691) SHOW FIELDS FROM `users`
+ SQL (0.002363) SHOW FIELDS FROM `photos`
+ SQL (0.001590) SHOW FIELDS FROM `cameras`
+ SQL (0.001560) SHOW FIELDS FROM `users`
+ SQL (0.013103) SHOW FIELDS FROM `photos`
+ SQL (0.001597) SHOW FIELDS FROM `cameras`
+ SQL (0.001491) SHOW FIELDS FROM `users`
+ SQL (0.001553) SHOW FIELDS FROM `photos`
+ SQL (0.001368) SHOW FIELDS FROM `cameras`
+ SQL (0.000300) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.001508) SHOW FIELDS FROM `users`
+ SQL (0.001583) SHOW FIELDS FROM `photos`
+ SQL (0.001442) SHOW FIELDS FROM `cameras`
+ SQL (0.000132) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010756) SHOW FIELDS FROM `users`
+ SQL (0.002320) SHOW FIELDS FROM `photos`
+ SQL (0.001416) SHOW FIELDS FROM `cameras`
+ SQL (0.001507) SHOW FIELDS FROM `users`
+ SQL (0.012716) SHOW FIELDS FROM `photos`
+ SQL (0.001406) SHOW FIELDS FROM `cameras`
+ SQL (0.001353) SHOW FIELDS FROM `users`
+ SQL (0.001440) SHOW FIELDS FROM `photos`
+ SQL (0.001263) SHOW FIELDS FROM `cameras`
+ SQL (0.000233) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000259) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ User Columns (0.001394) SHOW FIELDS FROM `users`
+ SQL (0.001487) SHOW FIELDS FROM `users`
+ SQL (0.001837) SHOW FIELDS FROM `photos`
+ SQL (0.001501) SHOW FIELDS FROM `cameras`
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.001575) SHOW FIELDS FROM `users`
+ SQL (0.001415) SHOW FIELDS FROM `photos`
+ SQL (0.001483) SHOW FIELDS FROM `cameras`
+ SQL (0.000820) SHOW FIELDS FROM `users`
+ SQL (0.001526) SHOW FIELDS FROM `photos`
+ SQL (0.001093) SHOW FIELDS FROM `cameras`
+ SQL (0.001526) SHOW FIELDS FROM `users`
+ SQL (0.001631) SHOW FIELDS FROM `photos`
+ SQL (0.001346) SHOW FIELDS FROM `cameras`
+ SQL (0.000282) SELECT *
+FROM users
+WHERE users.id = 1
+ SQL (0.000281) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ User Columns (0.001235) SHOW FIELDS FROM `users`
+ Photo Columns (0.001422) SHOW FIELDS FROM `photos`
+ SQL (0.001607) SHOW FIELDS FROM `users`
+ SQL (0.001685) SHOW FIELDS FROM `photos`
+ SQL (0.001318) SHOW FIELDS FROM `cameras`
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010894) SHOW FIELDS FROM `users`
+ SQL (0.002240) SHOW FIELDS FROM `photos`
+ SQL (0.001487) SHOW FIELDS FROM `cameras`
+ SQL (0.001578) SHOW FIELDS FROM `users`
+ SQL (0.001582) SHOW FIELDS FROM `photos`
+ SQL (0.001418) SHOW FIELDS FROM `cameras`
+ SQL (0.001528) SHOW FIELDS FROM `users`
+ SQL (0.001577) SHOW FIELDS FROM `photos`
+ SQL (0.001215) SHOW FIELDS FROM `cameras`
+ SQL (0.000251) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001387) SHOW FIELDS FROM `users`
+ SQL (0.000296) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001457) SHOW FIELDS FROM `photos`
+ SQL (0.001421) SHOW FIELDS FROM `users`
+ SQL (0.001431) SHOW FIELDS FROM `photos`
+ SQL (0.001485) SHOW FIELDS FROM `cameras`
+ SQL (0.000145) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010759) SHOW FIELDS FROM `users`
+ SQL (0.002325) SHOW FIELDS FROM `photos`
+ SQL (0.001391) SHOW FIELDS FROM `cameras`
+ SQL (0.001545) SHOW FIELDS FROM `users`
+ SQL (0.001442) SHOW FIELDS FROM `photos`
+ SQL (0.001285) SHOW FIELDS FROM `cameras`
+ SQL (0.001287) SHOW FIELDS FROM `users`
+ SQL (0.001565) SHOW FIELDS FROM `photos`
+ SQL (0.001098) SHOW FIELDS FROM `cameras`
+ SQL (0.000215) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001362) SHOW FIELDS FROM `users`
+ SQL (0.000283) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001459) SHOW FIELDS FROM `photos`
+ SQL (0.001404) SHOW FIELDS FROM `users`
+ SQL (0.001554) SHOW FIELDS FROM `photos`
+ SQL (0.001531) SHOW FIELDS FROM `cameras`
+ SQL (0.000146) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010611) SHOW FIELDS FROM `users`
+ SQL (0.002560) SHOW FIELDS FROM `photos`
+ SQL (0.001457) SHOW FIELDS FROM `cameras`
+ SQL (0.001439) SHOW FIELDS FROM `users`
+ SQL (0.001575) SHOW FIELDS FROM `photos`
+ SQL (0.001422) SHOW FIELDS FROM `cameras`
+ SQL (0.001475) SHOW FIELDS FROM `users`
+ SQL (0.001563) SHOW FIELDS FROM `photos`
+ SQL (0.001389) SHOW FIELDS FROM `cameras`
+ SQL (0.000213) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001375) SHOW FIELDS FROM `users`
+ SQL (0.000251) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001417) SHOW FIELDS FROM `photos`
+ SQL (0.001395) SHOW FIELDS FROM `users`
+ SQL (0.001539) SHOW FIELDS FROM `photos`
+ SQL (0.001552) SHOW FIELDS FROM `cameras`
+ SQL (0.000113) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010659) SHOW FIELDS FROM `users`
+ SQL (0.002496) SHOW FIELDS FROM `photos`
+ SQL (0.001466) SHOW FIELDS FROM `cameras`
+ SQL (0.001519) SHOW FIELDS FROM `users`
+ SQL (0.001591) SHOW FIELDS FROM `photos`
+ SQL (0.001455) SHOW FIELDS FROM `cameras`
+ SQL (0.001502) SHOW FIELDS FROM `users`
+ SQL (0.001543) SHOW FIELDS FROM `photos`
+ SQL (0.001432) SHOW FIELDS FROM `cameras`
+ SQL (0.000225) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001376) SHOW FIELDS FROM `users`
+ SQL (0.000266) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001440) SHOW FIELDS FROM `photos`
+ SQL (0.001105) SHOW FIELDS FROM `users`
+ SQL (0.001152) SHOW FIELDS FROM `photos`
+ SQL (0.001384) SHOW FIELDS FROM `cameras`
+ SQL (0.000127) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010753) SHOW FIELDS FROM `users`
+ SQL (0.002275) SHOW FIELDS FROM `photos`
+ SQL (0.001708) SHOW FIELDS FROM `cameras`
+ SQL (0.001413) SHOW FIELDS FROM `users`
+ SQL (0.001552) SHOW FIELDS FROM `photos`
+ SQL (0.001604) SHOW FIELDS FROM `cameras`
+ SQL (0.001482) SHOW FIELDS FROM `users`
+ SQL (0.001500) SHOW FIELDS FROM `photos`
+ SQL (0.001349) SHOW FIELDS FROM `cameras`
+ SQL (0.000227) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001386) SHOW FIELDS FROM `users`
+ SQL (0.000269) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001425) SHOW FIELDS FROM `photos`
+ SQL (0.001065) SHOW FIELDS FROM `users`
+ SQL (0.001438) SHOW FIELDS FROM `photos`
+ SQL (0.001376) SHOW FIELDS FROM `cameras`
+ SQL (0.000107) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010766) SHOW FIELDS FROM `users`
+ SQL (0.002300) SHOW FIELDS FROM `photos`
+ SQL (0.001306) SHOW FIELDS FROM `cameras`
+ SQL (0.001562) SHOW FIELDS FROM `users`
+ SQL (0.001725) SHOW FIELDS FROM `photos`
+ SQL (0.001356) SHOW FIELDS FROM `cameras`
+ SQL (0.001539) SHOW FIELDS FROM `users`
+ SQL (0.001465) SHOW FIELDS FROM `photos`
+ SQL (0.001345) SHOW FIELDS FROM `cameras`
+ SQL (0.000303) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001553) SHOW FIELDS FROM `users`
+ SQL (0.000299) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001329) SHOW FIELDS FROM `photos`
+ SQL (0.001422) SHOW FIELDS FROM `users`
+ SQL (0.001414) SHOW FIELDS FROM `photos`
+ SQL (0.001429) SHOW FIELDS FROM `cameras`
+ SQL (0.000349) SELECT *
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id LEFT OUTER JOIN cameras ON photos.camera_id = cameras.id
+WHERE users.id = 1
+ SQL (0.000109) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010688) SHOW FIELDS FROM `users`
+ SQL (0.002247) SHOW FIELDS FROM `photos`
+ SQL (0.001542) SHOW FIELDS FROM `cameras`
+ SQL (0.001432) SHOW FIELDS FROM `users`
+ SQL (0.001390) SHOW FIELDS FROM `photos`
+ SQL (0.001428) SHOW FIELDS FROM `cameras`
+ SQL (0.001641) SHOW FIELDS FROM `users`
+ SQL (0.001602) SHOW FIELDS FROM `photos`
+ SQL (0.001426) SHOW FIELDS FROM `cameras`
+ SQL (0.000253) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001398) SHOW FIELDS FROM `users`
+ SQL (0.000304) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001457) SHOW FIELDS FROM `photos`
+ SQL (0.001298) SHOW FIELDS FROM `users`
+ SQL (0.001539) SHOW FIELDS FROM `photos`
+ SQL (0.001487) SHOW FIELDS FROM `cameras`
+ SQL (0.000139) SET SQL_AUTO_IS_NULL=0
+ SQL (0.001575) SHOW FIELDS FROM `users`
+ SQL (0.001596) SHOW FIELDS FROM `photos`
+ SQL (0.001406) SHOW FIELDS FROM `cameras`
+ SQL (0.001432) SHOW FIELDS FROM `users`
+ SQL (0.001640) SHOW FIELDS FROM `photos`
+ SQL (0.001465) SHOW FIELDS FROM `cameras`
+ SQL (0.001463) SHOW FIELDS FROM `users`
+ SQL (0.001577) SHOW FIELDS FROM `photos`
+ SQL (0.001434) SHOW FIELDS FROM `cameras`
+ SQL (0.000258) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001417) SHOW FIELDS FROM `users`
+ SQL (0.000338) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001542) SHOW FIELDS FROM `photos`
+ SQL (0.001474) SHOW FIELDS FROM `users`
+ SQL (0.001582) SHOW FIELDS FROM `photos`
+ SQL (0.001524) SHOW FIELDS FROM `cameras`
+ SQL (0.000112) SET SQL_AUTO_IS_NULL=0
+ SQL (0.016053) SHOW FIELDS FROM `users`
+ SQL (0.001843) SHOW FIELDS FROM `photos`
+ SQL (0.001493) SHOW FIELDS FROM `cameras`
+ SQL (0.001376) SHOW FIELDS FROM `users`
+ SQL (0.001547) SHOW FIELDS FROM `photos`
+ SQL (0.001670) SHOW FIELDS FROM `cameras`
+ SQL (0.001504) SHOW FIELDS FROM `users`
+ SQL (0.001756) SHOW FIELDS FROM `photos`
+ SQL (0.001567) SHOW FIELDS FROM `cameras`
+ SQL (0.001476) SHOW FIELDS FROM `users`
+ SQL (0.001574) SHOW FIELDS FROM `photos`
+ SQL (0.001402) SHOW FIELDS FROM `cameras`
+ SQL (0.001565) SHOW FIELDS FROM `users`
+ SQL (0.001346) SHOW FIELDS FROM `photos`
+ SQL (0.001424) SHOW FIELDS FROM `cameras`
+ SQL (0.001447) SHOW FIELDS FROM `users`
+ SQL (0.001570) SHOW FIELDS FROM `photos`
+ SQL (0.001502) SHOW FIELDS FROM `cameras`
+ SQL (0.000244) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001413) SHOW FIELDS FROM `users`
+ SQL (0.000304) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001471) SHOW FIELDS FROM `photos`
+ SQL (0.034694) SHOW FIELDS FROM `users`
+ SQL (0.001709) SHOW FIELDS FROM `photos`
+ SQL (0.001407) SHOW FIELDS FROM `cameras`
+ SQL (0.000109) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010677) SHOW FIELDS FROM `users`
+ SQL (0.002292) SHOW FIELDS FROM `photos`
+ SQL (0.001455) SHOW FIELDS FROM `cameras`
+ SQL (0.001467) SHOW FIELDS FROM `users`
+ SQL (0.001537) SHOW FIELDS FROM `photos`
+ SQL (0.001429) SHOW FIELDS FROM `cameras`
+ SQL (0.001476) SHOW FIELDS FROM `users`
+ SQL (0.001679) SHOW FIELDS FROM `photos`
+ SQL (0.001440) SHOW FIELDS FROM `cameras`
+ SQL (0.001147) SHOW FIELDS FROM `users`
+ SQL (0.001687) SHOW FIELDS FROM `photos`
+ SQL (0.001424) SHOW FIELDS FROM `cameras`
+ SQL (0.001509) SHOW FIELDS FROM `users`
+ SQL (0.001622) SHOW FIELDS FROM `photos`
+ SQL (0.001417) SHOW FIELDS FROM `cameras`
+ SQL (0.001430) SHOW FIELDS FROM `users`
+ SQL (0.001540) SHOW FIELDS FROM `photos`
+ SQL (0.001420) SHOW FIELDS FROM `cameras`
+ SQL (0.000244) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001374) SHOW FIELDS FROM `users`
+ SQL (0.000288) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001449) SHOW FIELDS FROM `photos`
+ SQL (0.034463) SHOW FIELDS FROM `users`
+ SQL (0.001751) SHOW FIELDS FROM `photos`
+ SQL (0.002051) SHOW FIELDS FROM `cameras`
+ SQL (0.000108) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010738) SHOW FIELDS FROM `users`
+ SQL (0.002251) SHOW FIELDS FROM `photos`
+ SQL (0.001306) SHOW FIELDS FROM `cameras`
+ SQL (0.001717) SHOW FIELDS FROM `users`
+ SQL (0.001554) SHOW FIELDS FROM `photos`
+ SQL (0.001364) SHOW FIELDS FROM `cameras`
+ SQL (0.001622) SHOW FIELDS FROM `users`
+ SQL (0.001490) SHOW FIELDS FROM `photos`
+ SQL (0.001310) SHOW FIELDS FROM `cameras`
+ SQL (0.001666) SHOW FIELDS FROM `users`
+ SQL (0.002175) SHOW FIELDS FROM `photos`
+ SQL (0.001601) SHOW FIELDS FROM `cameras`
+ SQL (0.001647) SHOW FIELDS FROM `users`
+ SQL (0.002284) SHOW FIELDS FROM `photos`
+ SQL (0.001156) SHOW FIELDS FROM `cameras`
+ SQL (0.001447) SHOW FIELDS FROM `users`
+ SQL (0.001549) SHOW FIELDS FROM `photos`
+ SQL (0.001431) SHOW FIELDS FROM `cameras`
+ SQL (0.000391) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001439) SHOW FIELDS FROM `users`
+ SQL (0.000284) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001431) SHOW FIELDS FROM `photos`
+ SQL (0.036129) SHOW FIELDS FROM `users`
+ SQL (0.001678) SHOW FIELDS FROM `photos`
+ SQL (0.001446) SHOW FIELDS FROM `cameras`
+ SQL (0.000111) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010686) SHOW FIELDS FROM `users`
+ SQL (0.002498) SHOW FIELDS FROM `photos`
+ SQL (0.001549) SHOW FIELDS FROM `cameras`
+ SQL (0.001496) SHOW FIELDS FROM `users`
+ SQL (0.001586) SHOW FIELDS FROM `photos`
+ SQL (0.001451) SHOW FIELDS FROM `cameras`
+ SQL (0.001455) SHOW FIELDS FROM `users`
+ SQL (0.001648) SHOW FIELDS FROM `photos`
+ SQL (0.001364) SHOW FIELDS FROM `cameras`
+ SQL (0.001406) SHOW FIELDS FROM `users`
+ SQL (0.001501) SHOW FIELDS FROM `photos`
+ SQL (0.001399) SHOW FIELDS FROM `cameras`
+ SQL (0.001388) SHOW FIELDS FROM `users`
+ SQL (0.001888) SHOW FIELDS FROM `photos`
+ SQL (0.001454) SHOW FIELDS FROM `cameras`
+ SQL (0.001570) SHOW FIELDS FROM `users`
+ SQL (0.002665) SHOW FIELDS FROM `photos`
+ SQL (0.001922) SHOW FIELDS FROM `cameras`
+ SQL (0.001160) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001117) SHOW FIELDS FROM `users`
+ SQL (0.001219) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001255) SHOW FIELDS FROM `photos`
+ SQL (0.034678) SHOW FIELDS FROM `users`
+ SQL (0.001684) SHOW FIELDS FROM `photos`
+ SQL (0.001242) SHOW FIELDS FROM `cameras`
+ SQL (0.000110) SET SQL_AUTO_IS_NULL=0
+ SQL (0.010673) SHOW FIELDS FROM `users`
+ SQL (0.002380) SHOW FIELDS FROM `photos`
+ SQL (0.001444) SHOW FIELDS FROM `cameras`
+ SQL (0.001580) SHOW FIELDS FROM `users`
+ SQL (0.001158) SHOW FIELDS FROM `photos`
+ SQL (0.001358) SHOW FIELDS FROM `cameras`
+ SQL (0.002625) SHOW FIELDS FROM `users`
+ SQL (0.002378) SHOW FIELDS FROM `photos`
+ SQL (0.001774) SHOW FIELDS FROM `cameras`
+ SQL (0.002249) SHOW FIELDS FROM `users`
+ SQL (0.001218) SHOW FIELDS FROM `photos`
+ SQL (0.002117) SHOW FIELDS FROM `cameras`
+ SQL (0.001795) SHOW FIELDS FROM `users`
+ SQL (0.002656) SHOW FIELDS FROM `photos`
+ SQL (0.001412) SHOW FIELDS FROM `cameras`
+ SQL (0.001415) SHOW FIELDS FROM `users`
+ SQL (0.001519) SHOW FIELDS FROM `photos`
+ SQL (0.001043) SHOW FIELDS FROM `cameras`
+ SQL (0.000346) SELECT *
+FROM users
+WHERE users.id = 1
+ User Columns (0.001560) SHOW FIELDS FROM `users`
+ SQL (0.000297) SELECT photos.user_id, photos.camera_id, photos.id
+FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id
+WHERE users.id = 1
+ Photo Columns (0.001471) SHOW FIELDS FROM `photos`
+ SQL (0.001420) SHOW FIELDS FROM `users`
+ SQL (0.001463) SHOW FIELDS FROM `photos`
+ SQL (0.001395) SHOW FIELDS FROM `cameras`
diff --git a/spec/integration/scratch_spec.rb b/spec/integration/scratch_spec.rb
index 6426d2478d..12832c1162 100644
--- a/spec/integration/scratch_spec.rb
+++ b/spec/integration/scratch_spec.rb
@@ -2,27 +2,17 @@ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
describe 'Relational Algebra' do
before do
- User = TableRelation.new(:users)
- Photo = TableRelation.new(:photos)
- Camera = TableRelation.new(:cameras)
- user = User.select(User[:id] == 1)
- @user_photos = (user << Photo).on(user[:id] == Photo[:user_id])
+ @users = TableRelation.new(:users)
+ @photos = TableRelation.new(:photos)
+ @cameras = TableRelation.new(:cameras)
+ @user = @users.select(@users[:id] == 1)
+ @user_photos = (@user << @photos).on(@user[:id] == @photos[:user_id])
+ @user_cameras = (@user_photos << @cameras).on(@user_photos[:camera_id] == @cameras[:id])
end
it 'simulates User.has_many :photos' do
- @user_photos.to_sql.should == SelectBuilder.new do
- select { all }
- from :users do
- left_outer_join :photos do
- equals { column :users, :id; column :photos, :user_id }
- end
- end
- where do
- equals { column :users, :id; value 1 }
- end
- end
- @user_photos.to_sql.to_s.should be_like("""
- SELECT *
+ @user_photos.project(*@photos.attributes).to_sql.to_s.should be_like("""
+ SELECT photos.id, photos.user_id, photos.camera_id
FROM users
LEFT OUTER JOIN photos
ON users.id = photos.user_id
@@ -31,7 +21,16 @@ describe 'Relational Algebra' do
""")
end
- it 'simulating a User.has_many :cameras :through => :photos' do
- user_cameras = (@user_photos << Camera).on(@user_photos[:camera_id] == Camera[:id])
+ it 'simulates a User.has_many :cameras :through => :photos' do
+ @user_cameras.project(*@cameras.attributes).to_sql.to_s.should be_like("""
+ SELECT cameras.id
+ FROM users
+ LEFT OUTER JOIN photos
+ ON users.id = photos.user_id
+ LEFT OUTER JOIN cameras
+ ON photos.camera_id = cameras.id
+ WHERE
+ users.id = 1
+ """)
end
end \ No newline at end of file
diff --git a/spec/relations/attribute_spec.rb b/spec/relations/attribute_spec.rb
index 5ddbaa96b5..d8a007f918 100644
--- a/spec/relations/attribute_spec.rb
+++ b/spec/relations/attribute_spec.rb
@@ -57,6 +57,7 @@ describe Attribute do
end
end
+
describe '#to_sql' do
it "manufactures a column" do
Attribute.new(@relation1, :attribute_name, :alias).to_sql.should == SelectsBuilder.new do
diff --git a/spec/relations/join_relation_spec.rb b/spec/relations/join_relation_spec.rb
index a7c15fd76a..bae294440e 100644
--- a/spec/relations/join_relation_spec.rb
+++ b/spec/relations/join_relation_spec.rb
@@ -4,7 +4,7 @@ describe 'between two relations' do
before do
@relation1 = TableRelation.new(:foo)
@relation2 = TableRelation.new(:bar)
- @predicate = EqualityPredicate.new(@relation1[:a], @relation2[:b])
+ @predicate = EqualityPredicate.new(@relation1[:id], @relation2[:id])
end
describe '==' do
@@ -20,9 +20,9 @@ describe 'between two relations' do
describe '#to_sql' do
before do
- @relation1 = @relation1.select(@relation1[:c] == @relation2[:d])
+ @relation1 = @relation1.select(@relation1[:id] == @relation2[:foo_id])
class ConcreteJoinRelation < JoinRelation
- def join_name
+ def join_type
:inner_join
end
end
@@ -30,19 +30,25 @@ describe 'between two relations' do
it 'manufactures sql joining the two tables on the predicate, merging the selects' do
ConcreteJoinRelation.new(@relation1, @relation2, @predicate).to_sql.to_s.should == SelectBuilder.new do
- select { all }
+ select do
+ column :foo, :name
+ column :foo, :id
+ column :bar, :name
+ column :bar, :foo_id
+ column :bar, :id
+ end
from :foo do
inner_join :bar do
equals do
- column :foo, :a
- column :bar, :b
+ column :foo, :id
+ column :bar, :id
end
end
end
where do
equals do
- column :foo, :c
- column :bar, :d
+ column :foo, :id
+ column :bar, :foo_id
end
end
end.to_s
diff --git a/spec/relations/order_relation_spec.rb b/spec/relations/order_relation_spec.rb
index 8050aa981c..d0654bd8da 100644
--- a/spec/relations/order_relation_spec.rb
+++ b/spec/relations/order_relation_spec.rb
@@ -4,8 +4,8 @@ describe OrderRelation do
before do
@relation1 = TableRelation.new(:foo)
@relation2 = TableRelation.new(:bar)
- @attribute1 = @relation1[:foo]
- @attribute2 = @relation2[:bar]
+ @attribute1 = @relation1[:id]
+ @attribute2 = @relation2[:id]
end
describe '==' do
@@ -18,13 +18,16 @@ describe OrderRelation do
describe '#to_sql' do
it "manufactures sql with an order clause" do
- OrderRelation.new(@relation1, @attribute1).to_sql.should == SelectBuilder.new do
- select { all }
+ OrderRelation.new(@relation1, @attribute1).to_sql.to_s.should == SelectBuilder.new do
+ select do
+ column :foo, :name
+ column :foo, :id
+ end
from :foo
order_by do
- column :foo, :foo
+ column :foo, :id
end
- end
+ end.to_s
end
end
diff --git a/spec/relations/projection_relation_spec.rb b/spec/relations/projection_relation_spec.rb
index f17f57df7b..47386f966d 100644
--- a/spec/relations/projection_relation_spec.rb
+++ b/spec/relations/projection_relation_spec.rb
@@ -4,8 +4,8 @@ describe ProjectionRelation do
before do
@relation1 = TableRelation.new(:foo)
@relation2 = TableRelation.new(:bar)
- @attribute1 = @relation1[:foo]
- @attribute2 = @relation2[:bar]
+ @attribute1 = @relation1[:id]
+ @attribute2 = @relation2[:id]
end
describe '==' do
@@ -18,12 +18,12 @@ describe ProjectionRelation do
describe '#to_sql' do
it "manufactures sql with a limited select clause" do
- ProjectionRelation.new(@relation1, @attribute1).to_sql.should == SelectBuilder.new do
+ ProjectionRelation.new(@relation1, @attribute1).to_sql.to_s.should == SelectBuilder.new do
select do
- column :foo, :foo
+ column :foo, :id
end
from :foo
- end
+ end.to_s
end
end
end \ No newline at end of file
diff --git a/spec/relations/range_relation_spec.rb b/spec/relations/range_relation_spec.rb
index e6caa32e80..ea3901e3fd 100644
--- a/spec/relations/range_relation_spec.rb
+++ b/spec/relations/range_relation_spec.rb
@@ -21,7 +21,10 @@ describe RangeRelation do
range_size = @range2.last - @range2.first + 1
range_start = @range2.first
RangeRelation.new(@relation1, @range2).to_sql.to_s.should == SelectBuilder.new do
- select { all }
+ select do
+ column :foo, :name
+ column :foo, :id
+ end
from :foo
limit range_size
offset range_start
diff --git a/spec/relations/relation_spec.rb b/spec/relations/relation_spec.rb
index 6c2c2b8611..db4b6b8775 100644
--- a/spec/relations/relation_spec.rb
+++ b/spec/relations/relation_spec.rb
@@ -30,10 +30,6 @@ describe Relation do
it "manufactures a range relation when given a range" do
@relation1[1..2].should == RangeRelation.new(@relation1, 1..2)
end
-
- it "raises an error if the named attribute is not part of the relation" do
- pending
- end
end
describe Relation, '#include?' do
@@ -43,10 +39,6 @@ describe Relation do
end
describe Relation, '#project' do
- it "only allows projecting attributes in the relation" do
- pending
- end
-
it "collapses identical projections" do
pending
end
diff --git a/spec/relations/selection_relation_spec.rb b/spec/relations/selection_relation_spec.rb
index ceb771b46d..1a7f9e6659 100644
--- a/spec/relations/selection_relation_spec.rb
+++ b/spec/relations/selection_relation_spec.rb
@@ -28,8 +28,11 @@ describe SelectionRelation do
describe '#to_sql' do
it "manufactures sql with where clause conditions" do
- SelectionRelation.new(@relation1, @predicate1).to_sql.should == SelectBuilder.new do
- select { all }
+ SelectionRelation.new(@relation1, @predicate1).to_sql.to_s.should == SelectBuilder.new do
+ select do
+ column :foo, :name
+ column :foo, :id
+ end
from :foo
where do
equals do
@@ -37,7 +40,7 @@ describe SelectionRelation do
column :bar, :foo_id
end
end
- end
+ end.to_s
end
end
end \ No newline at end of file
diff --git a/spec/relations/table_relation_spec.rb b/spec/relations/table_relation_spec.rb
index 7a820782df..8cd31a9ac8 100644
--- a/spec/relations/table_relation_spec.rb
+++ b/spec/relations/table_relation_spec.rb
@@ -3,7 +3,10 @@ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
describe TableRelation, '#to_sql' do
it "returns a simple SELECT query" do
TableRelation.new(:users).to_sql.should == SelectBuilder.new do |s|
- select { all }
+ select do
+ column :users, :name
+ column :users, :id
+ end
from :users
end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index a764fff03e..c53277b8e3 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -3,6 +3,17 @@ require 'spec'
require File.join(File.dirname(__FILE__), '..', 'lib', 'sql_algebra')
require File.join(File.dirname(__FILE__), 'spec_helpers', 'be_like')
+ActiveRecord::Base.configurations = {
+ 'sql_algebra_test' => {
+ :adapter => 'mysql',
+ :username => 'root',
+ :password => 'password',
+ :encoding => 'utf8',
+ :database => 'sql_algebra_test',
+ },
+}
+ActiveRecord::Base.establish_connection 'sql_algebra_test'
+
Spec::Runner.configure do |config|
config.include(BeLikeMatcher)
end \ No newline at end of file