|
41 | 41 | import com.google.cloud.bigquery.storage.v1.BigQueryWriteClient; |
42 | 42 | import com.google.cloud.bigquery.storage.v1.BigQueryWriteSettings; |
43 | 43 | import com.google.cloud.http.HttpTransportOptions; |
| 44 | +import com.google.common.collect.ImmutableSortedSet; |
44 | 45 | import java.io.IOException; |
45 | 46 | import java.io.InputStream; |
46 | 47 | import java.sql.CallableStatement; |
@@ -76,6 +77,70 @@ public class BigQueryConnection extends BigQueryNoOpsConnection { |
76 | 77 | private final String connectionId; |
77 | 78 | private static final String DEFAULT_JDBC_TOKEN_VALUE = "Google-BigQuery-JDBC-Driver"; |
78 | 79 | private static final String DEFAULT_VERSION = "0.0.0"; |
| 80 | + private static final Set<String> SAFE_TO_LOG_PROPERTIES = |
| 81 | + ImmutableSortedSet.orderedBy(String.CASE_INSENSITIVE_ORDER) |
| 82 | + .add( |
| 83 | + BigQueryJdbcUrlUtility.PROJECT_ID_PROPERTY_NAME, |
| 84 | + BigQueryJdbcUrlUtility.DEFAULT_DATASET_PROPERTY_NAME, |
| 85 | + BigQueryJdbcUrlUtility.LOCATION_PROPERTY_NAME, |
| 86 | + BigQueryJdbcUrlUtility.ENABLE_HTAPI_PROPERTY_NAME, |
| 87 | + BigQueryJdbcUrlUtility.UNSUPPORTED_HTAPI_FALLBACK_PROPERTY_NAME, |
| 88 | + BigQueryJdbcUrlUtility.HTAPI_MIN_TABLE_SIZE_PROPERTY_NAME, |
| 89 | + BigQueryJdbcUrlUtility.HTAPI_ACTIVATION_RATIO_PROPERTY_NAME, |
| 90 | + BigQueryJdbcUrlUtility.KMS_KEY_NAME_PROPERTY_NAME, |
| 91 | + BigQueryJdbcUrlUtility.QUERY_PROPERTIES_NAME, |
| 92 | + BigQueryJdbcUrlUtility.ENABLE_SESSION_PROPERTY_NAME, |
| 93 | + BigQueryJdbcUrlUtility.LOG_LEVEL_PROPERTY_NAME, |
| 94 | + BigQueryJdbcUrlUtility.LOG_PATH_PROPERTY_NAME, |
| 95 | + BigQueryJdbcUrlUtility.OAUTH_TYPE_PROPERTY_NAME, |
| 96 | + BigQueryJdbcUrlUtility.OAUTH_ACCESS_TOKEN_READONLY_PROPERTY_NAME, |
| 97 | + BigQueryJdbcUrlUtility.USE_QUERY_CACHE_PROPERTY_NAME, |
| 98 | + BigQueryJdbcUrlUtility.QUERY_DIALECT_PROPERTY_NAME, |
| 99 | + BigQueryJdbcUrlUtility.ALLOW_LARGE_RESULTS_PROPERTY_NAME, |
| 100 | + BigQueryJdbcUrlUtility.LARGE_RESULTS_TABLE_PROPERTY_NAME, |
| 101 | + BigQueryJdbcUrlUtility.LARGE_RESULTS_DATASET_PROPERTY_NAME, |
| 102 | + BigQueryJdbcUrlUtility.DESTINATION_DATASET_EXPIRATION_TIME_PROPERTY_NAME, |
| 103 | + BigQueryJdbcUrlUtility.UNIVERSE_DOMAIN_OVERRIDE_PROPERTY_NAME, |
| 104 | + BigQueryJdbcUrlUtility.PROXY_HOST_PROPERTY_NAME, |
| 105 | + BigQueryJdbcUrlUtility.PROXY_PORT_PROPERTY_NAME, |
| 106 | + BigQueryJdbcUrlUtility.JOB_CREATION_MODE_PROPERTY_NAME, |
| 107 | + BigQueryJdbcUrlUtility.MAX_RESULTS_PROPERTY_NAME, |
| 108 | + BigQueryJdbcUrlUtility.PARTNER_TOKEN_PROPERTY_NAME, |
| 109 | + BigQueryJdbcUrlUtility.ENDPOINT_OVERRIDES_PROPERTY_NAME, |
| 110 | + BigQueryJdbcUrlUtility.PRIVATE_SERVICE_CONNECT_PROPERTY_NAME, |
| 111 | + BigQueryJdbcUrlUtility.METADATA_FETCH_THREAD_COUNT_PROPERTY_NAME, |
| 112 | + BigQueryJdbcUrlUtility.RETRY_TIMEOUT_IN_SECS_PROPERTY_NAME, |
| 113 | + BigQueryJdbcUrlUtility.JOB_TIMEOUT_PROPERTY_NAME, |
| 114 | + BigQueryJdbcUrlUtility.RETRY_INITIAL_DELAY_PROPERTY_NAME, |
| 115 | + BigQueryJdbcUrlUtility.RETRY_MAX_DELAY_PROPERTY_NAME, |
| 116 | + BigQueryJdbcUrlUtility.ADDITIONAL_PROJECTS_PROPERTY_NAME, |
| 117 | + BigQueryJdbcUrlUtility.CONNECTION_POOL_SIZE_PROPERTY_NAME, |
| 118 | + BigQueryJdbcUrlUtility.LISTENER_POOL_SIZE_PROPERTY_NAME, |
| 119 | + BigQueryJdbcUrlUtility.ENABLE_WRITE_API_PROPERTY_NAME, |
| 120 | + BigQueryJdbcUrlUtility.SWA_APPEND_ROW_COUNT_PROPERTY_NAME, |
| 121 | + BigQueryJdbcUrlUtility.SWA_ACTIVATION_ROW_COUNT_PROPERTY_NAME, |
| 122 | + BigQueryJdbcUrlUtility.FILTER_TABLES_ON_DEFAULT_DATASET_PROPERTY_NAME, |
| 123 | + BigQueryJdbcUrlUtility.REQUEST_GOOGLE_DRIVE_SCOPE_PROPERTY_NAME, |
| 124 | + BigQueryJdbcUrlUtility.SSL_TRUST_STORE_PROPERTY_NAME, |
| 125 | + BigQueryJdbcUrlUtility.MAX_BYTES_BILLED_PROPERTY_NAME, |
| 126 | + BigQueryJdbcUrlUtility.LABELS_PROPERTY_NAME, |
| 127 | + BigQueryJdbcUrlUtility.REQUEST_REASON_PROPERTY_NAME, |
| 128 | + BigQueryJdbcUrlUtility.HTTP_CONNECT_TIMEOUT_PROPERTY_NAME, |
| 129 | + BigQueryJdbcUrlUtility.HTTP_READ_TIMEOUT_PROPERTY_NAME, |
| 130 | + BigQueryJdbcUrlUtility.BYOID_AUDIENCE_URI_PROPERTY_NAME, |
| 131 | + BigQueryJdbcUrlUtility.BYOID_CREDENTIAL_SOURCE_PROPERTY_NAME, |
| 132 | + BigQueryJdbcUrlUtility.BYOID_POOL_USER_PROJECT_PROPERTY_NAME, |
| 133 | + BigQueryJdbcUrlUtility.BYOID_SA_IMPERSONATION_URI_PROPERTY_NAME, |
| 134 | + BigQueryJdbcUrlUtility.BYOID_SUBJECT_TOKEN_TYPE_PROPERTY_NAME, |
| 135 | + BigQueryJdbcUrlUtility.BYOID_TOKEN_URI_PROPERTY_NAME, |
| 136 | + BigQueryJdbcUrlUtility.OAUTH_SA_IMPERSONATION_EMAIL_PROPERTY_NAME, |
| 137 | + BigQueryJdbcUrlUtility.OAUTH_SA_IMPERSONATION_CHAIN_PROPERTY_NAME, |
| 138 | + BigQueryJdbcUrlUtility.OAUTH_SA_IMPERSONATION_SCOPES_PROPERTY_NAME, |
| 139 | + BigQueryJdbcUrlUtility.OAUTH_SA_IMPERSONATION_TOKEN_LIFETIME_PROPERTY_NAME, |
| 140 | + BigQueryJdbcUrlUtility.OAUTH_SA_EMAIL_PROPERTY_NAME, |
| 141 | + BigQueryJdbcUrlUtility.OAUTH_PVT_KEY_PATH_PROPERTY_NAME, |
| 142 | + BigQueryJdbcUrlUtility.OAUTH_CLIENT_ID_PROPERTY_NAME) |
| 143 | + .build(); |
79 | 144 | private HeaderProvider headerProvider; |
80 | 145 | BigQueryReadClient bigQueryReadClient = null; |
81 | 146 | BigQueryWriteClient bigQueryWriteClient = null; |
@@ -152,6 +217,18 @@ public class BigQueryConnection extends BigQueryNoOpsConnection { |
152 | 217 | this.connectionId = UUID.randomUUID().toString(); |
153 | 218 | try (BigQueryJdbcMdc.MdcCloseable mdc = BigQueryJdbcMdc.registerInstance(this.connectionId)) { |
154 | 219 | this.connectionUrl = url; |
| 220 | + if (LOG.isLoggable(java.util.logging.Level.CONFIG)) { |
| 221 | + Properties connectionProps = ds.createProperties(); |
| 222 | + Properties maskedProps = new Properties(); |
| 223 | + for (String name : connectionProps.stringPropertyNames()) { |
| 224 | + String value = connectionProps.getProperty(name); |
| 225 | + if (!SAFE_TO_LOG_PROPERTIES.contains(name)) { |
| 226 | + value = "*****"; |
| 227 | + } |
| 228 | + maskedProps.setProperty(name, value); |
| 229 | + } |
| 230 | + LOG.config("Connection properties: %s", maskedProps.toString()); |
| 231 | + } |
155 | 232 | this.openStatements = ConcurrentHashMap.newKeySet(); |
156 | 233 | this.autoCommit = true; |
157 | 234 | this.sqlWarnings = new ArrayList<>(); |
|
0 commit comments