diff --git a/google/resource_bigquery_table.go b/google/resource_bigquery_table.go index 0ea8e95e..52aa33ca 100644 --- a/google/resource_bigquery_table.go +++ b/google/resource_bigquery_table.go @@ -142,7 +142,7 @@ func resourceBigQueryTable() *schema.Resource { ValidateFunc: validation.StringInSlice([]string{"DAY"}, false), }, - // Type: [Optional] The field used to determine how to create a time-based + // Field: [Optional] The field used to determine how to create a time-based // partition. If time-based partitioning is enabled without this value, the // table is partitioned based on the load time. "field": { @@ -150,6 +150,14 @@ func resourceBigQueryTable() *schema.Resource { Optional: true, ForceNew: true, }, + + // RequirePartitionFilter: [Optional] If set to true, queries over this table + // require a partition filter that can be used for partition elimination to be + // specified. + "require_partition_filter": { + Type: schema.TypeBool, + Optional: true, + }, }, }, }, @@ -436,6 +444,10 @@ func expandTimePartitioning(configured interface{}) *bigquery.TimePartitioning { tp.ExpirationMs = int64(v.(int)) } + if v, ok := raw["require_partition_filter"]; ok { + tp.RequirePartitionFilter = v.(bool) + } + return tp } @@ -450,6 +462,10 @@ func flattenTimePartitioning(tp *bigquery.TimePartitioning) []map[string]interfa result["expiration_ms"] = tp.ExpirationMs } + if tp.RequirePartitionFilter == true { + result["require_partition_filter"] = tp.RequirePartitionFilter + } + return []map[string]interface{}{result} } diff --git a/google/resource_bigquery_table_test.go b/google/resource_bigquery_table_test.go index 7f63543b..dc0b9090 100644 --- a/google/resource_bigquery_table_test.go +++ b/google/resource_bigquery_table_test.go @@ -122,7 +122,8 @@ resource "google_bigquery_table" "test" { time_partitioning { type = "DAY" - field = "ts" + field = "ts" + require_partition_filter = true } schema = <