public async Task Query()
        {
            // Verify that the query commands work.

            var endpoint   = bucket.Configuration.GetEndPoint();
            var bucketName = bucket.Configuration.BucketName;

            // Insert a couple documents into the database.

            var jack = new Person()
            {
                Id   = 0,
                Name = "Jack",
                Age  = 10,
                Data = new byte[] { 0, 1, 2, 3, 4 }
            };

            var jill = new Person()
            {
                Id   = 1,
                Name = "Jill",
                Age  = 11,
                Data = new byte[] { 5, 6, 7, 8, 9 }
            };

            await bucket.InsertSafeAsync(jack, persistTo : PersistTo.One);

            await bucket.InsertSafeAsync(jill, persistTo : PersistTo.One);

            await bucket.WaitForIndexerAsync();

            bucket.Query <dynamic>($"select count(*) from `{bucket.Name}`;");

            using (var runner = new ProgramRunner())
            {
                // Query using the [http://...] target format and passing the query on the command line.

                var result = runner.Execute(Program.Main,
                                            "couchbase",
                                            "query",
                                            $"http://{endpoint.Address}:{endpoint.Port}@{username}:{password}:{bucketName}",
                                            $"select * from `{bucket.Name}`;");

                Assert.Equal(0, result.ExitCode);
                Assert.Contains("Jack", result.OutputText);
                Assert.Contains("Jill", result.OutputText);

                // Query again, but using the using the [couchbase://...] target format.

                result = runner.Execute(Program.Main,
                                        "couchbase",
                                        "query",
                                        $"couchbase://{endpoint.Address}:{endpoint.Port}@{username}:{password}:{bucketName}",
                                        $"select * from `{bucket.Name}`;");

                Assert.Equal(0, result.ExitCode);
                Assert.Contains("Jack", result.OutputText);
                Assert.Contains("Jill", result.OutputText);

                // Pass the query as a file.

                using (var tempFile = new TempFile())
                {
                    File.WriteAllText(tempFile.Path, $"select * from `{bucket.Name}`;");

                    result = runner.Execute(Program.Main,
                                            "couchbase",
                                            "query",
                                            $"couchbase://{endpoint.Address}:{endpoint.Port}@{username}:{password}:{bucketName}",
                                            $"@{tempFile.Path}");

                    Assert.Equal(0, result.ExitCode);
                    Assert.Contains("Jack", result.OutputText);
                    Assert.Contains("Jill", result.OutputText);
                }

                // Pass the query as STDIN.

                result = runner.ExecuteWithInput(Program.Main, $"select * from `{bucket.Name}`;",
                                                 "couchbase",
                                                 "query",
                                                 $"couchbase://{endpoint.Address}:{endpoint.Port}@{username}:{password}:{bucketName}",
                                                 "-");

                Assert.Equal(0, result.ExitCode);
                Assert.Contains("Jack", result.OutputText);
                Assert.Contains("Jill", result.OutputText);
            }
        }