class Neo4j::Core::Query::PartitionedClauses
Public Class Methods
new(clauses)
click to toggle source
# File lib/neo4j/core/query.rb 436 def initialize(clauses) 437 @clauses = clauses 438 @partitioning = [[]] 439 end
Private Class Methods
clause_is_order_or_limit?(clause)
click to toggle source
# File lib/neo4j/core/query.rb 490 def clause_is_order_or_limit?(clause) 491 clause.is_a?(::Neo4j::Core::QueryClauses::OrderClause) || 492 clause.is_a?(::Neo4j::Core::QueryClauses::LimitClause) 493 end
Public Instance Methods
each() { |partition| ... }
click to toggle source
# File lib/neo4j/core/query.rb 443 def each 444 generate_partitioning! 445 446 @partitioning.each { |partition| yield partition } 447 end
generate_partitioning!()
click to toggle source
# File lib/neo4j/core/query.rb 449 def generate_partitioning! 450 @partitioning = [[]] 451 452 @clauses.each do |clause| 453 if clause.nil? && !fresh_partition? 454 @partitioning << [] 455 elsif clause_is_order_or_limit_directly_following_with_or_order?(clause) 456 second_to_last << clause 457 elsif clause_is_with_following_order_or_limit?(clause) 458 second_to_last << clause 459 second_to_last.sort_by! { |c| c.is_a?(::Neo4j::Core::QueryClauses::OrderClause) ? 1 : 0 } 460 else 461 @partitioning.last << clause 462 end 463 end 464 end
Private Instance Methods
clause_is_order_or_limit_directly_following_with_or_order?(clause)
click to toggle source
# File lib/neo4j/core/query.rb 476 def clause_is_order_or_limit_directly_following_with_or_order?(clause) 477 self.class.clause_is_order_or_limit?(clause) && 478 @partitioning[-2] && 479 @partitioning[-1].empty? && 480 (@partitioning[-2].last.is_a?(::Neo4j::Core::QueryClauses::WithClause) || 481 @partitioning[-2].last.is_a?(::Neo4j::Core::QueryClauses::OrderClause)) 482 end
clause_is_with_following_order_or_limit?(clause)
click to toggle source
# File lib/neo4j/core/query.rb 484 def clause_is_with_following_order_or_limit?(clause) 485 clause.is_a?(::Neo4j::Core::QueryClauses::WithClause) && 486 @partitioning[-2] && @partitioning[-2].any? { |c| self.class.clause_is_order_or_limit?(c) } 487 end
fresh_partition?()
click to toggle source
# File lib/neo4j/core/query.rb 468 def fresh_partition? 469 @partitioning.last == [] 470 end
second_to_last()
click to toggle source
# File lib/neo4j/core/query.rb 472 def second_to_last 473 @partitioning[-2] 474 end