Skip to content

Commit 1a98800

Browse files
Sandeep KokaMaxrovr
authored andcommitted
Added - Support for ADB-S: Scheduled Upgrade to 23ai
1 parent 7c86d83 commit 1a98800

12 files changed

+613
-288
lines changed

examples/database/adb/autonomous_database.tf

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,21 @@ resource "oci_database_autonomous_database" "test_autonomous_database_apex" {
128128
is_free_tier = "false"
129129
}
130130

131+
resource "oci_database_autonomous_database" "test_autonomous_database_sch_db_ug" {
132+
admin_password = random_string.autonomous_database_admin_password.result
133+
compartment_id = var.compartment_ocid
134+
compute_count = "2.0"
135+
compute_model = "ECPU"
136+
data_storage_size_in_tbs = "1"
137+
db_name = "adbSchDb7"
138+
license_model = "LICENSE_INCLUDED"
139+
is_free_tier = "false"
140+
db_version = "23ai"
141+
# is_disable_db_version_upgrade_schedule = "false"
142+
# is_schedule_db_version_upgrade_to_earliest = "false"
143+
# time_scheduled_db_version_upgrade = "2025-06-06T01:50:00.000Z"
144+
}
145+
131146
resource "oci_database_autonomous_database" "test_autonomous_database_bck_ret_lock" {
132147
admin_password = random_string.autonomous_database_admin_password.result
133148
compartment_id = var.compartment_ocid
@@ -401,3 +416,12 @@ resource "oci_database_autonomous_database" "test_autonomous_database_shrink" {
401416
shrink_adb_trigger = "2"
402417
is_auto_scaling_for_storage_enabled = "true"
403418
}
419+
420+
data "oci_database_autonomous_databases_clones" "test_autonomous_databases_clones" {
421+
#Required
422+
autonomous_database_id = oci_database_autonomous_database.test_autonomous_database.id
423+
compartment_id = var.compartment_ocid
424+
425+
#Optional
426+
clone_type = "REFRESHABLE_CLONE"
427+
}

internal/integrationtest/database_autonomous_database_resource_test.go

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,6 +1302,111 @@ func TestResourceDatabaseAutonomousDatabaseResource_longtermBackup(t *testing.T)
13021302
})
13031303
}
13041304

1305+
func TestDatabaseAutonomousDatabaseResource_schedule_upgrade(t *testing.T) {
1306+
httpreplay.SetScenario("TestDatabaseAutonomousDatabaseResource_schedule_upgrade")
1307+
defer httpreplay.SaveScenario()
1308+
1309+
config := acctest.ProviderTestConfig()
1310+
1311+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
1312+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
1313+
1314+
resourceName := "oci_database_autonomous_database.test_autonomous_database"
1315+
1316+
acctest.SaveConfigContent(config+compartmentIdVariableStr+DatabaseAutonomousDatabaseResourceDependenciesLockBckRetention+
1317+
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Create, DatabaseAutonomousDatabaseRepresentationLockBckRetention), "database", "autonomousDatabase", t)
1318+
1319+
acctest.ResourceTest(t, testAccCheckDatabaseAutonomousDatabaseDestroy, []resource.TestStep{
1320+
//0. Verify Create
1321+
{
1322+
Config: config + compartmentIdVariableStr + DatabaseAutonomousDatabaseResourceDependencies +
1323+
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Create, DatabaseAutonomousDatabaseRepresentationLockBckRetention),
1324+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
1325+
resource.TestCheckResourceAttr(resourceName, "compute_model", "ECPU"),
1326+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
1327+
resource.TestCheckResourceAttr(resourceName, "db_name", adbName),
1328+
),
1329+
},
1330+
//1. schedule to earliest available time
1331+
{
1332+
Config: config + compartmentIdVariableStr + DatabaseAutonomousDatabaseResourceDependencies +
1333+
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Update,
1334+
acctest.RepresentationCopyWithRemovedProperties(acctest.RepresentationCopyWithNewProperties(DatabaseAutonomousDatabaseRepresentationLockBckRetention, map[string]interface{}{
1335+
"is_schedule_db_version_upgrade_to_earliest": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: `true`},
1336+
"db_version": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: `23ai`},
1337+
}), []string{"admin_password", "customer_contacts", "freeform_tags", "display_name"})),
1338+
ExpectNonEmptyPlan: true,
1339+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
1340+
resource.TestCheckResourceAttr(resourceName, "compute_model", "ECPU"),
1341+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
1342+
resource.TestCheckResourceAttr(resourceName, "db_name", adbName),
1343+
),
1344+
},
1345+
//2. update schedule time for db upgrade
1346+
{
1347+
Config: config + compartmentIdVariableStr + DatabaseAutonomousDatabaseResourceDependencies +
1348+
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Update,
1349+
acctest.RepresentationCopyWithRemovedProperties(acctest.RepresentationCopyWithNewProperties(DatabaseAutonomousDatabaseRepresentationLockBckRetention, map[string]interface{}{
1350+
"time_scheduled_db_version_upgrade": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: timeOfAutoRefreshCreate.Truncate(10 * time.Minute).Add(10 * time.Minute).Format(time.RFC3339)},
1351+
"db_version": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: `23ai`},
1352+
}), []string{"admin_password", "customer_contacts", "freeform_tags", "display_name"})),
1353+
ExpectNonEmptyPlan: true,
1354+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
1355+
resource.TestCheckResourceAttr(resourceName, "compute_model", "ECPU"),
1356+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
1357+
resource.TestCheckResourceAttr(resourceName, "db_name", adbName),
1358+
resource.TestCheckResourceAttrSet(resourceName, "time_scheduled_db_version_upgrade"),
1359+
),
1360+
},
1361+
//3. re-schedule time for db upgrade
1362+
{
1363+
Config: config + compartmentIdVariableStr + DatabaseAutonomousDatabaseResourceDependencies +
1364+
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Update,
1365+
acctest.RepresentationCopyWithRemovedProperties(acctest.RepresentationCopyWithNewProperties(DatabaseAutonomousDatabaseRepresentationLockBckRetention, map[string]interface{}{
1366+
"time_scheduled_db_version_upgrade": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: timeOfAutoRefreshUpdate.Truncate(10 * time.Minute).Add(10 * time.Minute).Format(time.RFC3339)},
1367+
"db_version": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: `23ai`},
1368+
}), []string{"admin_password", "customer_contacts", "freeform_tags", "display_name"})),
1369+
ExpectNonEmptyPlan: true,
1370+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
1371+
resource.TestCheckResourceAttr(resourceName, "compute_model", "ECPU"),
1372+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
1373+
resource.TestCheckResourceAttr(resourceName, "db_name", adbName),
1374+
resource.TestCheckResourceAttrSet(resourceName, "time_scheduled_db_version_upgrade"),
1375+
),
1376+
},
1377+
//4. cancel time for db upgrade
1378+
{
1379+
Config: config + compartmentIdVariableStr + DatabaseAutonomousDatabaseResourceDependencies +
1380+
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Update,
1381+
acctest.RepresentationCopyWithRemovedProperties(acctest.RepresentationCopyWithNewProperties(DatabaseAutonomousDatabaseRepresentationLockBckRetention, map[string]interface{}{
1382+
"is_disable_db_version_upgrade_schedule": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: `true`},
1383+
}), []string{"admin_password", "customer_contacts", "freeform_tags", "display_name"})),
1384+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
1385+
resource.TestCheckResourceAttr(resourceName, "compute_model", "ECPU"),
1386+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
1387+
resource.TestCheckResourceAttr(resourceName, "db_name", adbName),
1388+
),
1389+
},
1390+
//5. scheduled db upgrade time again
1391+
{
1392+
Config: config + compartmentIdVariableStr + DatabaseAutonomousDatabaseResourceDependencies +
1393+
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Update,
1394+
acctest.RepresentationCopyWithRemovedProperties(acctest.RepresentationCopyWithNewProperties(DatabaseAutonomousDatabaseRepresentationLockBckRetention, map[string]interface{}{
1395+
"time_scheduled_db_version_upgrade": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: timeOfAutoRefreshCreate.Truncate(10 * time.Minute).Add(10 * time.Minute).Format(time.RFC3339)},
1396+
"is_disable_db_version_upgrade_schedule": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: `false`},
1397+
"db_version": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: `23ai`},
1398+
}), []string{"admin_password", "customer_contacts", "freeform_tags", "display_name"})),
1399+
ExpectNonEmptyPlan: true,
1400+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
1401+
resource.TestCheckResourceAttr(resourceName, "compute_model", "ECPU"),
1402+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
1403+
resource.TestCheckResourceAttr(resourceName, "db_name", adbName),
1404+
resource.TestCheckResourceAttrSet(resourceName, "time_scheduled_db_version_upgrade"),
1405+
),
1406+
},
1407+
})
1408+
}
1409+
13051410
// issue-routing-tag: database/dbaas-adb
13061411
func TestResourceDatabaseAutonomousDatabaseResource_dataSafeStatus(t *testing.T) {
13071412
shouldSkipADBStest := os.Getenv("TF_VAR_should_skip_adbs_test")

internal/service/database/database_autonomous_database_data_source.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,14 @@ func (s *DatabaseAutonomousDatabaseDataSourceCrud) SetData() error {
479479
s.D.Set("time_disaster_recovery_role_changed", s.Res.TimeDisasterRecoveryRoleChanged.String())
480480
}
481481

482+
if s.Res.TimeEarliestAvailableDbVersionUpgrade != nil {
483+
s.D.Set("time_earliest_available_db_version_upgrade", s.Res.TimeEarliestAvailableDbVersionUpgrade.String())
484+
}
485+
486+
if s.Res.TimeLatestAvailableDbVersionUpgrade != nil {
487+
s.D.Set("time_latest_available_db_version_upgrade", s.Res.TimeLatestAvailableDbVersionUpgrade.String())
488+
}
489+
482490
if s.Res.TimeLocalDataGuardEnabled != nil {
483491
s.D.Set("time_local_data_guard_enabled", s.Res.TimeLocalDataGuardEnabled.String())
484492
}
@@ -527,6 +535,10 @@ func (s *DatabaseAutonomousDatabaseDataSourceCrud) SetData() error {
527535
s.D.Set("time_reclamation_of_free_autonomous_database", s.Res.TimeReclamationOfFreeAutonomousDatabase.String())
528536
}
529537

538+
if s.Res.TimeScheduledDbVersionUpgrade != nil {
539+
s.D.Set("time_scheduled_db_version_upgrade", s.Res.TimeScheduledDbVersionUpgrade.String())
540+
}
541+
530542
if s.Res.TimeUndeleted != nil {
531543
s.D.Set("time_undeleted", s.Res.TimeUndeleted.String())
532544
}

internal/service/database/database_autonomous_database_resource.go

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,16 @@ func DatabaseAutonomousDatabaseResource() *schema.Resource {
381381
Optional: true,
382382
Computed: true,
383383
},
384+
"is_disable_db_version_upgrade_schedule": {
385+
Type: schema.TypeBool,
386+
Optional: true,
387+
Computed: true,
388+
},
389+
"is_schedule_db_version_upgrade_to_earliest": {
390+
Type: schema.TypeBool,
391+
Optional: true,
392+
Computed: true,
393+
},
384394
"is_data_guard_enabled": {
385395
Type: schema.TypeBool,
386396
Optional: true,
@@ -1387,6 +1397,14 @@ func DatabaseAutonomousDatabaseResource() *schema.Resource {
13871397
Type: schema.TypeString,
13881398
Computed: true,
13891399
},
1400+
"time_earliest_available_db_version_upgrade": {
1401+
Type: schema.TypeString,
1402+
Computed: true,
1403+
},
1404+
"time_latest_available_db_version_upgrade": {
1405+
Type: schema.TypeString,
1406+
Computed: true,
1407+
},
13901408
"time_local_data_guard_enabled": {
13911409
Type: schema.TypeString,
13921410
Computed: true,
@@ -1427,6 +1445,12 @@ func DatabaseAutonomousDatabaseResource() *schema.Resource {
14271445
Type: schema.TypeString,
14281446
Computed: true,
14291447
},
1448+
"time_scheduled_db_version_upgrade": {
1449+
Type: schema.TypeString,
1450+
Computed: true,
1451+
Optional: true,
1452+
DiffSuppressFunc: tfresource.TimeDiffSuppressFunction,
1453+
},
14301454
"time_undeleted": {
14311455
Type: schema.TypeString,
14321456
Computed: true,
@@ -1953,6 +1977,67 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) Update() error {
19531977
request.DatabaseEdition = oci_database.AutonomousDatabaseSummaryDatabaseEditionEnum(databaseEdition.(string))
19541978
}
19551979

1980+
if timeScheduledDbVersionUpgrade, ok := s.D.GetOkExists("time_scheduled_db_version_upgrade"); ok && s.D.HasChange("time_scheduled_db_version_upgrade") {
1981+
if dbVersion, ok := s.D.GetOkExists("db_version"); ok && s.D.HasChange("db_version") {
1982+
scheduleUgReq := oci_database.UpdateAutonomousDatabaseRequest{}
1983+
tmpSchTime, err := time.Parse(time.RFC3339, timeScheduledDbVersionUpgrade.(string))
1984+
if err != nil {
1985+
return err
1986+
}
1987+
tmpVersion := dbVersion.(string)
1988+
tmpId := s.D.Id()
1989+
scheduleUgReq.TimeScheduledDbVersionUpgrade = &oci_common.SDKTime{Time: tmpSchTime}
1990+
scheduleUgReq.DbVersion = &tmpVersion
1991+
scheduleUgReq.AutonomousDatabaseId = &tmpId
1992+
scheduleUgReq.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "database")
1993+
1994+
response, err := s.Client.UpdateAutonomousDatabase(context.Background(), scheduleUgReq)
1995+
if err != nil {
1996+
return err
1997+
}
1998+
1999+
workId := response.OpcWorkRequestId
2000+
if workId != nil {
2001+
_, err = tfresource.WaitForWorkRequestWithErrorHandling(s.WorkRequestClient, workId, "database", oci_work_requests.WorkRequestResourceActionTypeUpdated, s.D.Timeout(schema.TimeoutUpdate), s.DisableNotFoundRetries)
2002+
if err != nil {
2003+
return err
2004+
}
2005+
}
2006+
2007+
s.Res = &response.AutonomousDatabase
2008+
return nil
2009+
}
2010+
}
2011+
2012+
if isScheduleDbVersionUpgradeToEarliest, ok := s.D.GetOkExists("is_schedule_db_version_upgrade_to_earliest"); ok && s.D.HasChange("is_schedule_db_version_upgrade_to_earliest") {
2013+
if dbVersion, ok := s.D.GetOkExists("db_version"); ok && s.D.HasChange("db_version") {
2014+
scheduleUgEarliestReq := oci_database.UpdateAutonomousDatabaseRequest{}
2015+
tmpScheToEarliest := isScheduleDbVersionUpgradeToEarliest.(bool)
2016+
tmpVersion := dbVersion.(string)
2017+
tmpId := s.D.Id()
2018+
scheduleUgEarliestReq.IsScheduleDbVersionUpgradeToEarliest = &tmpScheToEarliest
2019+
scheduleUgEarliestReq.DbVersion = &tmpVersion
2020+
scheduleUgEarliestReq.AutonomousDatabaseId = &tmpId
2021+
scheduleUgEarliestReq.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "database")
2022+
2023+
response, err := s.Client.UpdateAutonomousDatabase(context.Background(), scheduleUgEarliestReq)
2024+
if err != nil {
2025+
return err
2026+
}
2027+
2028+
workId := response.OpcWorkRequestId
2029+
if workId != nil {
2030+
_, err = tfresource.WaitForWorkRequestWithErrorHandling(s.WorkRequestClient, workId, "database", oci_work_requests.WorkRequestResourceActionTypeUpdated, s.D.Timeout(schema.TimeoutUpdate), s.DisableNotFoundRetries)
2031+
if err != nil {
2032+
return err
2033+
}
2034+
}
2035+
2036+
s.Res = &response.AutonomousDatabase
2037+
return nil
2038+
}
2039+
}
2040+
19562041
if dbVersion, ok := s.D.GetOkExists("db_version"); ok && s.D.HasChange("db_version") {
19572042
err := s.updateDbVersion(dbVersion.(string))
19582043
if err != nil {
@@ -2032,6 +2117,11 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) Update() error {
20322117
request.IsDevTier = &tmp
20332118
}
20342119

2120+
if isDisableDbVersionUpgradeSchedule, ok := s.D.GetOkExists("is_disable_db_version_upgrade_schedule"); ok && s.D.HasChange("is_disable_db_version_upgrade_schedule") {
2121+
tmp := isDisableDbVersionUpgradeSchedule.(bool)
2122+
request.IsDisableDbVersionUpgradeSchedule = &tmp
2123+
}
2124+
20352125
if isDisconnectPeer, ok := s.D.GetOkExists("is_disconnect_peer"); ok && s.D.HasChange("is_disconnect_peer") {
20362126
tmp := isDisconnectPeer.(bool)
20372127
request.IsDisconnectPeer = &tmp
@@ -2729,6 +2819,14 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) SetData() error {
27292819
s.D.Set("time_disaster_recovery_role_changed", s.Res.TimeDisasterRecoveryRoleChanged.String())
27302820
}
27312821

2822+
if s.Res.TimeEarliestAvailableDbVersionUpgrade != nil {
2823+
s.D.Set("time_earliest_available_db_version_upgrade", s.Res.TimeEarliestAvailableDbVersionUpgrade.String())
2824+
}
2825+
2826+
if s.Res.TimeLatestAvailableDbVersionUpgrade != nil {
2827+
s.D.Set("time_latest_available_db_version_upgrade", s.Res.TimeLatestAvailableDbVersionUpgrade.String())
2828+
}
2829+
27322830
if s.Res.TimeLocalDataGuardEnabled != nil {
27332831
s.D.Set("time_local_data_guard_enabled", s.Res.TimeLocalDataGuardEnabled.String())
27342832
}
@@ -2773,6 +2871,10 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) SetData() error {
27732871
s.D.Set("time_reclamation_of_free_autonomous_database", s.Res.TimeReclamationOfFreeAutonomousDatabase.String())
27742872
}
27752873

2874+
if s.Res.TimeScheduledDbVersionUpgrade != nil {
2875+
s.D.Set("time_scheduled_db_version_upgrade", s.Res.TimeScheduledDbVersionUpgrade.Format(time.RFC3339))
2876+
}
2877+
27762878
if s.Res.TimeUndeleted != nil {
27772879
s.D.Set("time_undeleted", s.Res.TimeUndeleted.String())
27782880
}

internal/service/database/database_autonomous_databases_clones_data_source.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,6 +1098,14 @@ func DatabaseAutonomousDatabasesClonesDataSource() *schema.Resource {
10981098
Type: schema.TypeString,
10991099
Computed: true,
11001100
},
1101+
"time_earliest_available_db_version_upgrade": {
1102+
Type: schema.TypeString,
1103+
Computed: true,
1104+
},
1105+
"time_latest_available_db_version_upgrade": {
1106+
Type: schema.TypeString,
1107+
Computed: true,
1108+
},
11011109
"time_local_data_guard_enabled": {
11021110
Type: schema.TypeString,
11031111
Computed: true,
@@ -1142,6 +1150,10 @@ func DatabaseAutonomousDatabasesClonesDataSource() *schema.Resource {
11421150
Type: schema.TypeString,
11431151
Computed: true,
11441152
},
1153+
"time_scheduled_db_version_upgrade": {
1154+
Type: schema.TypeString,
1155+
Computed: true,
1156+
},
11451157
"time_undeleted": {
11461158
Type: schema.TypeString,
11471159
Computed: true,
@@ -1671,6 +1683,14 @@ func (s *DatabaseAutonomousDatabasesClonesDataSourceCrud) SetData() error {
16711683
autonomousDatabasesClone["time_disaster_recovery_role_changed"] = r.TimeDisasterRecoveryRoleChanged.String()
16721684
}
16731685

1686+
if r.TimeEarliestAvailableDbVersionUpgrade != nil {
1687+
autonomousDatabasesClone["time_earliest_available_db_version_upgrade"] = r.TimeEarliestAvailableDbVersionUpgrade.String()
1688+
}
1689+
1690+
if r.TimeLatestAvailableDbVersionUpgrade != nil {
1691+
autonomousDatabasesClone["time_latest_available_db_version_upgrade"] = r.TimeLatestAvailableDbVersionUpgrade.String()
1692+
}
1693+
16741694
if r.TimeLocalDataGuardEnabled != nil {
16751695
autonomousDatabasesClone["time_local_data_guard_enabled"] = r.TimeLocalDataGuardEnabled.String()
16761696
}
@@ -1715,6 +1735,10 @@ func (s *DatabaseAutonomousDatabasesClonesDataSourceCrud) SetData() error {
17151735
autonomousDatabasesClone["time_reclamation_of_free_autonomous_database"] = r.TimeReclamationOfFreeAutonomousDatabase.String()
17161736
}
17171737

1738+
if r.TimeScheduledDbVersionUpgrade != nil {
1739+
autonomousDatabasesClone["time_scheduled_db_version_upgrade"] = r.TimeScheduledDbVersionUpgrade.String()
1740+
}
1741+
17181742
if r.TimeUndeleted != nil {
17191743
autonomousDatabasesClone["time_undeleted"] = r.TimeUndeleted.String()
17201744
}

0 commit comments

Comments
 (0)