Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ public class BigQueryConnection extends BigQueryNoOpsConnection {
boolean enableGcpLogExporter;
OpenTelemetry customOpenTelemetry;
boolean useGlobalOpenTelemetry;
boolean enableGraphMetadata;
private OpenTelemetry openTelemetry;
private Context otelContext;
Tracer tracer =
Expand Down Expand Up @@ -314,7 +315,7 @@ public class BigQueryConnection extends BigQueryNoOpsConnection {
}

this.reqGoogleDriveScope =
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
String.valueOf(ds.getRequestGoogleDriveScope()),
BigQueryJdbcUrlUtility.REQUEST_GOOGLE_DRIVE_SCOPE_PROPERTY_NAME);

Expand Down Expand Up @@ -397,6 +398,7 @@ public class BigQueryConnection extends BigQueryNoOpsConnection {
this.connectionPoolSize = ds.getConnectionPoolSize();
this.listenerPoolSize = ds.getListenerPoolSize();
this.partnerToken = ds.getPartnerToken();
this.enableGraphMetadata = ds.getEnableGraphMetadata();

this.headerProvider = createHeaderProvider();
this.enableGcpTraceExporter = ds.getEnableGcpTraceExporter();
Expand Down Expand Up @@ -867,6 +869,10 @@ Long getListenerPoolSize() {
return listenerPoolSize;
}

boolean isEnableGraphMetadata() {
return this.enableGraphMetadata;
}

@Override
public boolean isValid(int timeout) throws SQLException {
if (timeout < 0) {
Expand Down Expand Up @@ -1644,7 +1650,7 @@ private boolean checkIsReadOnlyTokenUsed(Map<String, String> authProps) {
String readonlyValue =
authProps.get(BigQueryJdbcUrlUtility.OAUTH_ACCESS_TOKEN_READONLY_PROPERTY_NAME);
if (readonlyValue != null) {
return BigQueryJdbcUrlUtility.convertIntToBoolean(
return BigQueryJdbcUrlUtility.convertToBoolean(
readonlyValue, BigQueryJdbcUrlUtility.OAUTH_ACCESS_TOKEN_READONLY_PROPERTY_NAME);
}
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ public Connection connect(String url, Properties info) throws SQLException {
boolean enableGcpLogExporter = false;
if (enableGcpLogExporterStr != null) {
enableGcpLogExporter =
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
enableGcpLogExporterStr,
BigQueryJdbcUrlUtility.ENABLE_GCP_LOG_EXPORTER_PROPERTY_NAME);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,8 @@ protected boolean removeEldestEntry(Map.Entry<String, Map<String, String>> eldes
static final String MAX_BYTES_BILLED_PROPERTY_NAME = "MaximumBytesBilled";
static final Long DEFAULT_MAX_BYTES_BILLED_VALUE = 0L;
static final String LABELS_PROPERTY_NAME = "Labels";
static final String ENABLE_GRAPH_METADATA_PROPERTY_NAME = "EnableGraphMetadata";
static final boolean DEFAULT_ENABLE_GRAPH_METADATA_VALUE = false;
static final List<String> OVERRIDE_PROPERTIES =
Arrays.asList(
BIGQUERY_ENDPOINT_OVERRIDE_PROPERTY_NAME,
Expand Down Expand Up @@ -691,6 +693,11 @@ protected boolean removeEldestEntry(Map.Entry<String, Map<String, String>> eldes
.setDefaultValue(
String.valueOf(
TelemetryPropertyUtility.DEFAULT_ENABLE_DIAGNOSTIC_TELEMETRY_VALUE))
.build(),
BigQueryConnectionProperty.newBuilder()
.setName(ENABLE_GRAPH_METADATA_PROPERTY_NAME)
.setDescription(
"Enables or disables discovery of Property Graphs and related metadata in DatabaseMetaData methods.")
.build())));

private static final List<String> NETWORK_PROPERTIES =
Expand Down Expand Up @@ -861,7 +868,7 @@ static String appendPropertiesToURL(String url, String callerClassName, Properti
return urlBuilder.toString();
}

static boolean convertIntToBoolean(String value, String propertyName) {
static boolean convertToBoolean(String value, String propertyName) {
int integerValue;

try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ public class DataSource implements javax.sql.DataSource {
private OpenTelemetry customOpenTelemetry;
private boolean useGlobalOpenTelemetry = BigQueryJdbcUrlUtility.DEFAULT_USE_GLOBAL_OTEL_VALUE;
private Boolean enableDiagnosticTelemetry;
private Boolean enableGraphMetadata;
Comment thread
Neenu1995 marked this conversation as resolved.

// Make sure the JDBC driver class is loaded.
static {
Expand All @@ -157,13 +158,13 @@ public class DataSource implements javax.sql.DataSource {
BigQueryJdbcUrlUtility.ENABLE_HTAPI_PROPERTY_NAME,
(ds, val) ->
ds.setEnableHighThroughputAPI(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.ENABLE_HTAPI_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.UNSUPPORTED_HTAPI_FALLBACK_PROPERTY_NAME,
(ds, val) ->
ds.setUnsupportedHTAPIFallback(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.UNSUPPORTED_HTAPI_FALLBACK_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.HTAPI_MIN_TABLE_SIZE_PROPERTY_NAME,
Expand All @@ -182,13 +183,13 @@ public class DataSource implements javax.sql.DataSource {
BigQueryJdbcUrlUtility.ENABLE_SESSION_PROPERTY_NAME,
(ds, val) ->
ds.setEnableSession(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.ENABLE_SESSION_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.ENABLE_TIMESTAMP_PICOS_PROPERTY_NAME,
(ds, val) ->
ds.setEnableTimestampPicos(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.ENABLE_TIMESTAMP_PICOS_PROPERTY_NAME)))
.put(BigQueryJdbcUrlUtility.LOG_LEVEL_PROPERTY_NAME, DataSource::setLogLevel)
.put(BigQueryJdbcUrlUtility.LOG_PATH_PROPERTY_NAME, DataSource::setLogPath)
Expand All @@ -209,7 +210,7 @@ public class DataSource implements javax.sql.DataSource {
BigQueryJdbcUrlUtility.OAUTH_ACCESS_TOKEN_READONLY_PROPERTY_NAME,
(ds, val) ->
ds.setOAuthAccessTokenReadonly(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.OAUTH_ACCESS_TOKEN_READONLY_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.OAUTH_REFRESH_TOKEN_PROPERTY_NAME,
Expand All @@ -218,14 +219,14 @@ public class DataSource implements javax.sql.DataSource {
BigQueryJdbcUrlUtility.USE_QUERY_CACHE_PROPERTY_NAME,
(ds, val) ->
ds.setUseQueryCache(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.USE_QUERY_CACHE_PROPERTY_NAME)))
.put(BigQueryJdbcUrlUtility.QUERY_DIALECT_PROPERTY_NAME, DataSource::setQueryDialect)
.put(
BigQueryJdbcUrlUtility.ALLOW_LARGE_RESULTS_PROPERTY_NAME,
(ds, val) ->
ds.setAllowLargeResults(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.ALLOW_LARGE_RESULTS_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.LARGE_RESULTS_TABLE_PROPERTY_NAME,
Expand Down Expand Up @@ -258,7 +259,7 @@ public class DataSource implements javax.sql.DataSource {
BigQueryJdbcUrlUtility.ENABLE_WRITE_API_PROPERTY_NAME,
(ds, val) ->
ds.setEnableWriteAPI(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.ENABLE_WRITE_API_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.ADDITIONAL_PROJECTS_PROPERTY_NAME,
Expand All @@ -267,14 +268,14 @@ public class DataSource implements javax.sql.DataSource {
BigQueryJdbcUrlUtility.FILTER_TABLES_ON_DEFAULT_DATASET_PROPERTY_NAME,
(ds, val) ->
ds.setFilterTablesOnDefaultDataset(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val,
BigQueryJdbcUrlUtility.FILTER_TABLES_ON_DEFAULT_DATASET_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.ENABLE_PROJECT_DISCOVERY_PROPERTY_NAME,
(ds, val) ->
ds.setEnableProjectDiscovery(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.ENABLE_PROJECT_DISCOVERY_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.REQUEST_GOOGLE_DRIVE_SCOPE_PROPERTY_NAME,
Expand Down Expand Up @@ -376,26 +377,32 @@ public class DataSource implements javax.sql.DataSource {
BigQueryJdbcUrlUtility.ENABLE_GCP_TRACE_EXPORTER_PROPERTY_NAME,
(ds, val) ->
ds.setEnableGcpTraceExporter(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.ENABLE_GCP_TRACE_EXPORTER_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.ENABLE_GCP_LOG_EXPORTER_PROPERTY_NAME,
(ds, val) ->
ds.setEnableGcpLogExporter(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.ENABLE_GCP_LOG_EXPORTER_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.USE_GLOBAL_OTEL_PROPERTY_NAME,
(ds, val) ->
ds.setUseGlobalOpenTelemetry(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.USE_GLOBAL_OTEL_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.ENABLE_DIAGNOSTIC_TELEMETRY_PROPERTY_NAME,
(ds, val) ->
ds.setEnableDiagnosticTelemetry(
BigQueryJdbcUrlUtility.convertIntToBoolean(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.ENABLE_DIAGNOSTIC_TELEMETRY_PROPERTY_NAME)))
.put(
BigQueryJdbcUrlUtility.ENABLE_GRAPH_METADATA_PROPERTY_NAME,
(ds, val) ->
ds.setEnableGraphMetadata(
BigQueryJdbcUrlUtility.convertToBoolean(
val, BigQueryJdbcUrlUtility.ENABLE_GRAPH_METADATA_PROPERTY_NAME)))
.build();

public static DataSource fromUrl(String url) {
Expand Down Expand Up @@ -738,6 +745,11 @@ Properties createProperties() {
BigQueryJdbcUrlUtility.USE_GLOBAL_OTEL_PROPERTY_NAME,
String.valueOf(this.useGlobalOpenTelemetry));
}
if (this.enableGraphMetadata != null) {
connectionProperties.setProperty(
BigQueryJdbcUrlUtility.ENABLE_GRAPH_METADATA_PROPERTY_NAME,
String.valueOf(this.enableGraphMetadata));
}
connectionProperties.setProperty(
BigQueryJdbcUrlUtility.ENABLE_DIAGNOSTIC_TELEMETRY_PROPERTY_NAME,
String.valueOf(getEnableDiagnosticTelemetry()));
Expand Down Expand Up @@ -1537,6 +1549,16 @@ public void setPrivateServiceConnect(String privateServiceConnect) {
this.privateServiceConnect = privateServiceConnect;
}

public boolean getEnableGraphMetadata() {
return enableGraphMetadata != null
? enableGraphMetadata
: BigQueryJdbcUrlUtility.DEFAULT_ENABLE_GRAPH_METADATA_VALUE;
}

public void setEnableGraphMetadata(Boolean enableGraphMetadata) {
this.enableGraphMetadata = enableGraphMetadata;
}

@Override
public PrintWriter getLogWriter() {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -391,4 +391,26 @@ public void testParseDiagnosticTelemetryProperties() {
assertThat(defaultDs.getEnableDiagnosticTelemetry())
.isEqualTo(TelemetryPropertyUtility.DEFAULT_ENABLE_DIAGNOSTIC_TELEMETRY_VALUE);
}

@Test
public void testEnableGraphMetadataProperties() {
String url =
"jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;"
+ "ProjectId=MyBigQueryProject;"
+ "EnableGraphMetadata=1";

assertThat(BigQueryJdbcUrlUtility.parseUriProperty(url, "EnableGraphMetadata")).isEqualTo("1");

DataSource ds = DataSource.fromUrl(url);
assertThat(ds.getEnableGraphMetadata()).isTrue();

Properties props = ds.createProperties();
assertThat(props.getProperty("EnableGraphMetadata")).isEqualTo("true");

String urlWithoutGraph =
"jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=MyBigQueryProject";
DataSource defaultDs = DataSource.fromUrl(urlWithoutGraph);
assertThat(defaultDs.getEnableGraphMetadata())
.isEqualTo(BigQueryJdbcUrlUtility.DEFAULT_ENABLE_GRAPH_METADATA_VALUE);
}
}
Loading