diff --git a/pkg/sdk/application_packages_def.go b/pkg/sdk/application_packages_def.go index ca64a270b5..8f6bdbce65 100644 --- a/pkg/sdk/application_packages_def.go +++ b/pkg/sdk/application_packages_def.go @@ -48,7 +48,7 @@ var applicationPackageUnset = g.NewQueryStruct("ApplicationPackageUnset"). OptionalSQL("DEFAULT_DDL_COLLATION"). OptionalSQL("COMMENT"). OptionalSQL("DISTRIBUTION"). - WithValidation(g.ExactlyOneValueSet, "DataRetentionTimeInDays", "MaxDataExtensionTimeInDays", "DefaultDdlCollation", "Comment", "Distribution") + WithValidation(g.AtLeastOneValueSet, "DataRetentionTimeInDays", "MaxDataExtensionTimeInDays", "DefaultDdlCollation", "Comment", "Distribution") var ApplicationPackagesDef = g.NewInterface( "ApplicationPackages", @@ -83,7 +83,7 @@ var ApplicationPackagesDef = g.NewInterface( OptionalQueryStructField( "Unset", applicationPackageUnset, - g.KeywordOptions().SQL("UNSET"), + g.ListOptions().NoParentheses().SQL("UNSET"), ). OptionalQueryStructField( "ModifyReleaseDirective", diff --git a/pkg/sdk/application_packages_gen.go b/pkg/sdk/application_packages_gen.go index e660bdafcc..a7c730d9e2 100644 --- a/pkg/sdk/application_packages_gen.go +++ b/pkg/sdk/application_packages_gen.go @@ -34,7 +34,7 @@ type AlterApplicationPackageOptions struct { IfExists *bool `ddl:"keyword" sql:"IF EXISTS"` name AccountObjectIdentifier `ddl:"identifier"` Set *ApplicationPackageSet `ddl:"keyword" sql:"SET"` - Unset *ApplicationPackageUnset `ddl:"keyword" sql:"UNSET"` + Unset *ApplicationPackageUnset `ddl:"list,no_parentheses" sql:"UNSET"` ModifyReleaseDirective *ModifyReleaseDirective `ddl:"keyword" sql:"MODIFY RELEASE DIRECTIVE"` SetDefaultReleaseDirective *SetDefaultReleaseDirective `ddl:"keyword" sql:"SET DEFAULT RELEASE DIRECTIVE"` SetReleaseDirective *SetReleaseDirective `ddl:"keyword" sql:"SET RELEASE DIRECTIVE"` diff --git a/pkg/sdk/application_packages_gen_test.go b/pkg/sdk/application_packages_gen_test.go index 0bfc3204fc..339846bc84 100644 --- a/pkg/sdk/application_packages_gen_test.go +++ b/pkg/sdk/application_packages_gen_test.go @@ -79,6 +79,12 @@ func TestApplicationPackages_Alter(t *testing.T) { assertOptsInvalidJoinedErrors(t, opts, errExactlyOneOf("AlterApplicationPackageOptions", "Set", "Unset", "ModifyReleaseDirective", "SetDefaultReleaseDirective", "SetReleaseDirective", "UnsetReleaseDirective", "AddVersion", "DropVersion", "AddPatchForVersion", "SetTags", "UnsetTags")) }) + t.Run("validation: set options at least one field should be present", func(t *testing.T) { + opts := defaultOpts() + opts.Unset = &ApplicationPackageUnset{} + assertOptsInvalidJoinedErrors(t, opts, errAtLeastOneOf("AlterApplicationPackageOptions.Unset", "DataRetentionTimeInDays", "MaxDataExtensionTimeInDays", "DefaultDdlCollation", "Comment", "Distribution")) + }) + t.Run("alter: set options", func(t *testing.T) { opts := defaultOpts() opts.Set = &ApplicationPackageSet{ @@ -94,33 +100,13 @@ func TestApplicationPackages_Alter(t *testing.T) { t.Run("alter: unset options", func(t *testing.T) { opts := defaultOpts() opts.Unset = &ApplicationPackageUnset{ - Comment: Bool(true), - } - assertOptsValidAndSQLEquals(t, opts, `ALTER APPLICATION PACKAGE IF EXISTS %s UNSET COMMENT`, id.FullyQualifiedName()) - - opts = defaultOpts() - opts.Unset = &ApplicationPackageUnset{ - DataRetentionTimeInDays: Bool(true), - } - assertOptsValidAndSQLEquals(t, opts, `ALTER APPLICATION PACKAGE IF EXISTS %s UNSET DATA_RETENTION_TIME_IN_DAYS`, id.FullyQualifiedName()) - - opts = defaultOpts() - opts.Unset = &ApplicationPackageUnset{ + DataRetentionTimeInDays: Bool(true), MaxDataExtensionTimeInDays: Bool(true), + DefaultDdlCollation: Bool(true), + Comment: Bool(true), + Distribution: Bool(true), } - assertOptsValidAndSQLEquals(t, opts, `ALTER APPLICATION PACKAGE IF EXISTS %s UNSET MAX_DATA_EXTENSION_TIME_IN_DAYS`, id.FullyQualifiedName()) - - opts = defaultOpts() - opts.Unset = &ApplicationPackageUnset{ - DefaultDdlCollation: Bool(true), - } - assertOptsValidAndSQLEquals(t, opts, `ALTER APPLICATION PACKAGE IF EXISTS %s UNSET DEFAULT_DDL_COLLATION`, id.FullyQualifiedName()) - - opts = defaultOpts() - opts.Unset = &ApplicationPackageUnset{ - Distribution: Bool(true), - } - assertOptsValidAndSQLEquals(t, opts, `ALTER APPLICATION PACKAGE IF EXISTS %s UNSET DISTRIBUTION`, id.FullyQualifiedName()) + assertOptsValidAndSQLEquals(t, opts, `ALTER APPLICATION PACKAGE IF EXISTS %s UNSET DATA_RETENTION_TIME_IN_DAYS, MAX_DATA_EXTENSION_TIME_IN_DAYS, DEFAULT_DDL_COLLATION, COMMENT, DISTRIBUTION`, id.FullyQualifiedName()) }) t.Run("alter: set tags", func(t *testing.T) { diff --git a/pkg/sdk/application_packages_validations_gen.go b/pkg/sdk/application_packages_validations_gen.go index de5102bf76..14ddbd323c 100644 --- a/pkg/sdk/application_packages_validations_gen.go +++ b/pkg/sdk/application_packages_validations_gen.go @@ -30,8 +30,8 @@ func (opts *AlterApplicationPackageOptions) validate() error { errs = append(errs, errExactlyOneOf("AlterApplicationPackageOptions", "Set", "Unset", "ModifyReleaseDirective", "SetDefaultReleaseDirective", "SetReleaseDirective", "UnsetReleaseDirective", "AddVersion", "DropVersion", "AddPatchForVersion", "SetTags", "UnsetTags")) } if valueSet(opts.Unset) { - if !exactlyOneValueSet(opts.Unset.DataRetentionTimeInDays, opts.Unset.MaxDataExtensionTimeInDays, opts.Unset.DefaultDdlCollation, opts.Unset.Comment, opts.Unset.Distribution) { - errs = append(errs, errExactlyOneOf("AlterApplicationPackageOptions.Unset", "DataRetentionTimeInDays", "MaxDataExtensionTimeInDays", "DefaultDdlCollation", "Comment", "Distribution")) + if !anyValueSet(opts.Unset.DataRetentionTimeInDays, opts.Unset.MaxDataExtensionTimeInDays, opts.Unset.DefaultDdlCollation, opts.Unset.Comment, opts.Unset.Distribution) { + errs = append(errs, errAtLeastOneOf("AlterApplicationPackageOptions.Unset", "DataRetentionTimeInDays", "MaxDataExtensionTimeInDays", "DefaultDdlCollation", "Comment", "Distribution")) } } return JoinErrors(errs...) diff --git a/pkg/sdk/testint/application_packages_integration_test.go b/pkg/sdk/testint/application_packages_integration_test.go index 52958249ab..6e232ca589 100644 --- a/pkg/sdk/testint/application_packages_integration_test.go +++ b/pkg/sdk/testint/application_packages_integration_test.go @@ -123,20 +123,13 @@ func TestInt_ApplicationPackages(t *testing.T) { e := createApplicationPackageHandle(t) id := sdk.NewAccountObjectIdentifier(e.Name) - // unset comment - unset := sdk.NewApplicationPackageUnsetRequest().WithComment(sdk.Bool(true)) + // unset comment and distribution + unset := sdk.NewApplicationPackageUnsetRequest().WithComment(sdk.Bool(true)).WithDistribution(sdk.Bool(true)) err := client.ApplicationPackages.Alter(ctx, sdk.NewAlterApplicationPackageRequest(id).WithUnset(unset)) require.NoError(t, err) o, err := client.ApplicationPackages.ShowByID(ctx, id) require.NoError(t, err) require.Empty(t, o.Comment) - - // unset distribution - unset = sdk.NewApplicationPackageUnsetRequest().WithDistribution(sdk.Bool(true)) - err = client.ApplicationPackages.Alter(ctx, sdk.NewAlterApplicationPackageRequest(id).WithUnset(unset)) - require.NoError(t, err) - o, err = client.ApplicationPackages.ShowByID(ctx, id) - require.NoError(t, err) require.Equal(t, sdk.DistributionInternal, sdk.Distribution(o.Distribution)) }) @@ -201,7 +194,7 @@ func TestInt_ApplicationPackagesVersionAndReleaseDirective(t *testing.T) { createApplicationPackageHandle := func(t *testing.T) *sdk.ApplicationPackage { t.Helper() - id := sdk.RandomAccountObjectIdentifier() + id := sdk.NewAccountObjectIdentifier("snowflake_package_test") request := sdk.NewCreateApplicationPackageRequest(id).WithDistribution(sdk.DistributionPointer(sdk.DistributionInternal)) err := client.ApplicationPackages.Create(ctx, request) require.NoError(t, err)