diff --git a/perf/go/alerts/sqlalertstore/sqlalertstore.go b/perf/go/alerts/sqlalertstore/sqlalertstore.go
index 6b96941..56e8919 100644
--- a/perf/go/alerts/sqlalertstore/sqlalertstore.go
+++ b/perf/go/alerts/sqlalertstore/sqlalertstore.go
@@ -12,7 +12,6 @@
 	"github.com/jackc/pgx/v4/pgxpool"
 	"go.skia.org/infra/go/skerr"
 	"go.skia.org/infra/perf/go/alerts"
-	perfsql "go.skia.org/infra/perf/go/sql"
 )
 
 // statement is an SQL statement identifier.
@@ -76,7 +75,7 @@
 //
 // We presume all migrations have been run against db before this function is
 // called.
-func New(db *pgxpool.Pool, dialect perfsql.Dialect) (*SQLAlertStore, error) {
+func New(db *pgxpool.Pool) (*SQLAlertStore, error) {
 
 	return &SQLAlertStore{
 		db: db,
diff --git a/perf/go/alerts/sqlalertstore/sqlalertstore_test.go b/perf/go/alerts/sqlalertstore/sqlalertstore_test.go
index 5a02b3a..452d602 100644
--- a/perf/go/alerts/sqlalertstore/sqlalertstore_test.go
+++ b/perf/go/alerts/sqlalertstore/sqlalertstore_test.go
@@ -6,7 +6,6 @@
 	"github.com/stretchr/testify/require"
 	"go.skia.org/infra/go/testutils/unittest"
 	"go.skia.org/infra/perf/go/alerts/alertstest"
-	perfsql "go.skia.org/infra/perf/go/sql"
 	"go.skia.org/infra/perf/go/sql/sqltest"
 )
 
@@ -20,7 +19,7 @@
 			// actual errors.
 			defer cleanup()
 
-			store, err := New(db, perfsql.CockroachDBDialect)
+			store, err := New(db)
 			require.NoError(t, err)
 			subTest(t, store)
 		})
diff --git a/perf/go/builders/builders.go b/perf/go/builders/builders.go
index bb2c5fc..30d538a 100644
--- a/perf/go/builders/builders.go
+++ b/perf/go/builders/builders.go
@@ -32,7 +32,6 @@
 	"go.skia.org/infra/perf/go/shortcut"
 	"go.skia.org/infra/perf/go/shortcut/dsshortcutstore"
 	"go.skia.org/infra/perf/go/shortcut/sqlshortcutstore"
-	perfsql "go.skia.org/infra/perf/go/sql"
 	"go.skia.org/infra/perf/go/sql/migrations"
 	"go.skia.org/infra/perf/go/sql/migrations/cockroachdb"
 	"go.skia.org/infra/perf/go/tracestore"
@@ -81,8 +80,6 @@
 		return nil, skerr.Fmt("A connection_string must always be supplied.")
 	}
 
-	// First figure out what dialect we should use.
-	var dialect perfsql.Dialect
 	switch instanceConfig.DataStoreConfig.DataStoreType {
 	case config.GCPDataStoreType:
 		if strings.HasPrefix(instanceConfig.DataStoreConfig.ConnectionString, "postgresql://") {
@@ -90,23 +87,20 @@
 			// CockroachDB. The first small step in that migration is to host the
 			// perfgit Commits table on CockroachDB, which has no analog in the
 			// "gcs" world.
-			dialect = perfsql.CockroachDBDialect
 		} else {
-			return nil, skerr.Fmt("unknown connection_string: Must begni with postgresql://.")
+			return nil, skerr.Fmt("unknown connection_string: Must begin with postgresql://.")
 		}
 	case config.CockroachDBDataStoreType:
-		dialect = perfsql.CockroachDBDialect
 	default:
 		return nil, skerr.Fmt("Unknown datastore_type: %q", instanceConfig.DataStoreConfig.DataStoreType)
 	}
-	sklog.Infof("Constructing perfgit with dialect: %q and connection_string: %q", dialect, instanceConfig.DataStoreConfig.ConnectionString)
 
 	// Now create the appropriate db.
 	db, err := newCockroachDBFromConfig(ctx, instanceConfig)
 	if err != nil {
 		return nil, skerr.Wrap(err)
 	}
-	g, err := perfgit.New(ctx, local, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, local, db, instanceConfig)
 	if err != nil {
 		return nil, skerr.Wrap(err)
 	}
@@ -171,7 +165,7 @@
 		if err != nil {
 			return nil, skerr.Wrap(err)
 		}
-		return sqlalertstore.New(db, perfsql.CockroachDBDialect)
+		return sqlalertstore.New(db)
 	}
 	return nil, skerr.Fmt("Unknown datastore type: %q", instanceConfig.DataStoreConfig.DataStoreType)
 }
@@ -220,7 +214,7 @@
 		if err != nil {
 			return nil, skerr.Wrap(err)
 		}
-		return sqlshortcutstore.New(db, perfsql.CockroachDBDialect)
+		return sqlshortcutstore.New(db)
 	}
 	return nil, skerr.Fmt("Unknown datastore type: %q", instanceConfig.DataStoreConfig.DataStoreType)
 }
diff --git a/perf/go/builders/builders_test.go b/perf/go/builders/builders_test.go
index f718f7d..38732ee 100644
--- a/perf/go/builders/builders_test.go
+++ b/perf/go/builders/builders_test.go
@@ -220,7 +220,7 @@
 
 func TestNewPerfGitFromConfig_ErrIfConnectionStringNotSet(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, _, _, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, _, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
 
 	instanceConfig.DataStoreConfig.DataStoreType = config.GCPDataStoreType
@@ -232,7 +232,7 @@
 
 func TestNewPerfGitFromConfig_GCP_ErrorsOnNonPostgresConnectionString(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, _, _, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, _, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
 
 	instanceConfig.DataStoreConfig.DataStoreType = config.GCPDataStoreType
@@ -252,7 +252,7 @@
 
 func TestNewPerfGitFromConfig_GCP_SuccessIfConnectionStringIsCockroachDB(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, _, _, hashes, _, instanceConfig, dbName, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, _, _, hashes, instanceConfig, dbName, cleanup := gittest.NewForTest(t)
 	defer cleanup()
 
 	instanceConfig.DataStoreConfig.DataStoreType = config.GCPDataStoreType
@@ -268,7 +268,7 @@
 
 func TestNewPerfGitFromConfig_CockroachDB_Success(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, _, _, hashes, _, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, _, _, hashes, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
 
 	instanceConfig.DataStoreConfig.DataStoreType = config.CockroachDBDataStoreType
diff --git a/perf/go/cid/cid_test.go b/perf/go/cid/cid_test.go
index 4ed62a1..be444f3 100644
--- a/perf/go/cid/cid_test.go
+++ b/perf/go/cid/cid_test.go
@@ -9,7 +9,6 @@
 	"go.skia.org/infra/perf/go/config"
 	perfgit "go.skia.org/infra/perf/go/git"
 	"go.skia.org/infra/perf/go/git/gittest"
-	perfsql "go.skia.org/infra/perf/go/sql"
 )
 
 func TestCommitID(t *testing.T) {
@@ -121,9 +120,9 @@
 
 func TestCommitIDLookup_Success(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, db, _, hashes, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, hashes, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 	config.Config = instanceConfig
 	commitIdLookup := New(ctx, g, instanceConfig)
@@ -161,9 +160,9 @@
 
 func TestCommitIDLookup_ErrOnBadCommit(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, db, _, _, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 	commitIdLookup := New(ctx, g, instanceConfig)
 
diff --git a/perf/go/dataframe/async_test.go b/perf/go/dataframe/async_test.go
index 87aff52..93a6126 100644
--- a/perf/go/dataframe/async_test.go
+++ b/perf/go/dataframe/async_test.go
@@ -10,7 +10,6 @@
 	"go.skia.org/infra/perf/go/config"
 	perfgit "go.skia.org/infra/perf/go/git"
 	"go.skia.org/infra/perf/go/git/gittest"
-	perfsql "go.skia.org/infra/perf/go/sql"
 	"go.skia.org/infra/perf/go/types"
 )
 
@@ -148,9 +147,9 @@
 
 func TestGetSkps_Success(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, db, _, _, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 
 	instanceConfig.GitRepoConfig.FileChangeMarker = "bar.txt"
@@ -170,9 +169,9 @@
 
 func TestGetSkps_SuccessIfFileChangeMarkerNotSet(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, db, _, _, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 
 	instanceConfig.GitRepoConfig.FileChangeMarker = ""
@@ -192,9 +191,9 @@
 
 func TestGetSkps_ErrOnBadCommitNumber(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, db, _, _, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 
 	instanceConfig.GitRepoConfig.FileChangeMarker = "bar.txt"
diff --git a/perf/go/dataframe/dataframe_test.go b/perf/go/dataframe/dataframe_test.go
index 0b63e13..dc12548 100644
--- a/perf/go/dataframe/dataframe_test.go
+++ b/perf/go/dataframe/dataframe_test.go
@@ -10,7 +10,6 @@
 	"go.skia.org/infra/go/testutils/unittest"
 	perfgit "go.skia.org/infra/perf/go/git"
 	"go.skia.org/infra/perf/go/git/gittest"
-	perfsql "go.skia.org/infra/perf/go/sql"
 	"go.skia.org/infra/perf/go/types"
 )
 
@@ -134,9 +133,9 @@
 
 func TestFromTimeRange_Success(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, db, _, _, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 
 	columnHeaders, commitNumbers, _, err := FromTimeRange(ctx, g, gittest.StartTime, gittest.StartTime.Add(2*time.Minute), false)
@@ -156,9 +155,9 @@
 
 func TestFromTimeRange_EmptySlicesIfNothingInTimeRange(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, db, _, _, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 
 	// Query outside the time of any commit.
diff --git a/perf/go/dfbuilder/dfbuilder_test.go b/perf/go/dfbuilder/dfbuilder_test.go
index 64aa91d..839fae9 100644
--- a/perf/go/dfbuilder/dfbuilder_test.go
+++ b/perf/go/dfbuilder/dfbuilder_test.go
@@ -17,7 +17,6 @@
 	"go.skia.org/infra/perf/go/dataframe"
 	perfgit "go.skia.org/infra/perf/go/git"
 	"go.skia.org/infra/perf/go/git/gittest"
-	perfsql "go.skia.org/infra/perf/go/sql"
 	"go.skia.org/infra/perf/go/sql/sqltest"
 	"go.skia.org/infra/perf/go/tracestore"
 	"go.skia.org/infra/perf/go/tracestore/sqltracestore"
@@ -76,9 +75,9 @@
 	unittest.LargeTest(t)
 	ctx := context.Background()
 
-	ctx, db, _, _, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 
 	instanceConfig.DataStoreConfig.TileSize = 6
@@ -207,9 +206,9 @@
 
 func TestFromIndexRange_Success(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, db, _, _, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 
 	columnHeaders, commitNumbers, _, err := fromIndexRange(ctx, g, types.CommitNumber(0), types.CommitNumber(2))
@@ -233,9 +232,9 @@
 
 func TestFromIndexRange_EmptySliceOnBadCommitNumber(t *testing.T) {
 	unittest.LargeTest(t)
-	ctx, db, _, _, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, _, instanceConfig, _, cleanup := gittest.NewForTest(t)
 	defer cleanup()
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 
 	columnHeaders, commitNumbers, _, err := fromIndexRange(ctx, g, types.BadCommitNumber, types.BadCommitNumber)
diff --git a/perf/go/git/git.go b/perf/go/git/git.go
index 6c3767d..942535b 100644
--- a/perf/go/git/git.go
+++ b/perf/go/git/git.go
@@ -24,7 +24,6 @@
 	"go.skia.org/infra/go/skerr"
 	"go.skia.org/infra/go/sklog"
 	"go.skia.org/infra/perf/go/config"
-	perfsql "go.skia.org/infra/perf/go/sql"
 	"go.skia.org/infra/perf/go/types"
 )
 
@@ -160,7 +159,7 @@
 //
 // The instance created does not poll by default, callers need to call
 // StartBackgroundPolling().
-func New(ctx context.Context, local bool, db *pgxpool.Pool, dialect perfsql.Dialect, instanceConfig *config.InstanceConfig) (*Git, error) {
+func New(ctx context.Context, local bool, db *pgxpool.Pool, instanceConfig *config.InstanceConfig) (*Git, error) {
 	// Do git authentication if required.
 	if instanceConfig.GitRepoConfig.GitAuthType == config.GitAuthGerrit {
 		sklog.Info("Authenticating to Gerrit.")
diff --git a/perf/go/git/git_test.go b/perf/go/git/git_test.go
index cdf2693..3eb06a3 100644
--- a/perf/go/git/git_test.go
+++ b/perf/go/git/git_test.go
@@ -15,7 +15,6 @@
 	"go.skia.org/infra/go/git/testutils"
 	"go.skia.org/infra/go/testutils/unittest"
 	"go.skia.org/infra/perf/go/git/gittest"
-	perfsql "go.skia.org/infra/perf/go/sql"
 	"go.skia.org/infra/perf/go/types"
 )
 
@@ -24,8 +23,8 @@
 
 	for name, subTest := range subTests {
 		t.Run(name, func(t *testing.T) {
-			ctx, db, gb, hashes, dialect, instanceConfig, _, cleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
-			g, err := New(ctx, true, db, dialect, instanceConfig)
+			ctx, db, gb, hashes, instanceConfig, _, cleanup := gittest.NewForTest(t)
+			g, err := New(ctx, true, db, instanceConfig)
 			require.NoError(t, err)
 
 			subTest(t, ctx, g, gb, hashes, cleanup)
diff --git a/perf/go/git/gittest/gittest.go b/perf/go/git/gittest/gittest.go
index 57a652f..3e27737 100644
--- a/perf/go/git/gittest/gittest.go
+++ b/perf/go/git/gittest/gittest.go
@@ -16,7 +16,6 @@
 	"github.com/stretchr/testify/require"
 	"go.skia.org/infra/go/git/testutils"
 	"go.skia.org/infra/perf/go/config"
-	perfsql "go.skia.org/infra/perf/go/sql"
 	"go.skia.org/infra/perf/go/sql/sqltest"
 )
 
@@ -39,7 +38,7 @@
 // The repo is populated with 8 commits, one minute apart, starting at StartTime.
 //
 // The hashes for each commit are going to be random and so are returned also.
-func NewForTest(t *testing.T, dialect perfsql.Dialect) (context.Context, *pgxpool.Pool, *testutils.GitBuilder, []string, perfsql.Dialect, *config.InstanceConfig, string, CleanupFunc) {
+func NewForTest(t *testing.T) (context.Context, *pgxpool.Pool, *testutils.GitBuilder, []string, *config.InstanceConfig, string, CleanupFunc) {
 	ctx, cancel := context.WithCancel(context.Background())
 
 	// Create a git repo for testing purposes.
@@ -77,5 +76,5 @@
 			Dir: filepath.Join(tmpDir, "checkout"),
 		},
 	}
-	return ctx, db, gb, hashes, dialect, instanceConfig, dbName, clean
+	return ctx, db, gb, hashes, instanceConfig, dbName, clean
 }
diff --git a/perf/go/regression/dfiter_test.go b/perf/go/regression/dfiter_test.go
index 4802152..a4ca774 100644
--- a/perf/go/regression/dfiter_test.go
+++ b/perf/go/regression/dfiter_test.go
@@ -16,7 +16,6 @@
 	"go.skia.org/infra/perf/go/dfbuilder"
 	perfgit "go.skia.org/infra/perf/go/git"
 	"go.skia.org/infra/perf/go/git/gittest"
-	perfsql "go.skia.org/infra/perf/go/sql"
 	"go.skia.org/infra/perf/go/sql/sqltest"
 	"go.skia.org/infra/perf/go/tracestore"
 	"go.skia.org/infra/perf/go/tracestore/sqltracestore"
@@ -79,9 +78,9 @@
 	}, "gs://foo.json", time.Now()) // Time is irrelevent.
 	assert.NoError(t, err)
 
-	ctx, db, _, _, dialect, instanceConfig, _, gitCleanup := gittest.NewForTest(t, perfsql.CockroachDBDialect)
+	ctx, db, _, _, instanceConfig, _, gitCleanup := gittest.NewForTest(t)
 	instanceConfig.DataStoreConfig.TileSize = testTileSize
-	g, err := perfgit.New(ctx, true, db, dialect, instanceConfig)
+	g, err := perfgit.New(ctx, true, db, instanceConfig)
 	require.NoError(t, err)
 	dfb := dfbuilder.NewDataFrameBuilderFromTraceStore(g, store)
 	cleanup := func() {
diff --git a/perf/go/shortcut/sqlshortcutstore/sqlshortcutstore.go b/perf/go/shortcut/sqlshortcutstore/sqlshortcutstore.go
index 7b536a3..0dd4802 100644
--- a/perf/go/shortcut/sqlshortcutstore/sqlshortcutstore.go
+++ b/perf/go/shortcut/sqlshortcutstore/sqlshortcutstore.go
@@ -13,7 +13,6 @@
 	"go.skia.org/infra/go/skerr"
 	"go.skia.org/infra/go/sklog"
 	"go.skia.org/infra/perf/go/shortcut"
-	perfsql "go.skia.org/infra/perf/go/sql"
 )
 
 // statement is an SQL statement identifier.
@@ -61,7 +60,7 @@
 //
 // We presume all migrations have been run against db before this function is
 // called.
-func New(db *pgxpool.Pool, dialect perfsql.Dialect) (*SQLShortcutStore, error) {
+func New(db *pgxpool.Pool) (*SQLShortcutStore, error) {
 	return &SQLShortcutStore{
 		db: db,
 	}, nil
diff --git a/perf/go/shortcut/sqlshortcutstore/sqlshortcutstore_test.go b/perf/go/shortcut/sqlshortcutstore/sqlshortcutstore_test.go
index 92956e3..8130be6 100644
--- a/perf/go/shortcut/sqlshortcutstore/sqlshortcutstore_test.go
+++ b/perf/go/shortcut/sqlshortcutstore/sqlshortcutstore_test.go
@@ -6,7 +6,6 @@
 	"github.com/stretchr/testify/require"
 	"go.skia.org/infra/go/testutils/unittest"
 	"go.skia.org/infra/perf/go/shortcut/shortcuttest"
-	perfsql "go.skia.org/infra/perf/go/sql"
 	"go.skia.org/infra/perf/go/sql/sqltest"
 )
 
@@ -17,7 +16,7 @@
 		t.Run(name, func(t *testing.T) {
 			db, cleanup := sqltest.NewCockroachDBForTests(t, "shortcutstore", sqltest.ApplyMigrations)
 			defer cleanup()
-			store, err := New(db, perfsql.CockroachDBDialect)
+			store, err := New(db)
 			require.NoError(t, err)
 			subTest(t, store)
 		})
diff --git a/perf/go/sql/sql.go b/perf/go/sql/sql.go
index 61ffeb0..c973a4d 100644
--- a/perf/go/sql/sql.go
+++ b/perf/go/sql/sql.go
@@ -2,16 +2,6 @@
 
 import "os"
 
-// Dialect is a type for the dialect of SQL that can be used. Make sure that the
-// names of each dialect match the name of their corresponding sub-directory of
-// /infra/perf/migrations.
-type Dialect string
-
-const (
-	// CockroachDBDialect covers CockroachDB.
-	CockroachDBDialect Dialect = "cockroachdb"
-)
-
 // cockroachDBEmulatorHostEnvVar is the name of the environment variable
 // that points to a test instance of CockroachDB.
 const cockroachDBEmulatorHostEnvVar = "COCKROACHDB_EMULATOR_HOST"
