func (q *QueryConfig) populateJobQueryConfig(conf *bq.JobConfigurationQuery) error { conf.Query = q.Q if len(q.TableDefinitions) > 0 { conf.TableDefinitions = make(map[string]bq.ExternalDataConfiguration) } for name, data := range q.TableDefinitions { conf.TableDefinitions[name] = data.externalDataConfig() } if q.DefaultProjectID != "" || q.DefaultDatasetID != "" { conf.DefaultDataset = &bq.DatasetReference{ DatasetId: q.DefaultDatasetID, ProjectId: q.DefaultProjectID, } } if tier := int64(q.MaxBillingTier); tier > 0 { conf.MaximumBillingTier = &tier } conf.CreateDisposition = string(q.CreateDisposition) conf.WriteDisposition = string(q.WriteDisposition) conf.AllowLargeResults = q.AllowLargeResults conf.Priority = string(q.Priority) f := false if q.DisableQueryCache { conf.UseQueryCache = &f } if q.DisableFlattenedResults { conf.FlattenResults = &f // DisableFlattenResults implies AllowLargeResults. conf.AllowLargeResults = true } if q.MaxBytesBilled >= 1 { conf.MaximumBytesBilled = q.MaxBytesBilled } if q.UseStandardSQL || len(q.Parameters) > 0 { conf.UseLegacySql = false conf.ForceSendFields = append(conf.ForceSendFields, "UseLegacySql") } if q.Dst != nil && !q.Dst.implicitTable() { conf.DestinationTable = q.Dst.tableRefProto() } for _, p := range q.Parameters { qp, err := p.toRaw() if err != nil { return err } conf.QueryParameters = append(conf.QueryParameters, qp) } return nil }
func (opt maxBillingTier) customizeQuery(conf *bq.JobConfigurationQuery) { tier := int64(opt) conf.MaximumBillingTier = &tier }