public override void Prepare(ISourceAdapter <PoolEntry <object[]> > source)
        {
            base.Prepare(source);

            if (BatchSize == MaxPossibleBatchSize)
            {
                BatchSize = OracleUtils.DefaultMaxOracleParams / ColumnNameToMetadataIndexMap.Count;
            }

            if (ColumnNameToMetadataIndexMap.Count * BatchSize > OracleUtils.DefaultMaxOracleParams)
            {
                throw new TargetAdapterException(
                          $"Number of columns in target adapter buffer size ({ColumnNameToMetadataIndexMap.Count * BatchSize}) exceeds ORACLE limit of {OracleUtils.DefaultMaxOracleParams} parameters in a query");
            }
            if (!UseArrayBinding)
            {
                return;
            }
            _oracleArrayBindingHelper = new OracleArrayBindingHelper(BatchSize, ColumnNameToMetadataIndexMap, SourceValueToParamValue)
            {
                UseNativeTypeConvertor = UseNativeTypeConvertor
            };
        }
 public override void UnPrepare()
 {
     base.UnPrepare();
     _oracleArrayBindingHelper = null;
 }