Sha256: a677cf11a071a1fced4a5321808894f62c7a5c51370c7534101ca20d2a45d31c

Contents?: true

Size: 1.97 KB

Versions: 4

Compression:

Stored size: 1.97 KB

Contents

grammar SQLKeyValuePair
  include SQLPrimitives
  include SQLRowSupport

  rule key_value_pair
    one_column_name optional_spaces joiner_or_null  {
      def eval
        results = joiner_or_null.eval
        klass = Expressions.find_class_for(results[:joiner])
        if value = results[:value]
          klass.new(one_column_name.eval.to_sym, results[:value])
        else
          klass.new(one_column_name.eval.to_sym)
        end
      end
    }
  end

  rule joiner_or_null
    a_null / joiner_with_value
  end

  rule a_null
    is_not_null / is_null
  end

  rule is_not_null
    "IS" SPACE "NOT" SPACE "NULL" {
      def eval
        { :joiner => :"IS NOT NULL" }
      end
    }
  end

  rule is_null
    "IS" SPACE "NULL" {
      def eval
        { :joiner => :"IS NULL" }
      end
     }
  end

  rule joiner_with_value
    condition_joiner optional_spaces primitive {
      def eval
        { 
          :joiner => condition_joiner.eval,
          :value => primitive.eval
        }
      end
    }
  end

  rule condition_joiner
    greater_than_or_equal / 
    less_than_or_equal / 
    equals / 
    not_equals / 
    less_than / 
    greater_than /
    like
  end

  rule less_than_or_equal
    "<=" SPACES "BINARY"  {   def eval;   :<=;   end }
    /
    "<="  {   def eval;   :<=;   end }
  end

  rule greater_than_or_equal
    ">=" SPACES "BINARY"  {   def eval;   :>=    end }
    /
    ">="  {   def eval;   :>=    end }
  end

  rule less_than
    "<" SPACES "BINARY"   {   def eval;   :<     end }
    /
    "<"   {   def eval;   :<     end }
  end

  rule greater_than
    ">" SPACES "BINARY"   {   def eval;   :>     end }
    /
    ">"   {   def eval;   :>     end }
  end

  rule not_equals
    "!=" SPACES "BINARY"  {  def eval;   :"!="   end }
    /
    "!="  {  def eval;   :"!="   end }
  end

  rule equals
    "=" SPACES "BINARY"   {   def eval;  :"="    end }
    /
    "="   {   def eval;  :"="    end }
  end
  
  rule like
    "LIKE"   {   def eval;  :"LIKE"    end }
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hipster_sql_to_hbase-0.3.29 lib/sql_parser/sql_key_value_pair.treetop
hipster_sql_to_hbase-0.3.20 lib/sql_parser/sql_key_value_pair.treetop
hipster_sql_to_hbase-0.3.12 lib/sql_parser/sql_key_value_pair.treetop
hipster_sql_to_hbase-0.3.2 lib/sql_parser/sql_key_value_pair.treetop