================================================================================
Logical Operators Simple AND
================================================================================

SELECT Id
FROM User
WHERE Name = 'Robot' AND Name = 'Hello'

--------------------------------------------------------------------------------

(source_file
  (soql_query_body
    (select_clause
      (field_identifier
        (identifier)))
    (from_clause
      (storage_identifier
        (identifier)))
    (where_clause
      (and_expression
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))))))

================================================================================
Logical Operators Multi AND
================================================================================

SELECT Id
FROM User
WHERE Name = 'Robot' AND Name = 'Hello' AND Name = 'foo' AND Name = 'Bar'

--------------------------------------------------------------------------------

(source_file
  (soql_query_body
    (select_clause
      (field_identifier
        (identifier)))
    (from_clause
      (storage_identifier
        (identifier)))
    (where_clause
      (and_expression
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))))))

================================================================================
Logical Operators Simple OR
================================================================================

SELECT Id
FROM User
WHERE Name = 'Robot' OR Name = 'Hello'

--------------------------------------------------------------------------------

(source_file
  (soql_query_body
    (select_clause
      (field_identifier
        (identifier)))
    (from_clause
      (storage_identifier
        (identifier)))
    (where_clause
      (or_expression
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))))))

================================================================================
Logical Operators Multi OR
================================================================================

SELECT Id
FROM User
WHERE Name = 'Robot' OR Name = 'Hello' OR Name = 'foo' OR Name = 'Bar'

--------------------------------------------------------------------------------

(source_file
  (soql_query_body
    (select_clause
      (field_identifier
        (identifier)))
    (from_clause
      (storage_identifier
        (identifier)))
    (where_clause
      (or_expression
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))))))

================================================================================
Logical Operators OR inside of AND
================================================================================

SELECT Id
FROM User
WHERE Name = 'Robot' AND (Name = 'Hello' OR Name = 'foo')

--------------------------------------------------------------------------------

(source_file
  (soql_query_body
    (select_clause
      (field_identifier
        (identifier)))
    (from_clause
      (storage_identifier
        (identifier)))
    (where_clause
      (and_expression
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))
        (or_expression
          (comparison_expression
            (field_identifier
              (identifier))
            (value_comparison_operator)
            (string_literal))
          (comparison_expression
            (field_identifier
              (identifier))
            (value_comparison_operator)
            (string_literal)))))))

================================================================================
Logical Operators AND inside of OR
================================================================================

SELECT Id
FROM User
WHERE Name = 'Robot' OR (Name = 'Hello' AND Name = 'foo')

--------------------------------------------------------------------------------

(source_file
  (soql_query_body
    (select_clause
      (field_identifier
        (identifier)))
    (from_clause
      (storage_identifier
        (identifier)))
    (where_clause
      (or_expression
        (comparison_expression
          (field_identifier
            (identifier))
          (value_comparison_operator)
          (string_literal))
        (and_expression
          (comparison_expression
            (field_identifier
              (identifier))
            (value_comparison_operator)
            (string_literal))
          (comparison_expression
            (field_identifier
              (identifier))
            (value_comparison_operator)
            (string_literal)))))))
