コード例 #1
0
 public async Task <QueryExecuteSubsetResult> ExecuteQueryExecuteSubsetAsync(QueryExecuteSubsetParams subsetParams)
 {
     return(await _rpc.InvokeWithParameterObjectAsync <QueryExecuteSubsetResult>("query/subset", subsetParams));
 }
コード例 #2
0
        public async Task HandleAsync(SubmitCode command, KernelInvocationContext context)
        {
            if (!_connected)
            {
                return;
            }

            if (_queryCompletionHandler != null)
            {
                context.Display("Error: Another query is currently running. Please wait for that query to complete before re-running this cell.");
                return;
            }

            var completion = new TaskCompletionSource <bool>();

            _queryCompletionHandler = async queryParams =>
            {
                try
                {
                    foreach (var batchSummary in queryParams.BatchSummaries)
                    {
                        foreach (var resultSummary in batchSummary.ResultSetSummaries)
                        {
                            var subsetParams = new QueryExecuteSubsetParams()
                            {
                                OwnerUri       = _tempFileUri.ToString(),
                                BatchIndex     = batchSummary.Id,
                                ResultSetIndex = resultSummary.Id,
                                RowsStartIndex = 0,
                                RowsCount      = Convert.ToInt32(resultSummary.RowCount)
                            };
                            var subsetResult = await _serviceClient.ExecuteQueryExecuteSubsetAsync(subsetParams);

                            if (subsetResult.Message != null)
                            {
                                context.Display(subsetResult.Message);
                            }
                            else
                            {
                                var table = GetEnumerableTable(resultSummary.ColumnInfo, subsetResult.ResultSubset.Rows);
                                context.Display(table);
                            }
                        }
                    }
                    completion.SetResult(true);
                }
                catch (Exception e)
                {
                    completion.SetException(e);
                }
            };

            try
            {
                var queryResult = await _serviceClient.ExecuteQueryStringAsync(_tempFileUri, command.Code);

                await completion.Task;
            }
            finally
            {
                _queryCompletionHandler = null;
            }
        }