示例#1
0
        /// <inheritdoc />
        public override BigQueryJob CreateQueryJob(string sql, IEnumerable <BigQueryParameter> parameters, QueryOptions options = null)
        {
            var request = CreateInsertQueryJobRequest(sql, parameters, options);
            var job     = request.Execute();

            return(new BigQueryJob(this, job));
        }
示例#2
0
 private JobsResource.InsertRequest CreateInsertQueryJobRequest(JobConfigurationQuery query, QueryOptions options)
 {
     options?.ModifyRequest(query);
     return(CreateInsertJobRequest(new JobConfiguration {
         Query = query, DryRun = options?.DryRun
     }, options));
 }
示例#3
0
        private JobsResource.InsertRequest CreateInsertQueryJobRequest(string sql, IEnumerable <BigQueryParameter> parameters, QueryOptions options)
        {
            GaxPreconditions.CheckNotNull(sql, nameof(sql));
            if (parameters != null)
            {
                parameters = parameters.ToList();
                GaxPreconditions.CheckArgument(!parameters.Contains(null), nameof(parameters), "Parameter list must not contain null elements");
            }
            var jobConfigurationQuery = new JobConfigurationQuery
            {
                Query           = sql,
                UseLegacySql    = false,
                ParameterMode   = "named",
                QueryParameters = parameters?.Select(p => p.ToQueryParameter()).ToList()
            };

            options?.ModifyRequest(jobConfigurationQuery);
            // If there aren't any parameters, set ParameterMode to null - otherwise legacy SQL queries fail,
            // even if haven't set any parameters.
            if (parameters == null)
            {
                jobConfigurationQuery.ParameterMode = null;
            }
            // Now we've definitely set the parameter mode, validate that all parameters have names if appropriate.
            if (jobConfigurationQuery.ParameterMode == "named")
            {
                GaxPreconditions.CheckArgument(parameters.All(p => !string.IsNullOrEmpty(p.Name)), nameof(parameters),
                                               $"When using a parameter mode of '{nameof(BigQueryParameterMode.Named)}', all parameters must have names");
            }
            return(CreateInsertJobRequest(new JobConfiguration {
                Query = jobConfigurationQuery, DryRun = options?.DryRun
            }, options));
        }
示例#4
0
        /// <inheritdoc />
        public override async Task <BigQueryJob> CreateQueryJobAsync(string sql, IEnumerable <BigQueryParameter> parameters, QueryOptions options = null, CancellationToken cancellationToken = default)
        {
            var request = CreateInsertQueryJobRequest(sql, parameters, options);
            var job     = await request.ExecuteAsync(cancellationToken).ConfigureAwait(false);

            return(new BigQueryJob(this, job));
        }
示例#5
0
        public override async Task <BigQueryJob> CreateQueryJobAsync(BigQueryCommand command, QueryOptions options = null, CancellationToken cancellationToken = default)
        {
            GaxPreconditions.CheckNotNull(command, nameof(command));
            var query = new JobConfigurationQuery {
                UseLegacySql = false
            };

            command.PopulateJobConfigurationQuery(query);
            var job = await CreateInsertQueryJobRequest(query, options).ExecuteAsync(cancellationToken).ConfigureAwait(false);

            return(new BigQueryJob(this, job));
        }
示例#6
0
 /// <summary>
 /// Creates a job for a SQL query.
 /// </summary>
 /// <param name="sql">The SQL query. Must not be null.</param>
 /// <param name="parameters">The parameters for the query. May be null, which is equivalent to specifying an empty list of parameters. Must not contain null elements.</param>
 /// <param name="options">The options for the operation. May be null, in which case defaults will be supplied.</param>
 /// <returns>The query job created. Use <see cref="GetQueryResults(JobReference,GetQueryResultsOptions)"/> to retrieve
 /// the results of the query.</returns>
 public virtual BigQueryJob CreateQueryJob(string sql, IEnumerable <BigQueryParameter> parameters, QueryOptions options = null)
 {
     throw new NotImplementedException();
 }
示例#7
0
 /// <summary>
 /// Asynchronously creates a job for a SQL query.
 /// </summary>
 /// <param name="sql">The SQL query. Must not be null.</param>
 /// <param name="parameters">The parameters for the query. May be null, which is equivalent to specifying an empty list of parameters. Must not contain null elements.</param>
 /// <param name="options">The options for the operation. May be null, in which case defaults will be supplied.</param>
 /// <param name="cancellationToken">The token to monitor for cancellation requests.</param>
 /// <returns>A task representing the asynchronous operation. When complete, the result is
 /// the query job created. Use <see cref="GetQueryResultsAsync(JobReference,GetQueryResultsOptions,CancellationToken)"/> to retrieve
 /// the results of the query.</returns>
 public virtual Task <BigQueryJob> CreateQueryJobAsync(string sql, IEnumerable <BigQueryParameter> parameters, QueryOptions options = null, CancellationToken cancellationToken = default)
 {
     throw new NotImplementedException();
 }
示例#8
0
 /// <summary>
 /// Executes a query.
 /// </summary>
 /// <remarks>
 /// <para>
 /// This method will only return when the query has completed. It simply delegates to <see cref="CreateQueryJob(string, IEnumerable{BigQueryParameter}, QueryOptions)"/>
 /// and then <see cref="BigQueryJob.GetQueryResults(GetQueryResultsOptions)"/>.
 /// </para>
 /// </remarks>
 /// <param name="sql">The SQL query. Must not be null.</param>
 /// <param name="parameters">The parameters for the query. May be null, which is equivalent to specifying an empty list of parameters. Must not contain null elements.</param>
 /// <param name="queryOptions">The options for the query. May be null, in which case defaults will be supplied.</param>
 /// <param name="resultsOptions">The options for retrieving query results. May be null, in which case defaults will be supplied.</param>
 /// <returns>The result of the query.</returns>
 public virtual BigQueryResults ExecuteQuery(string sql, IEnumerable <BigQueryParameter> parameters, QueryOptions queryOptions = null, GetQueryResultsOptions resultsOptions = null) =>
 CreateQueryJob(sql, parameters, queryOptions).GetQueryResults(resultsOptions);
示例#9
0
        /// <summary>
        /// Asynchronously executes a query.
        /// </summary>
        /// <remarks>
        /// <para>
        /// The task returned by this method will only complete when the query has completed.
        /// This method simply delegates to <see cref="CreateQueryJobAsync(string, IEnumerable{BigQueryParameter}, QueryOptions, CancellationToken)"/>
        /// and then <see cref="BigQueryJob.GetQueryResultsAsync(GetQueryResultsOptions, CancellationToken)"/>.
        /// </para>
        /// </remarks>
        /// <param name="sql">The SQL query. Must not be null.</param>
        /// <param name="parameters">The parameters for the query. May be null, which is equivalent to specifying an empty list of parameters. Must not contain null elements.</param>
        /// <param name="queryOptions">The options for the query. May be null, in which case defaults will be supplied.</param>
        /// <param name="resultsOptions">The options for retrieving query results. May be null, in which case defaults will be supplied.</param>
        /// <param name="cancellationToken">The token to monitor for cancellation requests.</param>
        /// <returns>A task representing the asynchronous operation. When complete, the result is
        /// the <see cref="BigQueryResults"/> representing the query.</returns>
        public virtual async Task <BigQueryResults> ExecuteQueryAsync(string sql, IEnumerable <BigQueryParameter> parameters, QueryOptions queryOptions = null, GetQueryResultsOptions resultsOptions = null, CancellationToken cancellationToken = default)
        {
            var job = await CreateQueryJobAsync(sql, parameters, queryOptions, cancellationToken).ConfigureAwait(false);

            return(await job.GetQueryResultsAsync(resultsOptions, cancellationToken).ConfigureAwait(false));
        }
示例#10
0
 public virtual BigQueryResults ExecuteQuery(string sql, QueryOptions queryOptions = null, GetQueryResultsOptions resultsOptions = null) =>
 CreateQueryJob(sql, queryOptions).GetQueryResults(resultsOptions);
示例#11
0
 public virtual BigQueryResults ExecuteQuery(BigQueryCommand command, QueryOptions queryOptions = null, GetQueryResultsOptions resultsOptions = null) =>
 CreateQueryJob(command, queryOptions).GetQueryResults(resultsOptions);
示例#12
0
 public virtual Task <BigQueryJob> CreateQueryJobAsync(BigQueryCommand command, QueryOptions options = null, CancellationToken cancellationToken = default)
 {
     throw new NotImplementedException();
 }
示例#13
0
 public virtual BigQueryJob CreateQueryJob(BigQueryCommand command, QueryOptions options = null)
 {
     throw new NotImplementedException();
 }
示例#14
0
 public virtual BigQueryJob CreateQueryJob(string sql, QueryOptions options = null)
 {
     throw new NotImplementedException();
 }
示例#15
0
        public virtual async Task <BigQueryResults> ExecuteQueryAsync(BigQueryCommand command, QueryOptions queryOptions = null, GetQueryResultsOptions resultsOptions = null, CancellationToken cancellationToken = default)
        {
            var job = await CreateQueryJobAsync(command, queryOptions, cancellationToken).ConfigureAwait(false);

            return(await job.GetQueryResultsAsync(resultsOptions, cancellationToken).ConfigureAwait(false));
        }
示例#16
0
 /// <summary>
 /// Asynchronously creates a job for a SQL query.
 /// </summary>
 /// <param name="sql">The SQL query. Must not be null.</param>
 /// <param name="options">The options for the operation. May be null, in which case defaults will be supplied.</param>
 /// <param name="cancellationToken">The token to monitor for cancellation requests.</param>
 /// <returns>A task representing the asynchronous operation. When complete, the result is
 /// the query job created. Use <see cref="GetQueryResultsAsync(JobReference,GetQueryResultsOptions,CancellationToken)"/> to retrieve
 /// the results of the query.</returns>
 public virtual Task <BigQueryJob> CreateQueryJobAsync(string sql, QueryOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
 {
     throw new NotImplementedException();
 }