// Path: src/test/java/liquibase/ext/spanner/JdbcMetadataQueries.java
// static class ColumnMetaData {
//   final String table;
//   final String name;
//   final int type; // Should be one of java.sql.Types.
//   final String typeName;
//   final int size;
//   final int nullable; // Should be one of java.sql.DatabaseMetaData.columnNullable
// 
//   ColumnMetaData(String table, String name, int type, String typeName, int size, int nullable) {
//     this.table = table;
//     this.name = name;
//     this.type = type;
//     this.typeName = typeName;
//     this.size = size;
//     this.nullable = nullable;
//   }
// }


import liquibase.structure.core.Table;
import static com.google.common.truth.Truth.assertThat;
import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult;
import com.google.cloud.spanner.Statement;
import com.google.common.collect.ImmutableList;
import java.util.Set;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;
import liquibase.CatalogAndSchema;
import liquibase.Liquibase;
import liquibase.database.Database;
import liquibase.ext.spanner.JdbcMetadataQueries.ColumnMetaData;
import liquibase.snapshot.DatabaseSnapshot;
import liquibase.snapshot.SnapshotControl;
import liquibase.snapshot.SnapshotGeneratorFactory;
            JdbcMetadataQueries.createGetImportedKeysResultSet(ImmutableList.of())));
    mockSpanner.putStatementResult(
        StatementResult.query(
            Statement.newBuilder(JdbcMetadataQueries.GET_INDEX_INFO)
                .bind("p1")
                .to("") // Catalog
                .bind("p2")
                .to("") // Schema
                .bind("p3")
                .to("SINGERS") // Table
                .bind("p4")
                .to("%") // Index 
                .bind("p5")
                .to("%") // Unique
                .build(),
            JdbcMetadataQueries.createGetIndexInfoResultSet(ImmutableList.of())));
    mockSpanner.putStatementResult(
        StatementResult.query(
            Statement.newBuilder(JdbcMetadataQueries.GET_COLUMNS)
                .bind("p1")
                .to("") // Catalog
                .bind("p2")
                .to("") // Schema
                .bind("p3")
                .to("%") // Table
                .bind("p4")
                .to("%") // Column 
                .build(),
            JdbcMetadataQueries.createGetColumnsResultSet(
                ImmutableList.of(
// Path: src/test/java/liquibase/ext/spanner/JdbcMetadataQueries.java
// static class ColumnMetaData {
//   final String table;
//   final String name;
//   final int type; // Should be one of java.sql.Types.
//   final String typeName;
//   final int size;
//   final int nullable; // Should be one of java.sql.DatabaseMetaData.columnNullable
// 
//   ColumnMetaData(String table, String name, int type, String typeName, int size, int nullable) {
//     this.table = table;
//     this.name = name;
//     this.type = type;
//     this.typeName = typeName;
//     this.size = size;
//     this.nullable = nullable;
//   }
// }


// Path: src/test/java/liquibase/ext/spanner/GenerateSnapshotTest.java
import liquibase.structure.core.Table;
import static com.google.common.truth.Truth.assertThat;
import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult;
import com.google.cloud.spanner.Statement;
import com.google.common.collect.ImmutableList;
import java.util.Set;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;
import liquibase.CatalogAndSchema;
import liquibase.Liquibase;
import liquibase.database.Database;
import liquibase.ext.spanner.JdbcMetadataQueries.ColumnMetaData;
import liquibase.snapshot.DatabaseSnapshot;
import liquibase.snapshot.SnapshotControl;
import liquibase.snapshot.SnapshotGeneratorFactory;

            JdbcMetadataQueries.createGetImportedKeysResultSet(ImmutableList.of())));
    mockSpanner.putStatementResult(
        StatementResult.query(
            Statement.newBuilder(JdbcMetadataQueries.GET_INDEX_INFO)
                .bind("p1")
                .to("") // Catalog
                .bind("p2")
                .to("") // Schema
                .bind("p3")
                .to("SINGERS") // Table
                .bind("p4")
                .to("%") // Index 
                .bind("p5")
                .to("%") // Unique
                .build(),
            JdbcMetadataQueries.createGetIndexInfoResultSet(ImmutableList.of())));
    mockSpanner.putStatementResult(
        StatementResult.query(
            Statement.newBuilder(JdbcMetadataQueries.GET_COLUMNS)
                .bind("p1")
                .to("") // Catalog
                .bind("p2")
                .to("") // Schema
                .bind("p3")
                .to("%") // Table
                .bind("p4")
                .to("%") // Column 
                .build(),
            JdbcMetadataQueries.createGetColumnsResultSet(
                ImmutableList.of(
                  new ColumnMetaData("Singers", "SingerId", java.sql.Types.BIGINT, "INT64", 8, java.sql.DatabaseMetaData.columnNoNulls),