docstr: Filters rows using the given condition. Multiple filters can be chained using `AND`
  
  Parameters:
      expr (str): The filter expression.
  
  Returns:
      EvaDBQuery : Filtered EvaDBQuery.
  Examples:
      >>> relation = cursor.table("sample_table")
      >>> relation.filter("col1 > 10")
  
      Filter by sql string
  
      >>> relation.filter("col1 > 10 AND col1 < 20")
docstr_tok: ["Filters","rows","using","the","given","condition",".","Multiple","filters","can","be","chained","using","`","AND","`","Parameters",":","expr","(","str",")",":","The","filter","expression",".","Returns",":","EvaDBQuery",":","Filtered","EvaDBQuery",".","Examples",":",">",">",">","relation","=","cursor.table","(","``","sample_table","''",")",">",">",">","relation.filter","(","``","col1",">","10","''",")","Filter","by","sql","string",">",">",">","relation.filter","(","``","col1",">","10","AND","col1","<","20","''",")"]
code: def filter(self, expr: str) -> "EvaDBQuery":
      """
      Filters rows using the given condition. Multiple filters can be chained using `AND`
  
      Parameters:
          expr (str): The filter expression.
  
      Returns:
          EvaDBQuery : Filtered EvaDBQuery.
      Examples:
          >>> relation = cursor.table("sample_table")
          >>> relation.filter("col1 > 10")
  
          Filter by sql string
  
          >>> relation.filter("col1 > 10 AND col1 < 20")
  
      """
      parsed_expr = sql_predicate_to_expresssion_tree(expr)
  
      self._query_node = handle_select_clause(
          self._query_node, self._alias, "where_clause", parsed_expr
      )
  
      try_binding(self._evadb.catalog, self._query_node)
  
      return self
  
imports: from typing import Union
  import pandas
  from evadb.database import EvaDBDatabase
  from evadb.interfaces.relational.utils import create_limit_expression, create_star_expression, handle_select_clause, sql_predicate_to_expresssion_tree, sql_string_to_expresssion_list, string_to_lateral_join, try_binding
  from evadb.models.storage.batch import Batch
  from evadb.parser.alias import Alias
  from evadb.parser.select_statement import SelectStatement
  from evadb.parser.statement import AbstractStatement
  from evadb.parser.table_ref import JoinNode, TableRef
  from evadb.parser.types import JoinType
  from evadb.parser.utils import parse_sql_orderby_expr
  from evadb.server.command_handler import execute_statement
label_desc: Use image node_id 6 for calling the EvaDBQuery obj's underlying member method code with example usage: obj.filter(expr) and returns: self