code: def test_bind_create_function_should_drop_row_id_for_select_star(
      self,
  ):
      with patch.object(StatementBinder, "bind"):
          create_function_statement = MagicMock()
          create_function_statement.function_type = "ludwig"
          row_id_col_obj = ColumnCatalogEntry(
              name=IDENTIFIER_COLUMN,
              type=MagicMock(),
              array_type=MagicMock(),
              array_dimensions=MagicMock(),
          )
          input_col_obj = ColumnCatalogEntry(
              name="input_column",
              type=MagicMock(),
              array_type=MagicMock(),
              array_dimensions=MagicMock(),
          )
          output_col_obj = ColumnCatalogEntry(
              name="predict_column",
              type=MagicMock(),
              array_type=MagicMock(),
              array_dimensions=MagicMock(),
          )
          create_function_statement.query.target_list = [
              TupleValueExpression(
                  name=IDENTIFIER_COLUMN,
                  table_alias="a",
                  col_object=row_id_col_obj,
              ),
              TupleValueExpression(
                  name="input_column",
                  table_alias="a",
                  col_object=input_col_obj,
              ),
              TupleValueExpression(
                  name="predict_column",
                  table_alias="a",
                  col_object=output_col_obj,
              ),
          ]
          create_function_statement.metadata = [
              ("predict", "predict_column")
          ]
          binder = StatementBinder(StatementBinderContext(MagicMock()))
          binder._bind_create_function_statement(
              create_function_statement
          )
  
          self.assertEqual(
              create_function_statement.query.target_list,
              [
                  TupleValueExpression(
                      name="input_column",
                      table_alias="a",
                      col_object=input_col_obj,
                  ),
                  TupleValueExpression(
                      name="predict_column",
                      table_alias="a",
                      col_object=output_col_obj,
                  ),
              ],
          )
  
          expected_inputs = [
              ColumnDefinition(
                  "input_column",
                  input_col_obj.type,
                  input_col_obj.array_type,
                  input_col_obj.array_dimensions,
              )
          ]
          expected_outputs = [
              ColumnDefinition(
                  "predict_column_predictions",
                  output_col_obj.type,
                  output_col_obj.array_type,
                  output_col_obj.array_dimensions,
              )
          ]
          self.assertEqual(
              create_function_statement.inputs, expected_inputs
          )
          self.assertEqual(
              create_function_statement.outputs, expected_outputs
          )
  
imports: import unittest
  from unittest.mock import MagicMock, Mock, patch
  from evadb.binder.binder_utils import BinderError
  from evadb.binder.statement_binder import StatementBinder
  from evadb.binder.statement_binder_context import StatementBinderContext
  from evadb.catalog.catalog_type import ColumnType, NdArrayType
  from evadb.catalog.models.utils import ColumnCatalogEntry
  from evadb.catalog.sql_config import IDENTIFIER_COLUMN
  from evadb.expression.function_expression import FunctionExpression
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.alias import Alias
  from evadb.parser.create_statement import ColumnDefinition
label_desc: Use image node_id 18 for calling the StatementBinderTests obj's underlying member method code with example usage: obj.test_bind_create_function_should_drop_row_id_for_select_star() without return types