diff options
-rw-r--r-- | lib/sql_algebra.rb | 2 | ||||
-rw-r--r-- | lib/sql_algebra/extensions/base.rb | 54 | ||||
-rw-r--r-- | lib/sql_algebra/extensions/hash.rb | 7 | ||||
-rw-r--r-- | lib/sql_algebra/relations/relation.rb | 15 | ||||
-rw-r--r-- | lib/sql_algebra/sql_builder/equals_condition_builder.rb | 2 | ||||
-rw-r--r-- | lib/sql_algebra/sql_builder/order_builder.rb | 2 | ||||
-rw-r--r-- | spec/integration/debug.log | 1581 | ||||
-rw-r--r-- | spec/integration/scratch_spec.rb | 246 | ||||
-rw-r--r-- | spec/spec_helper.rb | 2 | ||||
-rw-r--r-- | spec/sql_builder/conditions_spec.rb | 2 | ||||
-rw-r--r-- | spec/sql_builder/select_builder_spec.rb | 2 |
11 files changed, 287 insertions, 1628 deletions
diff --git a/lib/sql_algebra.rb b/lib/sql_algebra.rb index 475bb23138..fbd053541c 100644 --- a/lib/sql_algebra.rb +++ b/lib/sql_algebra.rb @@ -34,6 +34,8 @@ require 'sql_algebra/predicates/match_predicate' require 'sql_algebra/extensions/range' require 'sql_algebra/extensions/object' require 'sql_algebra/extensions/array' +require 'sql_algebra/extensions/base' +require 'sql_algebra/extensions/hash' require 'sql_algebra/sql_builder/sql_builder' require 'sql_algebra/sql_builder/select_builder' diff --git a/lib/sql_algebra/extensions/base.rb b/lib/sql_algebra/extensions/base.rb index 0143caf23d..0dbdef703f 100644 --- a/lib/sql_algebra/extensions/base.rb +++ b/lib/sql_algebra/extensions/base.rb @@ -1,15 +1,47 @@ 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 + class << self + def cache + @identity_map ||= IdentityMap.new end + + def relation + @relation ||= TableRelation.new(table_name) + end + end + + class IdentityMap + def initialize + @map = {} + end + + def get(record, &block) + @map[record] ||= yield + end + end +end + +class ActiveRecord::Associations::BelongsToAssociation + def instantiate(record, joins = []) + @target = proxy_reflection.klass.instantiate(record, joins) + loaded + end + + # this basically disables belongs_to from loading themselves + def reload + @target = 'hack' + end +end + +class ActiveRecord::Associations::AssociationCollection + def instantiate(record, joins = []) + @target << proxy_reflection.klass.instantiate(record, joins) + loaded # technically, this isn't true. doesn't matter though + end +end + +class ActiveRecord::Associations::HasManyThroughAssociation + def instantiate(record, joins = []) + @target << proxy_reflection.klass.instantiate(record, joins) + loaded # again, not really true. end end
\ No newline at end of file diff --git a/lib/sql_algebra/extensions/hash.rb b/lib/sql_algebra/extensions/hash.rb new file mode 100644 index 0000000000..c83ee0d04f --- /dev/null +++ b/lib/sql_algebra/extensions/hash.rb @@ -0,0 +1,7 @@ +class Hash + def alias(&block) + inject({}) do |aliased, (key, value)| + aliased.merge(yield(key) => value) + end + 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 13742cb570..8efe0c7d9f 100644 --- a/lib/sql_algebra/relations/relation.rb +++ b/lib/sql_algebra/relations/relation.rb @@ -1,4 +1,17 @@ class Relation + module Iteration + include Enumerable + + def each(&block) + connection.select_all(to_s).each(&block) + end + + def first + connection.select_one(to_s) + end + end + include Iteration + module Operations def <=>(other) InnerJoinOperation.new(self, other) @@ -60,7 +73,7 @@ class Relation end end delegate :to_s, :to => :to_sql - + protected def attributes; [] end def joins; [] end diff --git a/lib/sql_algebra/sql_builder/equals_condition_builder.rb b/lib/sql_algebra/sql_builder/equals_condition_builder.rb index 70067c20ca..cfa919c34c 100644 --- a/lib/sql_algebra/sql_builder/equals_condition_builder.rb +++ b/lib/sql_algebra/sql_builder/equals_condition_builder.rb @@ -5,7 +5,7 @@ class EqualsConditionBuilder < SqlBuilder end def column(table, column, aliaz = nil) - @operands << (aliaz ? quote(aliaz) : "#{quote_table_name(table)}.#{quote_column_name(column)}") + @operands << "#{quote_table_name(table)}.#{quote_column_name(column)}" end def value(value) diff --git a/lib/sql_algebra/sql_builder/order_builder.rb b/lib/sql_algebra/sql_builder/order_builder.rb index 43f705faf0..66a8cfdba9 100644 --- a/lib/sql_algebra/sql_builder/order_builder.rb +++ b/lib/sql_algebra/sql_builder/order_builder.rb @@ -5,7 +5,7 @@ class OrderBuilder < SqlBuilder end def column(table, column, aliaz = nil) - @orders << (aliaz ? quote(aliaz) : "#{quote_table_name(table)}.#{quote_column_name(column)}") + @orders << "#{quote_table_name(table)}.#{quote_column_name(column)}" end def to_s diff --git a/spec/integration/debug.log b/spec/integration/debug.log index 9b5b08cc20..e69de29bb2 100644 --- a/spec/integration/debug.log +++ b/spec/integration/debug.log @@ -1,1581 +0,0 @@ -# Logfile created on Tue Jan 01 18:37:24 -0800 2008 by logger.rb/1.5.2.9 - [4;36;1mSQL (0.000147)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010719)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002219)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001538)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002551)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001835)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010748)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002223)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.002938)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002466)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001493)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000116)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010722)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002196)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001528)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001373)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001372)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.001599)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.012868)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001681)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002253)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.002186)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000147)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010737)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002277)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001517)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001368)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001481)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010719)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002651)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001464)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001504)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010820)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002194)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001565)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001282)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000147)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010719)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002103)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001468)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001526)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010648)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002458)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001525)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001571)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001274)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001527)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000130)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010705)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002444)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001608)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001488)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001462)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001492)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.015956)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.001676)[0m [0;1mSHOW TABLES[0m - [4;35;1mUser Columns (0.001593)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.000144)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010771)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002480)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001474)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001357)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.011769)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001586)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.000232)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000120)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010804)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002188)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001478)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001550)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001413)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001515)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.000251)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000147)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010826)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002353)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001500)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001522)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001438)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001436)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.000266)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001396)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010772)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002268)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001566)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001390)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001466)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001600)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.000247)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010742)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002382)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001490)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001505)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001846)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001491)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010798)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002447)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001557)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001387)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001469)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001394)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010727)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002213)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001491)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001407)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001457)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001529)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.000247)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000320)[0m [0;1mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000135)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010663)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002319)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001467)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001319)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.010583)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001805)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.000290)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000271)[0m [0;1mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010733)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002277)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001500)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001387)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001421)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001726)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.000261)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000261)[0m [0;1mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;35;1mPhoto Columns (0.001432)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000134)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010759)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002287)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001424)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001550)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001342)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001545)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001488)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000249)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000290)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000139)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010766)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002183)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001465)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001492)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.012690)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001591)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001740)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000261)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000262)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000110)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010751)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002343)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001476)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001513)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001495)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001569)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001497)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000249)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.028671)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010774)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002229)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001532)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001526)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001463)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001558)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001479)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000253)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000248)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000141)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010731)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002167)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001370)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001523)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001275)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001480)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001193)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000228)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000228)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.011242)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001695)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001744)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001452)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001419)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001378)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.002561)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000923)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000275)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000157)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010515)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002311)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.002045)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001878)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001586)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001397)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001944)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000453)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000283)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010759)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002066)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001582)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001459)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001418)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001367)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001849)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001231)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000357)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010706)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002375)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001616)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001826)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001508)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001638)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001719)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001674)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000337)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000114)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010717)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002698)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001432)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001686)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001403)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001809)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001590)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000540)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000341)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010746)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002455)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001483)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001588)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001513)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001247)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001527)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000227)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000252)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000142)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010735)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002400)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001299)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001451)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001173)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001530)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001793)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010758)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002271)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001485)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001578)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001492)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001389)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001391)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000249)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000170)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010733)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002313)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001469)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001593)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001511)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001484)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001478)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000232)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000148)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010796)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001970)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001558)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001440)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001354)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001544)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001405)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000239)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000111)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010751)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002354)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001463)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001588)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001505)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001464)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001509)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000235)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000133)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010651)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002468)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001364)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001503)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001543)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001452)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001445)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000228)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000147)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.330787)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002584)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001456)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001621)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001475)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001481)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001552)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000226)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000144)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010706)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002394)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001322)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001656)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001495)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001498)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001510)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000222)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010785)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002249)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001469)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001410)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001666)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001627)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.002215)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000942)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000149)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010774)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001649)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001497)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001457)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001345)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001298)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001849)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000967)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000143)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010724)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002360)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001570)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001733)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001487)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001624)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001840)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001080)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000148)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010885)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002106)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001603)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001575)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001529)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001517)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001556)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000260)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010689)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002034)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001430)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001590)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001434)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001543)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001597)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001103)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000143)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010735)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002171)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001553)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001586)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001520)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001441)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001560)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001796)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010772)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002291)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001505)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001466)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.002032)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001543)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001434)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000147)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010845)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002185)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001479)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001551)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001459)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001521)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001392)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000222)[0m [0;1mSELECT photos.user_id, photos.camera_id, photos.id -FROM photos [0m - [4;35;1mSQL (0.000246)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000136)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010662)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002267)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001467)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001437)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001355)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001506)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.012944)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000256)[0m [0;1mSELECT * -FROM photos [0m - [4;35;1mSQL (0.000271)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010682)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002485)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001454)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001588)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001480)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001539)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001735)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000111)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010744)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002250)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001491)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001534)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001499)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001482)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001496)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000165)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010840)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002301)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001598)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001456)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001241)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001479)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.000887)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000137)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010721)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002243)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001485)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001592)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001519)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001480)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001534)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010748)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002303)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001459)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001580)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001584)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001507)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001526)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000139)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.001564)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001517)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001405)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001516)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001704)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001583)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001579)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000135)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010720)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002156)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001639)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001434)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001357)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001513)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001474)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000147)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010719)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002256)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001531)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001453)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001388)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001494)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001101)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000219)[0m [0;1mSELECT users.id -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000157)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.011477)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002257)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001520)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001410)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001383)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001505)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001462)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000222)[0m [0;1mSELECT users.id -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000197)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000148)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010701)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002382)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001523)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001558)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001494)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001467)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001516)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000129)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010711)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002382)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001495)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001445)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001363)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001557)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001433)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000000)[0m [0;1mMysql::Error: Unknown column 'photos.id' in 'field list': SELECT photos.id -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000132)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010902)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002079)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001455)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001626)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.012539)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001557)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001437)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000255)[0m [0;1mSELECT users.id -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000225)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000148)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010766)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002370)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001453)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001556)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001492)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001243)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001527)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000151)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010730)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002308)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001489)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001571)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001345)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001456)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001161)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000215)[0m [0;1mSELECT users.id -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000261)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000139)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010683)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002298)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001478)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001413)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001521)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001462)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001509)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001637)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000136)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010714)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002255)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001471)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001491)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001494)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001537)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001500)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000144)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010658)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002047)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001307)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001529)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001380)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001558)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.000851)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000135)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010643)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002531)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001449)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001423)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001522)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001515)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001581)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000147)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010786)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002348)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001476)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001604)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001380)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001484)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001383)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000117)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010702)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002339)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001304)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001578)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001470)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001524)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001554)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000144)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010746)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002433)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001489)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001530)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001540)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001528)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001524)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000393)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000149)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010676)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002224)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001456)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001773)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001509)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001473)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001511)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000274)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010825)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002358)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001492)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001578)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001702)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001495)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001778)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000348)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000113)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010701)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002380)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001329)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001403)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001409)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001458)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001486)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000562)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000134)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010761)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002300)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001565)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001514)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001377)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001553)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001454)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000319)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000156)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010664)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002495)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001454)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001569)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001277)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001250)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001543)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000263)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000143)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010756)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002397)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001731)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001443)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001366)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001472)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001420)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000148)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010705)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002368)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001556)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001472)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001455)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001475)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.002127)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001414)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010742)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002380)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001634)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001587)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001452)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001454)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001514)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000135)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010668)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002191)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001521)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001418)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001330)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001474)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001406)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010693)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002296)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001485)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001604)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001479)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001660)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001632)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010678)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002302)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001501)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001360)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001353)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001562)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001542)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000147)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010704)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002335)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001425)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001468)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001469)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001573)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001489)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000148)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010787)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002303)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001529)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001689)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001503)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001463)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001487)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000149)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010737)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002412)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001487)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001547)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001571)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001482)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001395)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000481)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010918)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001957)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001485)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001498)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001374)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001461)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001923)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000233)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000232)[0m [0mSELECT photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.011208)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002172)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001453)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001526)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001666)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001273)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001845)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000270)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mSQL (0.000133)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010785)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002207)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001480)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001563)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001459)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001206)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001250)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000224)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000227)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000192)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010546)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002397)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.002065)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001381)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.000979)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001410)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001516)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000216)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000240)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010781)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002045)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001462)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001712)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001383)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001934)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001974)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000277)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000266)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010789)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002174)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001549)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001406)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001380)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001590)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001465)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000236)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000260)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000148)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010729)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002288)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001373)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001594)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001516)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001470)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001653)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000249)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000324)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010695)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002188)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001450)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001569)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001437)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001780)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.002270)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001585)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000325)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000151)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010721)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002947)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001515)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001270)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001479)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001428)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001953)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000253)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000279)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010670)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002111)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001460)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001578)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001576)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001497)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001326)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000235)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000250)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.001613)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001535)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001418)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001545)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001536)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001527)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001497)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000230)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000227)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000134)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.011304)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002381)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001508)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001665)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001498)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001503)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001514)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000225)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000231)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000134)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010747)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002111)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001510)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001581)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001428)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001507)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001808)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000247)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000237)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010702)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002320)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001504)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001589)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001555)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.002636)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001766)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000239)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000281)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000115)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.011377)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002266)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001512)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001553)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001686)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001487)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001520)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.000223)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000233)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000133)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.011494)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002092)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001556)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001490)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001594)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001273)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001512)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001362)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001476)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000227)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000335)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.001514)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001589)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001412)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000110)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010696)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002449)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001558)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001720)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001577)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001420)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.009109)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001770)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001409)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000247)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000305)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001429)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001503)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001595)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001775)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000137)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010741)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002217)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001614)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001277)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001394)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001412)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001534)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001595)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001771)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000246)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000287)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.001537)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001578)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001351)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000124)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010755)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002276)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001312)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.002071)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001613)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001271)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001665)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001605)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001360)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000247)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000303)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001449)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001510)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001413)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001546)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000115)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.001542)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001224)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001201)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001325)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001269)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001364)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001517)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001422)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001674)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000270)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000269)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.008183)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mPhoto Columns (0.001576)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001595)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001461)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001327)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000129)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.001503)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001544)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001444)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001509)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001593)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001422)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001487)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001996)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001380)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000275)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000279)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001516)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001449)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001558)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001347)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000133)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010735)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002173)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001449)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001510)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001410)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001592)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001570)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001423)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001301)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000287)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000301)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001475)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mPhoto Columns (0.001465)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001633)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001467)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001332)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000132)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010888)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002202)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001500)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001457)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001593)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001424)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001492)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001520)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001480)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000290)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000263)[0m [0mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mSQL (0.000320)[0m [0;1mSELECT * -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;35;1mUser Columns (0.001896)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001262)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001675)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001409)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000130)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010691)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002363)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001590)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001560)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.013103)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001597)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001491)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001553)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001368)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000300)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.001508)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001583)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001442)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000132)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010756)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002320)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001416)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001507)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.012716)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001406)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001353)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001440)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001263)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000233)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000259)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001394)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001487)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001837)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001501)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.001575)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001415)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001483)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000820)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001526)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001093)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001526)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001631)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001346)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000282)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mSQL (0.000281)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001235)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mPhoto Columns (0.001422)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001607)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001685)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001318)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010894)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002240)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001487)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001578)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001582)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001418)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001528)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001577)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001215)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000251)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mUser Columns (0.001387)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.000296)[0m [0;1mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;35;1mPhoto Columns (0.001457)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001421)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001431)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001485)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000145)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010759)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002325)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001391)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001545)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001442)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001285)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001287)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001565)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001098)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000215)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mUser Columns (0.001362)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.000283)[0m [0;1mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;35;1mPhoto Columns (0.001459)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001404)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001554)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001531)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000146)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010611)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002560)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001457)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001439)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001575)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001422)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001475)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001563)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001389)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000213)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mUser Columns (0.001375)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.000251)[0m [0;1mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;35;1mPhoto Columns (0.001417)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001395)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001539)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001552)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000113)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010659)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002496)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001466)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001519)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001591)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001455)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001502)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001543)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001432)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000225)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mUser Columns (0.001376)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.000266)[0m [0;1mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;35;1mPhoto Columns (0.001440)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001105)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001152)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001384)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000127)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010753)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002275)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001708)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001413)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001552)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001604)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001482)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001500)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001349)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000227)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mUser Columns (0.001386)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.000269)[0m [0;1mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;35;1mPhoto Columns (0.001425)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001065)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001438)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001376)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000107)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010766)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002300)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001306)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001562)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001725)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001356)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001539)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001465)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001345)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000303)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mUser Columns (0.001553)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.000299)[0m [0;1mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;35;1mPhoto Columns (0.001329)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001422)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001414)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001429)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.000349)[0m [0mSELECT * -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[0m - [4;36;1mSQL (0.000109)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010688)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002247)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001542)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001432)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001390)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001428)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001641)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001602)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001426)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000253)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mUser Columns (0.001398)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.000304)[0m [0;1mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;35;1mPhoto Columns (0.001457)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001298)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001539)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001487)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000139)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.001575)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001596)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001406)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001432)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001640)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001465)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001463)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001577)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001434)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000258)[0m [0;1mSELECT * -FROM users -WHERE users.id = 1[0m - [4;35;1mUser Columns (0.001417)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.000338)[0m [0;1mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;35;1mPhoto Columns (0.001542)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001474)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001582)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001524)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000112)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.016053)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001843)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001493)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001376)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001547)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001670)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001504)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001756)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001567)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001476)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001574)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001402)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001565)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001346)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001424)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001447)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001570)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001502)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.000244)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001413)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.000304)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mPhoto Columns (0.001471)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.034694)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001709)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001407)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000109)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010677)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002292)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001455)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001467)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001537)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001429)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001476)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001679)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001440)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001147)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001687)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001424)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001509)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001622)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001417)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001430)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001540)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001420)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.000244)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001374)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.000288)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mPhoto Columns (0.001449)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.034463)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001751)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.002051)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000108)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010738)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002251)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001306)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001717)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001554)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001364)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001622)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001490)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001310)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001666)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.002175)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001601)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001647)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002284)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001156)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001447)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001549)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001431)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.000391)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001439)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.000284)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mPhoto Columns (0.001431)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.036129)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001678)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001446)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000111)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010686)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002498)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001549)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001496)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001586)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001451)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001455)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001648)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001364)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001406)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001501)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001399)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001388)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001888)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001454)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001570)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.002665)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001922)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001160)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001117)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001219)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mPhoto Columns (0.001255)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.034678)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001684)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001242)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.000110)[0m [0;1mSET SQL_AUTO_IS_NULL=0[0m - [4;35;1mSQL (0.010673)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002380)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001444)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001580)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001158)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001358)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.002625)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002378)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001774)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.002249)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001218)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.002117)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.001795)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.002656)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001412)[0m [0mSHOW FIELDS FROM `cameras`[0m - [4;36;1mSQL (0.001415)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.001519)[0m [0mSHOW FIELDS FROM `photos`[0m - [4;36;1mSQL (0.001043)[0m [0;1mSHOW FIELDS FROM `cameras`[0m - [4;35;1mSQL (0.000346)[0m [0mSELECT * -FROM users -WHERE users.id = 1[0m - [4;36;1mUser Columns (0.001560)[0m [0;1mSHOW FIELDS FROM `users`[0m - [4;35;1mSQL (0.000297)[0m [0mSELECT photos.user_id, photos.camera_id, photos.id -FROM users LEFT OUTER JOIN photos ON users.id = photos.user_id -WHERE users.id = 1[0m - [4;36;1mPhoto Columns (0.001471)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001420)[0m [0mSHOW FIELDS FROM `users`[0m - [4;36;1mSQL (0.001463)[0m [0;1mSHOW FIELDS FROM `photos`[0m - [4;35;1mSQL (0.001395)[0m [0mSHOW FIELDS FROM `cameras`[0m diff --git a/spec/integration/scratch_spec.rb b/spec/integration/scratch_spec.rb index 32ee98d361..b5d27f1dc2 100644 --- a/spec/integration/scratch_spec.rb +++ b/spec/integration/scratch_spec.rb @@ -1,42 +1,226 @@ require File.join(File.dirname(__FILE__), '..', 'spec_helper') -describe 'Relational Algebra' do +describe 'ActiveRelation', 'Proposed refactoring to ActiveRecord, introducing both a SQL + builder and a Relational Algebra to mediate connections + between ActiveRecord and the database. The goal of the + refactoring is to remove code duplication concerning AR + associations; remove complexity surrounding eager loading; + comprehensively solve quoting issues; remove the with_scope + merging logic; minimize the need for with_scope in general; + simplify the implementation of plugins like HasFinder and + ActsAsParanoid; introduce an identity map; and allow for + query optimization. All this while effectively not changing + the public interface of ActiveRecord. + The Relational Algebra makes these ambitious goals + possible. There\'s no need to be scared by the math, it\'s + actually quite simple. Relational Algebras have some nice + advantages over flexible SQL builders like Sequel and and + SqlAlchemy (a beautiful Python library). Principally, a + relation is writable as well as readable. This obviates the + :create with_scope, and perhaps also + #set_belongs_to_association_for. + With so much complexity removed from ActiveRecord, I + propose a mild reconsideration of the architecture of Base, + AssocationProxy, AssociationCollection, and so forth. These + should all be understood as \'Repositories\': a factory that + given a relation can manufacture objects, and given an object + can manipulate a relation. This may sound trivial, but I + think it has the potential to make the code much smaller and + more consistent.' do before do - @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]) + class User < ActiveRecord::Base; has_many :photos end + class Photo < ActiveRecord::Base; belongs_to :camera end + class Camera < ActiveRecord::Base; end end - it 'simulates User.has_many :photos' do - @user_photos.project(*@photos.attributes).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` - WHERE - `users`.`id` = 1 - """) + before do + # Rather than being associated with a table, an ActiveRecord is now associated with + # a relation. + @users = User.relation + @photos = Photo.relation + @cameras = Camera.relation + # A first taste of a Relational Algebra: User.find(1) + # == is overridden on attributes to return a predicate, not true or false + @user = @users.select(@users[:id] == 1) + end + + # In a Relational Algebra, the various ActiveRecord associations become a simple + # mapping from one relation to another. The Reflection object parameterizes the + # mapping. + def user_has_many_photos(user_relation) + primary_key = User.reflections[:photos].klass.primary_key.to_sym + foreign_key = User.reflections[:photos].primary_key_name.to_sym + + # << is the left outer join operator + (user_relation << @photos).on(user_relation[primary_key] == @photos[foreign_key]) + end + + def photo_belongs_to_camera(photo_relation) + primary_key = Photo.reflections[:camera].klass.primary_key.to_sym + foreign_key = Photo.reflections[:camera].primary_key_name.to_sym + + (photo_relation << @cameras).on(photo_relation[foreign_key] == @cameras[primary_key]) end + + describe 'Relational Algebra', 'a relational algebra allows the implementation of + associations like has_many to be specified once, + regardless of eager-joins, has_many :through, and so + forth' do + it 'generates the query for User.has_many :photos' do + user_photos = user_has_many_photos(@user) + # the 'project' operator limits the columns that come back from the query. + # Note how all the operators are compositional: 'project' is applied to a query + # that previously had been joined and selected. + user_photos.project(*@photos.attributes).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` + WHERE + `users`.`id` = 1 + """) + # Also note the correctly quoted columns and tables. In this instance the + # MysqlAdapter from ActiveRecord is used to do the escaping. + end - it 'simulates a User.has_many :cameras :through => :photos' do - @user_cameras.project(*@cameras.attributes).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 - """) + it 'generates the query for User.has_many :cameras :through => :photos' do + # note, again, the compositionality of the operators: + user_cameras = photo_belongs_to_camera(user_has_many_photos(@user)) + user_cameras.project(*@cameras.attributes).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 + + it 'generates the query for an eager join for a collection using the same logic as + for an association on an individual row' do + users_cameras = photo_belongs_to_camera(user_has_many_photos(@users)) + users_cameras.to_s.should be_like(""" + SELECT `users`.`name`, `users`.`id`, `photos`.`id`, `photos`.`user_id`, `photos`.`camera_id`, `cameras`.`id` + FROM `users` + LEFT OUTER JOIN `photos` + ON `users`.`id` = `photos`.`user_id` + LEFT OUTER JOIN `cameras` + ON `photos`.`camera_id` = `cameras`.`id` + """) + end + + it 'is trivial to disambiguate columns' do + users_cameras = photo_belongs_to_camera(user_has_many_photos(@users)).qualify + users_cameras.to_s.should be_like(""" + SELECT `users`.`name` AS 'users.name', `users`.`id` AS 'users.id', `photos`.`id` AS 'photos.id', `photos`.`user_id` AS 'photos.user_id', `photos`.`camera_id` AS 'photos.camera_id', `cameras`.`id` AS 'cameras.id' + FROM `users` + LEFT OUTER JOIN `photos` + ON `users`.`id` = `photos`.`user_id` + LEFT OUTER JOIN `cameras` + ON `photos`.`camera_id` = `cameras`.`id` + """) + end + + it 'obviates the need for with_scope merging logic since, e.g., + `with_scope :conditions => ...` is just a #select operation on the relation' do + end + + it 'may eliminate the need for with_scope altogether since the associations no longer + need it: the relation underlying the association fully encapsulates the scope' do + end end + + describe 'Repository', 'ActiveRecord::Base, HasManyAssociation, and so forth are + all repositories: given a relation, they manufacture objects' do + before do + class << ActiveRecord::Base; public :instantiate end + end - it '' do - # p @user_cameras.qualify.to_s - # - # @users.rename() + it 'manufactures objects' do + User.instantiate(@users.first).attributes.should == {"name" => "hai", "id" => 1} + end + + it 'frees ActiveRecords from being tied to tables' do + pending # pending, but trivial to implement: + + class User < ActiveRecord::Base + # acts_as_paranoid without alias_method_chain: + set_relation @users.select(@users[:deleted_at] != nil) + end + + class Person < ActiveRecord::Base + set_relation @accounts.join(@profiles).on(@accounts[:id] == @profiles[:account_id]) + end + # I know this sounds crazy, but even writes are possible in the last example. + # calling #save on a person can write to two tables! + end + + describe 'the n+1 problem' do + describe 'the eager join algorithm is vastly simpler' do + it 'three active records are loaded with only one query' do + # using 'rr' mocking framework: the real #select_all is called, but we assert + # that it only happens once: + mock.proxy(ActiveRecord::Base.connection).select_all.with_any_args.once + users_cameras = photo_belongs_to_camera(user_has_many_photos(@users)).qualify + user = User.instantiate(users_cameras.first, [:photos => [:camera]]) + user.photos.first.camera.attributes.should == {"id" => 1} + end + + before do + class << ActiveRecord::Base + # An identity map makes this algorithm efficient. + def instantiate_with_cache(record) + cache.get(record) { instantiate_without_cache(record) } + end + alias_method_chain :instantiate, :cache + + # for each row in the result set, which may contain data from n tables, + # - instantiate that slice of the data corresponding to the current class + # - recusively walk the dependency chain and repeat. + def instantiate_with_joins(data, joins = []) + record = unqualify(data) + returning instantiate_without_joins(record) do |object| + joins.each do |join| + case join + when Symbol + object.send(association = join).instantiate(data) + when Hash + join.each do |association, nested_associations| + object.send(association).instantiate(data, nested_associations) + end + end + end + end + end + alias_method_chain :instantiate, :joins + + private + # Sometimes, attributes are qualified to remove ambiguity. Here, bring back + # ambiguity by translating 'users.id' to 'id' so we can call #attributes=. + # This code should work correctly if the attributes are qualified or not. + def unqualify(qualified_attributes) + qualified_attributes_for_this_class = qualified_attributes. \ + slice(*relation.attributes.collect(&:qualified_name)) + qualified_attributes_for_this_class.alias do |qualified_name| + qualified_name.split('.')[1] || qualified_name # the latter means it must not really be qualified + end + end + end + end + + it "is possible to be smarter about eager loading. DataMapper is smart enough + to notice when you do users.each { |u| u.photos } and make this two queries + rather than n+1: the first invocation of #photos is lazy but it preloads + photos for all subsequent users. This is substantially easier with the + Algebra since we can do @user.join(@photos).on(...) and transform that to + @users.join(@photos).on(...), relying on the IdentityMap to eliminate + the n+1 problem. This is somewhat similar to ActiveRecordContext but it + works with every association type, not just belongs_to." do + pending + end + end + end end end
\ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index edace54f58..8d90e0dd51 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,5 +1,6 @@ require 'rubygems' require 'spec' +require 'rr' require File.join(File.dirname(__FILE__), '..', 'lib', 'sql_algebra') require File.join(File.dirname(__FILE__), 'spec_helpers', 'be_like') @@ -24,4 +25,5 @@ end Spec::Runner.configure do |config| config.include(BeLikeMatcher) + config.mock_with :rr end
\ No newline at end of file diff --git a/spec/sql_builder/conditions_spec.rb b/spec/sql_builder/conditions_spec.rb index c1cae902c1..dc44cedc85 100644 --- a/spec/sql_builder/conditions_spec.rb +++ b/spec/sql_builder/conditions_spec.rb @@ -10,7 +10,7 @@ describe ConditionsBuilder do column(:c, :d, 'e') end end.to_s.should be_like(""" - `a`.`b` = 'e' + `a`.`b` = `c`.`d` """) end end diff --git a/spec/sql_builder/select_builder_spec.rb b/spec/sql_builder/select_builder_spec.rb index 060c642c1b..122539967e 100644 --- a/spec/sql_builder/select_builder_spec.rb +++ b/spec/sql_builder/select_builder_spec.rb @@ -87,7 +87,7 @@ describe SelectBuilder do end.to_s.should be_like(""" SELECT * FROM `users` - ORDER BY `users`.`id`, 'alias' + ORDER BY `users`.`id`, `users`.`created_at` """) end end |