class_docstr: These test cases exercise the interface to the proto plan
  generation but do not call Spark.
class_docstr_tok: ["These","test","cases","exercise","the","interface","to","the","proto","plan","generation","but","do","not","call","Spark","."]
docstr: SPARK-41297: filter supports SQL expression
docstr_tok: ["SPARK-41297",":","filter","supports","SQL","expression"]
code: def test_filter_with_string_expr(self):
      """SPARK-41297: filter supports SQL expression"""
      df = self.connect.readTable(table_name=self.tbl_name)
      plan = df.filter("id < 10")._plan.to_proto(self.connect)
      self.assertIsNotNone(plan.root.filter)
      self.assertIsNotNone(plan.root.filter.condition.expression_string)
      self.assertEqual(
          plan.root.filter.condition.expression_string.expression,
          "id < 10",
      )
  
imports: import unittest
  import uuid
  import datetime
  import decimal
  import math
  from pyspark.testing.connectutils import PlanOnlyTestFixture, should_test_connect, connect_requirement_message
  from pyspark.errors import PySparkValueError
label_desc: Use image node_id 7 for calling the SparkConnectPlanTests obj's underlying member method code with example usage: obj.test_filter_with_string_expr() without return types