register method

void register(
  1. String name,
  2. Object input
)

Registers a LazyFrame or DataFrame. Native registration clones its lazy plan, so the source can be closed immediately after this returns.

Implementation

void register(String name, Object input) {
  _validateName(name, 'name');
  if (input is LazyFrame) {
    _runtime._requireLazy(input);
  } else if (input is DataFrame) {
    _runtime._requireFrame(input);
  } else {
    throw ArgumentError.value(
      input,
      'input',
      'must be a LazyFrame or DataFrame',
    );
  }
  final temporary = input is DataFrame ? input.lazy() : null;
  final frame = input is LazyFrame ? input : temporary!;
  try {
    final leases = _leaseAll([_owner, frame._owner]);
    try {
      _runtime._client.invokeSync('sqlContextRegister', {
        'context': leases[0].handle.toString(),
        'name': name,
        'input': leases[1].handle.toString(),
      });
    } finally {
      _releaseAll(leases);
    }
  } finally {
    temporary?.close();
  }
}