/** * Creates a new user exception builder . * * @see com.dremio.exec.proto.UserBitShared.DremioPBError.ErrorType#VALIDATION * @return user exception builder */ public static Builder validationError() { return validationError(null); }
private final FileSystemPlugin getPlugin(NamespaceKey key) { StoragePlugin plugin = catalogService.getSource(key.getRoot()); if(plugin instanceof FileSystemPlugin) { return (FileSystemPlugin) plugin; } else { throw UserException.validationError() .message("Source identified was invalid type. Only sources that can contain files or folders can detect a format.") .build(logger); } }
@Override public void validate(OptionValue v) { super.validate(v); if (v.getNumVal() > max || v.getNumVal() < 1) { throw UserException.validationError() .message(String.format("Option %s must be between %d and %d.", getOptionName(), 1, max)) .build(logger); } } }
@Override public void validate(OptionValue v) { super.validate(v); if (v.getNumVal() > max || v.getNumVal() < min) { throw UserException.validationError() .message(String.format("Option %s must be between %d and %d.", getOptionName(), min, max)) .build(logger); } } }
@Override public void validate(OptionValue v) { super.validate(v); if (!isPowerOfTwo(v.getNumVal())) { throw UserException.validationError() .message(String.format("Option %s must be a power of two.", getOptionName())) .build(logger); } }
@Override public void validate(OptionValue v) { super.validate(v); if (v.getFloatVal() > max || v.getFloatVal() < min) { throw UserException.validationError() .message(String.format("Option %s must be between %f and %f.", getOptionName(), min, max)) .build(logger); } } }
@Override public void validate(final OptionValue v) { super.validate(v); if (!isValid(v.getStringVal())) { throw UserException.validationError() .message(String.format("Option %s must be one of: %s.", getOptionName(), valuesSet)) .build(logger); } }
@Override public Field visitGeneric(ArrowType type) { if(field.getName().equals(column.getAsUnescapedPath())){ throw UserException.validationError().message("You're trying to flatten a field that is not a list. The offending field is %s.", Describer.describe(field)).build(logger); } return super.visitGeneric(type); }
@Override public void validate(final OptionValue v) { super.validate(v); if (!isValid(v.getStringVal())) { throw UserException.validationError() .message(String.format("Option %s must be one of: %s.", getOptionName(), valuesSet)) .build(logger); } }
@Override public void validate(OptionValue v) { super.validate(v); try { CompilerPolicy.valueOf(v.getStringVal().toUpperCase()); } catch (IllegalArgumentException e) { throw UserException.validationError() .message("Invalid value '%s' specified for option '%s'. Valid values are %s.", v.getStringVal(), getOptionName(), Arrays.toString(CompilerPolicy.values())) .build(logger); } } };
@Override public LogicalExpression visitSchemaPath(SchemaPath path, FunctionLookupContext functionLookupContext) { TypedFieldId tfId = FieldIdUtil2.getFieldId(schema, path); if (tfId == null) { throw UserException.validationError().message("Unable to find the referenced field: [%s].", path.getAsUnescapedPath()).build(logger); } else { ValueVectorReadExpression e = new ValueVectorReadExpression(tfId); return e; } }
@Override public void validate(OptionValue v) { if (v.getType() != OptionType.QUERY) { throw UserException.validationError() .message("Query level options can only be set at QUERY level scope. Given scope '%s'.", v.getType()) .build(logger); } inner.validate(v); } }
@Override public void validate(OptionValue v) { if (v.getType() != OptionType.SYSTEM) { throw UserException.validationError() .message("Admin related settings can only be set at SYSTEM level scope. Given scope '%s'.", v.getType()) .build(logger); } super.validate(v); } }
@Override public void validate(final OptionValue v) { if (v.getKind() != kind) { throw UserException.validationError() .message(String.format("Option %s must be of type %s but you tried to set to %s.", getOptionName(), kind.name(), v.getKind().name())) .build(logger); } } }
@Override public boolean refreshSource(NamespaceKey source, MetadataPolicy metadataPolicy, UpdateType updateType) throws NamespaceException { ManagedStoragePlugin plugin = plugins.get(source.getRoot()); if(plugin == null){ throw UserException.validationError().message("Unknown source %s", source.getRoot()).build(logger); } return plugin.refresh(updateType, metadataPolicy); }
@Override public boolean createOrUpdateDataset(NamespaceService userNamespaceService, NamespaceKey source, NamespaceKey datasetPath, DatasetConfig datasetConfig, NamespaceAttribute... attributes) throws NamespaceException { ManagedStoragePlugin plugin = pluginRetriever.getPlugin(source.getRoot(), true); if(plugin == null){ throw UserException.validationError().message("Unknown source %s", datasetPath.getRoot()).build(logger); } return datasets.createOrUpdateDataset(userNamespaceService, plugin, source, datasetPath, datasetConfig, attributes); }
@Override public void createDataset(NamespaceKey key, com.google.common.base.Function<DatasetConfig, DatasetConfig> datasetMutator) { ManagedStoragePlugin plugin = pluginRetriever.getPlugin(key.getRoot(), true); if(plugin == null){ throw UserException.validationError().message("Unknown source %s", key.getRoot()).build(logger); } datasets.createDataset(key, plugin, datasetMutator); }
@Override public UpdateStatus refreshDataset(NamespaceKey key, DatasetRetrievalOptions retrievalOptions) { ManagedStoragePlugin plugin = pluginRetriever.getPlugin(key.getRoot(), true); if(plugin == null){ throw UserException.validationError().message("Unknown source %s", key.getRoot()).build(logger); } return plugin.refreshDataset(key, retrievalOptions); }
@Override public SourceState refreshSourceStatus(NamespaceKey key) throws Exception { ManagedStoragePlugin plugin = pluginRetriever.getPlugin(key.getRoot(), true); if(plugin == null){ throw UserException.validationError().message("Unknown source %s", key.getRoot()).build(logger); } plugin.refreshState(); plugin.initiateMetadataRefresh(); return plugin.getState(); }
@Override public TranslatableTable apply(final List<Object> arguments) { try { SourceTableDefinition definition = plugin.getDatasetWithOptions(new NamespaceKey (tableSchemaPath), new TableInstance(sig, arguments), schemaConfig.getIgnoreAuthErrors(), schemaConfig.getUserName()); if(definition == null){ throw UserException.validationError().message("Unable to read table %s using provided options.", new NamespaceKey(tableSchemaPath).toString()).build(logger); } return new MaterializedDatasetTable(plugin, schemaConfig.getUserName(), new QuietAccessor(definition)); } catch (Exception e) { throw new RuntimeException(e); } }