Embed a ZonedDateTime as the UpdateAutoTimestamp in SQL (#1033)

* Embed a ZonedDateTime as the UpdateAutoTimestamp in SQL

This means we can get rid of the converter and more importantly, means
that reading the object from SQL does not affect the last-read time (the
test added to UpdateAutoTimestampTest failed prior to the production
code change).

For now we keep both time fields in UpdateAutoTimestamp however
post-migration, we can remove the joda-time field if we wish.

Note: I'm not sure why <now> is the time that we started getting
LazyInitializationExceptions in the LegacyHistoryObject and
ReplayExtension tests but we can solve that by just examining /
initializing the object within the transaction.
This commit is contained in:
gbrodman 2021-03-29 11:59:08 -04:00 committed by GitHub
parent 1e650bd0a1
commit a4e078305d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 2875 additions and 2932 deletions

View file

@ -261,11 +261,11 @@ td.section {
</tr>
<tr>
<td class="property_name">generated on</td>
<td class="property_value">2021-03-19 12:31:33.396532</td>
<td class="property_value">2021-03-24 01:27:00.824998</td>
</tr>
<tr>
<td class="property_name">last flyway file</td>
<td id="lastFlywayFile" class="property_value">V89__host_history_host_deferred.sql</td>
<td id="lastFlywayFile" class="property_value">V90__update_timestamp.sql</td>
</tr>
</tbody>
</table>
@ -284,7 +284,7 @@ td.section {
generated on
</text>
<text text-anchor="start" x="4027.94" y="-10.8" font-family="Helvetica,sans-Serif" font-size="14.00">
2021-03-19 12:31:33.396532
2021-03-24 01:27:00.824998
</text>
<polygon fill="none" stroke="#888888" points="3940.44,-4 3940.44,-44 4205.44,-44 4205.44,-4 3940.44,-4" /> <!-- allocationtoken_a08ccbef -->
<g id="node1" class="node">

File diff suppressed because it is too large Load diff

View file

@ -87,3 +87,4 @@ V86__third_poll_message.sql
V87__fix_super_domain_fk.sql
V88__transfer_billing_cancellation_history_id.sql
V89__host_history_host_deferred.sql
V90__update_timestamp.sql

View file

@ -0,0 +1,23 @@
-- Copyright 2021 The Nomulus Authors. All Rights Reserved.
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
ALTER TABLE "Registrar" ALTER COLUMN "last_update_time" SET NOT NULL;
ALTER TABLE "RegistryLock" RENAME "last_update_timestamp" TO "last_update_time";
ALTER TABLE "RegistryLock" ALTER COLUMN "last_update_time" SET NOT NULL;
-- While we're at it, rename some registry-lock fields to follow the same naming pattern
ALTER TABLE "RegistryLock" RENAME "lock_completion_timestamp" TO "lock_completion_time";
ALTER TABLE "RegistryLock" RENAME "lock_request_timestamp" TO "lock_request_time";
ALTER TABLE "RegistryLock" RENAME "unlock_completion_timestamp" TO "unlock_completion_time";
ALTER TABLE "RegistryLock" RENAME "unlock_request_timestamp" TO "unlock_request_time";

View file

@ -589,7 +589,7 @@
i18n_address_zip text,
ip_address_allow_list text[],
last_certificate_update_time timestamptz,
last_update_time timestamptz,
last_update_time timestamptz not null,
localized_address_city text,
localized_address_country_code text,
localized_address_state text,
@ -634,15 +634,15 @@
revision_id bigserial not null,
domain_name text not null,
is_superuser boolean not null,
last_update_timestamp timestamptz,
lock_completion_timestamp timestamptz,
lock_request_timestamp timestamptz not null,
last_update_time timestamptz not null,
lock_completion_time timestamptz,
lock_request_time timestamptz not null,
registrar_id text not null,
registrar_poc_id text,
relock_duration interval,
repo_id text not null,
unlock_completion_timestamp timestamptz,
unlock_request_timestamp timestamptz,
unlock_completion_time timestamptz,
unlock_request_time timestamptz,
verification_code text not null,
relock_revision_id int8,
primary key (revision_id)

View file

@ -780,7 +780,7 @@ CREATE TABLE public."Registrar" (
i18n_address_zip text,
ip_address_allow_list text[],
last_certificate_update_time timestamp with time zone,
last_update_time timestamp with time zone,
last_update_time timestamp with time zone NOT NULL,
localized_address_city text,
localized_address_country_code text,
localized_address_state text,
@ -831,17 +831,17 @@ CREATE TABLE public."RegistrarPoc" (
CREATE TABLE public."RegistryLock" (
revision_id bigint NOT NULL,
lock_completion_timestamp timestamp with time zone,
lock_request_timestamp timestamp with time zone NOT NULL,
lock_completion_time timestamp with time zone,
lock_request_time timestamp with time zone NOT NULL,
domain_name text NOT NULL,
is_superuser boolean NOT NULL,
registrar_id text NOT NULL,
registrar_poc_id text,
repo_id text NOT NULL,
verification_code text NOT NULL,
unlock_request_timestamp timestamp with time zone,
unlock_completion_timestamp timestamp with time zone,
last_update_timestamp timestamp with time zone,
unlock_request_time timestamp with time zone,
unlock_completion_time timestamp with time zone,
last_update_time timestamp with time zone NOT NULL,
relock_revision_id bigint,
relock_duration interval
);