org.dinky.shaded.paimon.table.FileStoreTableFactory Maven / Gradle / Ivy
The newest version!
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dinky.shaded.paimon.table;
import org.dinky.shaded.paimon.CoreOptions;
import org.dinky.shaded.paimon.catalog.CatalogContext;
import org.dinky.shaded.paimon.fs.FileIO;
import org.dinky.shaded.paimon.fs.Path;
import org.dinky.shaded.paimon.operation.Lock;
import org.dinky.shaded.paimon.options.Options;
import org.dinky.shaded.paimon.schema.SchemaManager;
import org.dinky.shaded.paimon.schema.TableSchema;
import java.io.IOException;
import java.io.UncheckedIOException;
import static org.dinky.shaded.paimon.CoreOptions.PATH;
/** Factory to create {@link FileStoreTable}. */
public class FileStoreTableFactory {
public static FileStoreTable create(CatalogContext context) {
FileIO fileIO;
try {
fileIO = FileIO.get(CoreOptions.path(context.options()), context);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
return create(fileIO, context.options());
}
public static FileStoreTable create(FileIO fileIO, Path path) {
Options options = new Options();
options.set(PATH, path.toString());
return create(fileIO, options);
}
public static FileStoreTable create(FileIO fileIO, Options options) {
Path tablePath = CoreOptions.path(options);
TableSchema tableSchema =
new SchemaManager(fileIO, tablePath)
.latest()
.orElseThrow(
() ->
new IllegalArgumentException(
"Schema file not found in location "
+ tablePath
+ ". Please create table first."));
return create(
fileIO,
tablePath,
tableSchema,
options,
new CatalogEnvironment(Lock.emptyFactory(), null, null));
}
public static FileStoreTable create(FileIO fileIO, Path tablePath, TableSchema tableSchema) {
return create(
fileIO,
tablePath,
tableSchema,
new Options(),
new CatalogEnvironment(Lock.emptyFactory(), null, null));
}
public static FileStoreTable create(
FileIO fileIO,
Path tablePath,
TableSchema tableSchema,
CatalogEnvironment catalogEnvironment) {
return create(fileIO, tablePath, tableSchema, new Options(), catalogEnvironment);
}
public static FileStoreTable create(
FileIO fileIO,
Path tablePath,
TableSchema tableSchema,
Options dynamicOptions,
CatalogEnvironment catalogEnvironment) {
FileStoreTable table =
tableSchema.primaryKeys().isEmpty()
? new AppendOnlyFileStoreTable(
fileIO, tablePath, tableSchema, catalogEnvironment)
: new PrimaryKeyFileStoreTable(
fileIO, tablePath, tableSchema, catalogEnvironment);
return table.copy(dynamicOptions.toMap());
}
}