Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate config.yaml when running sql-server #8644

Merged
merged 32 commits into from
Jan 10, 2025
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
81e21a6
Generate config.yaml with current sql server config if one doesn't al…
milogreg Dec 5, 2024
0df8e9a
Fill default values in YAML config if they exist rather than leaving …
milogreg Dec 5, 2024
3b24a0c
Comment out null values in generated YAML config
milogreg Dec 5, 2024
1b407e0
Add bats tests for config file generation
milogreg Dec 9, 2024
5f4f2d1
Skip bats tests when SQL_ENGINE is set to remote-engine
milogreg Dec 9, 2024
698cc63
Merge main
milogreg Dec 9, 2024
27dcc30
Don't use removed persistence_behavior config option in tests
milogreg Dec 9, 2024
6f89115
Make default filler not use reflection
milogreg Dec 10, 2024
2654f84
Remove circular reference test
milogreg Dec 10, 2024
211a52e
Add test for commentNullYAMLValues
milogreg Dec 10, 2024
bc409a6
Remove CLI warning for when directory named config.yaml exists in dat…
milogreg Dec 10, 2024
b316473
Add additional doc comments for functions
milogreg Dec 10, 2024
bd4c410
Merge main
milogreg Dec 11, 2024
7627f6b
Merge main
milogreg Jan 6, 2025
290d0d2
Rework config file generation to only include fields explicitly set a…
milogreg Jan 6, 2025
96e2200
Make YAML formatting not treat list items in a top-level field as top…
milogreg Jan 6, 2025
6eb9959
Update minver_validation.txt
milogreg Jan 6, 2025
86446e6
Update config file gen bats test
milogreg Jan 6, 2025
7a3b62e
Add test to ensure YAMLConfig's String and VerboseString functions pr…
milogreg Jan 6, 2025
a3e3b11
Add test for commentYAMLDiffs
milogreg Jan 7, 2025
c70c87f
Merge branch 'main' into config-file-gen
milogreg Jan 7, 2025
3a2e999
Fix docs for generateYamlConfigIfNone
milogreg Jan 7, 2025
c72b061
Make logic for checking mysql connection string more consistent with …
milogreg Jan 7, 2025
70d5372
Add test to ensure that an expected YAML config is generated verbatim…
milogreg Jan 7, 2025
faf11c8
Remove golden mysql connection string from config file generation
milogreg Jan 8, 2025
538b011
Fix TestGenerateYamlConfig for windows
milogreg Jan 8, 2025
dad928c
Change comment on top of generated YAML config file
milogreg Jan 8, 2025
dcebf8c
Change YAML config placeholder values
milogreg Jan 8, 2025
54df51d
Reorder YAMLConfig struct to put MetricsConfig and ClusterConfig at t…
milogreg Jan 8, 2025
a0d9c0f
Update TestGenerateYamlConfig
milogreg Jan 8, 2025
f2c7416
Change the YAMLConfig fields MetricsConfig.Labels and Jwks to pointer…
milogreg Jan 8, 2025
00815e5
Remove redundant arg validation in generateYamlConfigIfNone
milogreg Jan 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/cd-release-pgo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ jobs:
run: |
latest=$(git rev-parse HEAD)
echo "commitish=$latest" >> $GITHUB_OUTPUT
GO_BUILD_VERSION=1.22 go/utils/publishrelease/buildpgobinaries.sh
GO_BUILD_VERSION=1.23.3 go/utils/publishrelease/buildpgobinaries.sh
env:
GO_BUILD_VERSION: "1.22"
GO_BUILD_VERSION: "1.23.3"
PROFILE: ${{ format('{0}/dolt-cpu-profile.pprof', github.workspace) }}
- name: Create Release
id: create_release
Expand Down
8 changes: 4 additions & 4 deletions go/cmd/dolt/commands/query_diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ func (q QueryDiff) ArgParser() *argparser.ArgParser {
func (q QueryDiff) compareRows(pkOrds []int, row1, row2 sql.Row) (int, bool) {
var cmp int
for _, pkOrd := range pkOrds {
pk1, _ := gmstypes.ConvertToString(row1[pkOrd], gmstypes.Text)
pk2, _ := gmstypes.ConvertToString(row2[pkOrd], gmstypes.Text)
pk1, _ := gmstypes.ConvertToString(row1[pkOrd], gmstypes.Text, nil)
pk2, _ := gmstypes.ConvertToString(row2[pkOrd], gmstypes.Text, nil)
if pk1 < pk2 {
cmp = -1
} else if pk1 > pk2 {
Expand All @@ -82,8 +82,8 @@ func (q QueryDiff) compareRows(pkOrds []int, row1, row2 sql.Row) (int, bool) {
}
var diff bool
for i := 0; i < len(row1); i++ {
a, _ := gmstypes.ConvertToString(row1[i], gmstypes.Text)
b, _ := gmstypes.ConvertToString(row2[i], gmstypes.Text)
a, _ := gmstypes.ConvertToString(row1[i], gmstypes.Text, nil)
b, _ := gmstypes.ConvertToString(row2[i], gmstypes.Text, nil)
if a != b {
diff = true
break
Expand Down
34 changes: 0 additions & 34 deletions go/cmd/dolt/commands/sqlserver/command_line_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,11 @@ type commandLineServerConfig struct {
autoCommit bool
doltTransactionCommit bool
maxConnections uint64
queryParallelism int
tlsKey string
tlsCert string
requireSecureTransport bool
maxLoggedQueryLen int
shouldEncodeLoggedQuery bool
persistenceBehavior string
privilegeFilePath string
branchControlFilePath string
allowCleartextPasswords bool
Expand All @@ -72,8 +70,6 @@ func DefaultCommandLineServerConfig() *commandLineServerConfig {
logLevel: servercfg.DefaultLogLevel,
autoCommit: servercfg.DefaultAutoCommit,
maxConnections: servercfg.DefaultMaxConnections,
queryParallelism: servercfg.DefaultQueryParallelism,
persistenceBehavior: servercfg.DefaultPersistenceBahavior,
dataDir: servercfg.DefaultDataDir,
cfgDir: filepath.Join(servercfg.DefaultDataDir, servercfg.DefaultCfgDir),
privilegeFilePath: filepath.Join(servercfg.DefaultDataDir, servercfg.DefaultCfgDir, servercfg.DefaultPrivilegeFilePath),
Expand Down Expand Up @@ -124,10 +120,6 @@ func NewCommandLineConfig(creds *cli.UserPassword, apr *argparser.ArgParseResult
config.WithRemotesapiReadOnly(&val)
}

if persistenceBehavior, ok := apr.GetValue(persistenceBehaviorFlag); ok {
config.withPersistenceBehavior(persistenceBehavior)
}

if timeoutStr, ok := apr.GetValue(timeoutFlag); ok {
timeout, err := strconv.ParseUint(timeoutStr, 10, 64)

Expand Down Expand Up @@ -156,10 +148,6 @@ func NewCommandLineConfig(creds *cli.UserPassword, apr *argparser.ArgParseResult
config.withDataDir(dataDir)
}

if queryParallelism, ok := apr.GetInt(queryParallelismFlag); ok {
config.withQueryParallelism(queryParallelism)
}

if maxConnections, ok := apr.GetInt(maxConnectionsFlag); ok {
config.withMaxConnections(uint64(maxConnections))
}
Expand Down Expand Up @@ -236,16 +224,6 @@ func (cfg *commandLineServerConfig) MaxConnections() uint64 {
return cfg.maxConnections
}

// QueryParallelism returns the parallelism that should be used by the go-mysql-server analyzer
func (cfg *commandLineServerConfig) QueryParallelism() int {
return cfg.queryParallelism
}

// PersistenceBehavior returns whether to autoload persisted server configuration
func (cfg *commandLineServerConfig) PersistenceBehavior() string {
return cfg.persistenceBehavior
}

// TLSKey returns a path to the servers PEM-encoded private TLS key. "" if there is none.
func (cfg *commandLineServerConfig) TLSKey() string {
return cfg.tlsKey
Expand Down Expand Up @@ -402,12 +380,6 @@ func (cfg *commandLineServerConfig) withMaxConnections(maxConnections uint64) *c
return cfg
}

// withQueryParallelism updates the query parallelism and returns the called `*commandLineServerConfig`, which is useful for chaining calls.
func (cfg *commandLineServerConfig) withQueryParallelism(queryParallelism int) *commandLineServerConfig {
cfg.queryParallelism = queryParallelism
return cfg
}

// withDataDir updates the path to a directory to use as the data dir.
func (cfg *commandLineServerConfig) withDataDir(dataDir string) *commandLineServerConfig {
cfg.dataDir = dataDir
Expand All @@ -420,12 +392,6 @@ func (cfg *commandLineServerConfig) withCfgDir(cfgDir string) *commandLineServer
return cfg
}

// withPersistenceBehavior updates persistence behavior of system globals on server init
func (cfg *commandLineServerConfig) withPersistenceBehavior(persistenceBehavior string) *commandLineServerConfig {
cfg.persistenceBehavior = persistenceBehavior
return cfg
}

// withPrivilegeFilePath updates the path to the file which contains all needed privilege information in the form of a JSON string
func (cfg *commandLineServerConfig) withPrivilegeFilePath(privFilePath string) *commandLineServerConfig {
cfg.privilegeFilePath = privFilePath
Expand Down
15 changes: 3 additions & 12 deletions go/cmd/dolt/commands/sqlserver/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -956,18 +956,9 @@ func getConfigFromServerConfig(serverConfig servercfg.ServerConfig) (server.Conf
return server.Config{}, err
}

// if persist is 'load' we use currently set persisted global variable,
// else if 'ignore' we set persisted global variable to current value from serverConfig
if serverConfig.PersistenceBehavior() == servercfg.LoadPerisistentGlobals {
serverConf, err = serverConf.NewConfig()
if err != nil {
return server.Config{}, err
}
} else {
err = sql.SystemVariables.SetGlobal("max_connections", serverConfig.MaxConnections())
if err != nil {
return server.Config{}, err
}
serverConf, err = serverConf.NewConfig()
if err != nil {
return server.Config{}, err
}

// Do not set the value of Version. Let it default to what go-mysql-server uses. This should be equivalent
Expand Down
57 changes: 55 additions & 2 deletions go/cmd/dolt/commands/sqlserver/sqlserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package sqlserver
import (
"context"
"fmt"
"os"
"path/filepath"
"strings"

Expand Down Expand Up @@ -44,7 +45,6 @@ const (
configFileFlag = "config"
queryParallelismFlag = "query-parallelism"
maxConnectionsFlag = "max-connections"
persistenceBehaviorFlag = "persistence-behavior"
allowCleartextPasswordsFlag = "allow-cleartext-passwords"
socketFlag = "socket"
remotesapiPortFlag = "remotesapi-port"
Expand Down Expand Up @@ -172,7 +172,6 @@ func (cmd SqlServerCmd) ArgParserWithName(name string) *argparser.ArgParser {
ap.SupportsFlag(noAutoCommitFlag, "", "Set @@autocommit = off for the server.")
ap.SupportsInt(queryParallelismFlag, "", "num-go-routines", "Deprecated, no effect in current versions of Dolt")
ap.SupportsInt(maxConnectionsFlag, "", "max-connections", fmt.Sprintf("Set the number of connections handled by the server. Defaults to `%d`.", serverConfig.MaxConnections()))
ap.SupportsString(persistenceBehaviorFlag, "", "persistence-behavior", fmt.Sprintf("Indicate whether to `load` or `ignore` persisted global variables. Defaults to `%s`.", serverConfig.PersistenceBehavior()))
ap.SupportsString(commands.PrivsFilePathFlag, "", "privilege file", "Path to a file to load and store users and grants. Defaults to `$doltcfg-dir/privileges.db`. Will be created as needed.")
ap.SupportsString(commands.BranchCtrlPathFlag, "", "branch control file", "Path to a file to load and store branch control permissions. Defaults to `$doltcfg-dir/branch_control.db`. Will be created as needed.")
ap.SupportsString(allowCleartextPasswordsFlag, "", "allow-cleartext-passwords", "Allows use of cleartext passwords. Defaults to false.")
Expand Down Expand Up @@ -245,6 +244,11 @@ func StartServer(ctx context.Context, versionStr, commandStr string, args []stri
return err
}

err = generateYamlConfigIfNone(ap, help, args, dEnv, serverConfig)
zachmu marked this conversation as resolved.
Show resolved Hide resolved
if err != nil {
return err
}

err = servercfg.ApplySystemVariables(serverConfig, sql.SystemVariables)
if err != nil {
return err
Expand Down Expand Up @@ -432,3 +436,52 @@ func setupDoltConfig(dEnv *env.DoltEnv, apr *argparser.ArgParseResults, config s

return nil
}

// generateYamlConfigIfNone creates a YAML config file in the database directory if one is not specified in the args
// and one doesn't already exist in the database directory. The fields of the generated YAML config file are set
// using serverConfig if serverConfig specifies a value for the field, otherwise the field is set to a default value
// or is replaced with a commented-out placeholder.
func generateYamlConfigIfNone(
zachmu marked this conversation as resolved.
Show resolved Hide resolved
ap *argparser.ArgParser,
help cli.UsagePrinter,
args []string,
dEnv *env.DoltEnv,
serverConfig servercfg.ServerConfig) error {
const yamlConfigName = "config.yaml"

specifiesConfigFile, err := argsSpecifyServerConfigFile(ap, help, args)
if err != nil {
return err
}

if specifiesConfigFile {
return nil
}

path := filepath.Join(serverConfig.DataDir(), yamlConfigName)
exists, _ := dEnv.FS.Exists(path)
if exists {
return nil
}

yamlConfig := servercfg.ServerConfigAsYAMLConfig(serverConfig)
err = dEnv.FS.WriteFile(path, []byte(yamlConfig.VerboseString()), os.ModePerm)
if err != nil {
return err
}

return nil
}

// argsSpecifyServerConfigFile returns true if the args specify a config file, false otherwise.
func argsSpecifyServerConfigFile(ap *argparser.ArgParser, help cli.UsagePrinter, args []string) (bool, error) {
apr := cli.ParseArgsOrDie(ap, args, help)
if err := validateSqlServerArgs(apr); err != nil {
cli.PrintErrln(color.RedString(err.Error()))
return false, err
}

_, hasConfigFlag := apr.GetValue(configFileFlag)

return hasConfigFlag, nil
}
2 changes: 1 addition & 1 deletion go/cmd/dolt/doltversion/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@
package doltversion

const (
Version = "1.43.20"
Version = "1.44.2"
)
6 changes: 3 additions & 3 deletions go/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ require (
github.com/dolthub/fslock v0.0.3
github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81
github.com/dolthub/vitess v0.0.0-20241126223332-cd8f828f26ac
github.com/dolthub/vitess v0.0.0-20241211024425-b00987f7ba54
github.com/dustin/go-humanize v1.0.1
github.com/fatih/color v1.13.0
github.com/flynn-archive/go-shlex v0.0.0-20150515145356-3f9db97f8568
Expand Down Expand Up @@ -57,7 +57,7 @@ require (
github.com/cespare/xxhash/v2 v2.2.0
github.com/creasty/defaults v1.6.0
github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2
github.com/dolthub/go-mysql-server v0.18.2-0.20241203001635-29d50967b518
github.com/dolthub/go-mysql-server v0.18.2-0.20241211025720-09a7e80b835c
github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63
github.com/dolthub/swiss v0.1.0
github.com/goccy/go-json v0.10.2
Expand Down Expand Up @@ -170,4 +170,4 @@ require (

replace github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi => ./gen/proto/dolt/services/eventsapi

go 1.22.2
go 1.23.3
8 changes: 4 additions & 4 deletions go/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,8 @@ github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U=
github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0=
github.com/dolthub/go-icu-regex v0.0.0-20240916130659-0118adc6b662 h1:aC17hZD6iwzBwwfO5M+3oBT5E5gGRiQPdn+vzpDXqIA=
github.com/dolthub/go-icu-regex v0.0.0-20240916130659-0118adc6b662/go.mod h1:KPUcpx070QOfJK1gNe0zx4pA5sicIK1GMikIGLKC168=
github.com/dolthub/go-mysql-server v0.18.2-0.20241203001635-29d50967b518 h1:aqDEdL6NI1A2RBEoVr+d41yGLiH6ww1YhIsoO1ydV70=
github.com/dolthub/go-mysql-server v0.18.2-0.20241203001635-29d50967b518/go.mod h1:QdaXQKE8XFwM4P1yN14m2eydx4V2xyuqpQp4tmNoXzQ=
github.com/dolthub/go-mysql-server v0.18.2-0.20241211025720-09a7e80b835c h1:U5IPpq8pPDELi2SCj/SjTXGvBWVpYJ26Q7O7oC5NQd4=
github.com/dolthub/go-mysql-server v0.18.2-0.20241211025720-09a7e80b835c/go.mod h1:QedjnglQ9+7yeRz4jAseFVZZgTxIZhEdt9G4RGqv4Jc=
github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI=
github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q=
github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE=
Expand All @@ -197,8 +197,8 @@ github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81 h1:7/v8q9X
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81/go.mod h1:siLfyv2c92W1eN/R4QqG/+RjjX5W2+gCTRjZxBjI3TY=
github.com/dolthub/swiss v0.1.0 h1:EaGQct3AqeP/MjASHLiH6i4TAmgbG/c4rA6a1bzCOPc=
github.com/dolthub/swiss v0.1.0/go.mod h1:BeucyB08Vb1G9tumVN3Vp/pyY4AMUnr9p7Rz7wJ7kAQ=
github.com/dolthub/vitess v0.0.0-20241126223332-cd8f828f26ac h1:A0U/OdIqdCkAV0by7MVBbnSyZBsa94ZjIZxx7PhjBW4=
github.com/dolthub/vitess v0.0.0-20241126223332-cd8f828f26ac/go.mod h1:alcJgfdyIhFaAiYyEmuDCFSLCzedz3KCaIclLoCUtJg=
github.com/dolthub/vitess v0.0.0-20241211024425-b00987f7ba54 h1:nzBnC0Rt1gFtscJEz4veYd/mazZEdbdmed+tujdaKOo=
github.com/dolthub/vitess v0.0.0-20241211024425-b00987f7ba54/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70=
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
Expand Down
4 changes: 2 additions & 2 deletions go/go.work
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
go 1.22.5
go 1.23.3

toolchain go1.22.7
toolchain go1.23.3

use (
.
Expand Down
16 changes: 12 additions & 4 deletions go/libraries/doltcore/branch_control/branch_control.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
goerrors "errors"
"fmt"
"os"
"strings"
"sync/atomic"

flatbuffers "github.com/dolthub/flatbuffers/v23/go"
Expand Down Expand Up @@ -243,7 +244,7 @@ func CheckAccess(ctx context.Context, flags Permissions) error {

user := branchAwareSession.GetUser()
host := branchAwareSession.GetHost()
database := branchAwareSession.GetCurrentDatabase()
database := getDatabaseNameOnly(branchAwareSession.GetCurrentDatabase())
branch, err := branchAwareSession.GetBranch()
if err != nil {
return err
Expand Down Expand Up @@ -277,7 +278,7 @@ func CanCreateBranch(ctx context.Context, branchName string) error {

user := branchAwareSession.GetUser()
host := branchAwareSession.GetHost()
database := branchAwareSession.GetCurrentDatabase()
database := getDatabaseNameOnly(branchAwareSession.GetCurrentDatabase())
if controller.Namespace.CanCreate(database, branchName, user, host) {
return nil
}
Expand All @@ -304,7 +305,7 @@ func CanDeleteBranch(ctx context.Context, branchName string) error {

user := branchAwareSession.GetUser()
host := branchAwareSession.GetHost()
database := branchAwareSession.GetCurrentDatabase()
database := getDatabaseNameOnly(branchAwareSession.GetCurrentDatabase())
// Get the permissions for the branch, user, and host combination
_, perms := controller.Access.Match(database, branchName, user, host)
// If the user has the write or admin flags, then we allow access
Expand All @@ -329,7 +330,7 @@ func AddAdminForContext(ctx context.Context, branchName string) error {

user := branchAwareSession.GetUser()
host := branchAwareSession.GetHost()
database := branchAwareSession.GetCurrentDatabase()
database := getDatabaseNameOnly(branchAwareSession.GetCurrentDatabase())
// Check if we already have admin permissions for the given branch, as there's no need to do another insertion if so
controller.Access.RWMutex.RLock()
_, modPerms := controller.Access.Match(database, branchName, user, host)
Expand Down Expand Up @@ -381,3 +382,10 @@ func HasDatabasePrivileges(ctx Context, database string) bool {
sql.PrivilegeType_Insert, sql.PrivilegeType_Update, sql.PrivilegeType_Delete, sql.PrivilegeType_Execute, sql.PrivilegeType_GrantOption)
return hasSuper || isGlobalAdmin || isDatabaseAdmin
}

// getDatabaseNameOnly gets the database name only, which is useful for when the database name includes a revision.
// This is a direct reimplementation of the logic in dsess.SplitRevisionDbName, however we cannot use that function due
// to import cycles.
func getDatabaseNameOnly(dbName string) string {
return strings.SplitN(dbName, "/", 2)[0]
}
3 changes: 0 additions & 3 deletions go/libraries/doltcore/diff/table_deltas.go
Original file line number Diff line number Diff line change
Expand Up @@ -520,9 +520,6 @@ func (td TableDelta) HasPrimaryKeySetChanged() bool {
}

func (td TableDelta) HasChanges() (bool, error) {
fromString := td.FromTable.DebugString(context.Background(), td.FromTable.NodeStore())
toString := td.ToTable.DebugString(context.Background(), td.ToTable.NodeStore())
_, _ = fromString, toString
hashChanged, err := td.HasHashChanged()
if err != nil {
return false, err
Expand Down
Loading
Loading