|
16 | 16 | import com.google.common.collect.ImmutableList; |
17 | 17 | import com.google.common.collect.ImmutableMap; |
18 | 18 | import com.google.common.collect.ImmutableSet; |
| 19 | +import com.google.common.collect.Sets; |
19 | 20 | import io.trino.spi.connector.AggregateFunction; |
20 | 21 | import io.trino.spi.connector.AggregationApplicationResult; |
21 | 22 | import io.trino.spi.connector.CatalogSchemaTableName; |
@@ -138,6 +139,7 @@ public class MockConnectorFactory |
138 | 139 | private final Supplier<List<PropertyMetadata<?>>> columnProperties; |
139 | 140 | private final Optional<ConnectorNodePartitioningProvider> partitioningProvider; |
140 | 141 | private final Function<ConnectorTableFunctionHandle, ConnectorSplitSource> tableFunctionSplitsSources; |
| 142 | + private final Set<String> securitySensitivePropertyNames; |
141 | 143 |
|
142 | 144 | // access control |
143 | 145 | private final ListRoleGrants roleGrants; |
@@ -193,6 +195,7 @@ private MockConnectorFactory( |
193 | 195 | Supplier<List<PropertyMetadata<?>>> tableProperties, |
194 | 196 | Supplier<List<PropertyMetadata<?>>> columnProperties, |
195 | 197 | Optional<ConnectorNodePartitioningProvider> partitioningProvider, |
| 198 | + Set<String> securitySensitivePropertyNames, |
196 | 199 | ListRoleGrants roleGrants, |
197 | 200 | Optional<ConnectorAccessControl> accessControl, |
198 | 201 | boolean allowMissingColumnsOnInsert, |
@@ -240,6 +243,7 @@ private MockConnectorFactory( |
240 | 243 | this.tableProperties = requireNonNull(tableProperties, "tableProperties is null"); |
241 | 244 | this.columnProperties = requireNonNull(columnProperties, "columnProperties is null"); |
242 | 245 | this.partitioningProvider = requireNonNull(partitioningProvider, "partitioningProvider is null"); |
| 246 | + this.securitySensitivePropertyNames = requireNonNull(securitySensitivePropertyNames, "securitySensitivePropertyNames is null"); |
243 | 247 | this.roleGrants = requireNonNull(roleGrants, "roleGrants is null"); |
244 | 248 | this.accessControl = requireNonNull(accessControl, "accessControl is null"); |
245 | 249 | this.data = requireNonNull(data, "data is null"); |
@@ -320,6 +324,12 @@ public Connector create(String catalogName, Map<String, String> config, Connecto |
320 | 324 | allowSplittingReadIntoMultipleSubQueries); |
321 | 325 | } |
322 | 326 |
|
| 327 | + @Override |
| 328 | + public Set<String> getSecuritySensitivePropertyNames(String catalogName, Map<String, String> config, ConnectorContext context) |
| 329 | + { |
| 330 | + return Sets.intersection(securitySensitivePropertyNames, config.keySet()); |
| 331 | + } |
| 332 | + |
323 | 333 | public static MockConnectorFactory create() |
324 | 334 | { |
325 | 335 | return builder().build(); |
@@ -459,6 +469,7 @@ public static final class Builder |
459 | 469 | private Supplier<List<PropertyMetadata<?>>> columnProperties = ImmutableList::of; |
460 | 470 | private Optional<ConnectorNodePartitioningProvider> partitioningProvider = Optional.empty(); |
461 | 471 | private Function<ConnectorTableFunctionHandle, ConnectorSplitSource> tableFunctionSplitsSources = handle -> null; |
| 472 | + private Set<String> securitySensitivePropertyNames = ImmutableSet.of(); |
462 | 473 |
|
463 | 474 | // access control |
464 | 475 | private boolean provideAccessControl; |
@@ -822,6 +833,12 @@ public Builder withAllowSplittingReadIntoMultipleSubQueries(boolean allowSplitti |
822 | 833 | return this; |
823 | 834 | } |
824 | 835 |
|
| 836 | + public Builder withSecuritySensitivePropertyNames(Set<String> securitySensitivePropertyNames) |
| 837 | + { |
| 838 | + this.securitySensitivePropertyNames = securitySensitivePropertyNames; |
| 839 | + return this; |
| 840 | + } |
| 841 | + |
825 | 842 | public MockConnectorFactory build() |
826 | 843 | { |
827 | 844 | Optional<ConnectorAccessControl> accessControl = Optional.empty(); |
@@ -872,6 +889,7 @@ public MockConnectorFactory build() |
872 | 889 | tableProperties, |
873 | 890 | columnProperties, |
874 | 891 | partitioningProvider, |
| 892 | + securitySensitivePropertyNames, |
875 | 893 | roleGrants, |
876 | 894 | accessControl, |
877 | 895 | allowMissingColumnsOnInsert, |
|
0 commit comments