Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
/** Dynamic parameter provider. */
@PublicEvolving
public interface SourceDynamicParameterProvider {
    /**
     * Provide dynamic parameters for sources in {@link SourceDynamicParameter}.
     *
     * @param context The context for provider.
     * @return The source dynamic parameters.
     */
    SourceDynamicParameter getDynamicParameter(Context context);

    /** Context for parameter provider. */
    interface ContextSourceContext {
        /**
         * Sources for the given job.
         *
         * @return Source identifiers.
         */
        Set<ObjectIdentifier> sources();

        /**
         * Catalog options help provider to get dynamic parameters, for example, they have the location where the parameters stored in the catalog.
         *
         * @param catalog The name of catalog.
         * @return The catalog options.
         */
        @Nullable
        Map<String, String> catalogOptions(String catalog);
    }
}

/** Factory to create dynamic parameter provider. */
@PublicEvolving
public interface SourceDynamicParameterProviderFactory extends Factory {
    SourceDynamicParameterProvider createProvider(Context context);

    /** Context for dynamic parameter provider factory. */
    interface Context {
           Map<String, String> configReadableConfig getConfiguration();

        ClassLoader classLoadergetClassLoader();
    }
}

/** Dynamic parameters for sources. */
@PublicEvloving
public class SourceDynamicParameter {
    private final Map<ObjectIdentifier, Map<String, String>> dynamicParameters;
    private final Map<String, String> commonParameters;

    /**
     * Get dynamic parameters for each source, different sources may have different parameters.
     *
     * @return dynamic parameters for each source.
     */
    public Map<ObjectIdentifier, Map<String, String>> dynamicParameters();

    /**
     * Get common parameters for all sources.
     *
     * @return the common parameters.
     */
    public Map<String, String> commonParameters();
}

...

Code Block
table.plan.source-dynamic-parameter-provider-factory: {provider factory class identifier}

Proposed Changes

We will add the following steps in PlannerBase.translateToExecNodeGraph to support dynamic parameters for sources

...