code: def _wrap_execute_data_source_mixed(limit, usecols, op_cls):
      def _execute_data_source(ctx, op):  # pragma: no cover
          op_cls.execute(ctx, op)
          result = ctx[op.outputs[0].key]
          if not isinstance(usecols, list):
              if not isinstance(result, pd.Series):
                  raise RuntimeError("Out data should be a Series")
          elif len(result.columns) > len(usecols):
              raise RuntimeError("have data more than expected")
          if len(result) > limit:
              raise RuntimeError("have data more than expected")
  
      return _execute_data_source
  
imports: import os
  import tempfile
  import mars
  import numpy
  import pandas
  import pytest
  from ....None import dataframe
  from ....None import tensor
  from ....utils import pd_release_version
  from ...datasource.read_csv import DataFrameReadCSV
  from ...datasource.read_sql import DataFrameReadSQL
  from ...datasource.read_parquet import DataFrameReadParquet
label_desc: Use image node_id 20 for calling a global function with example usage: _wrap_execute_data_source_mixed(limit, usecols, op_cls) and returns: _execute_data_source