mirror of
https://github.com/google/nomulus.git
synced 2025-04-29 19:47:51 +02:00
Also deletes the autorenew poll message history revision id field in Domain, which is only needed to recreate the ofy key for the poll message. The column already contains null values in it, making it impossible to depend on it. The column itself will be deleted from the schema after this PR is deployed. The logic to update autorenew recurrence end time is changed accordingly: When a poll message already exists, we simply update the endtime, but when it no longer exists, i. e. when it's deleted speculatively after a transfer request, we recreate one using the history entry id that resulted in its creation (e. g. cancelled or rejected transfer). This should fix b/240984498. Though the exact reason for that bug is still unclear to me. Namely, it throws an NPE at this line during an explicit domain transfer approval: https://cs.opensource.google/nomulus/nomulus/+/master:core/src/main/java/google/registry/flows/domain/DomainFlowUtils.java;l=603;bpv=1;bpt=0;drc=ede919d7dcdb7f209b074563b3d449ebee19118a The domain in question has a null autorenewPollMessageHistoryId, but that in itself should not have caused an NPE because we are not operating on the null pointer. On that line the only possible way to throw an NPE is for the domain itself to be null, but if that were the case, the NPE would have been thrown at line 599 where we called a method on the domain object. Regardless of the cause, with this PR we are using an explicitly provided history id and checking for its nullness before using it. If a similar issue arises again, we should have a better idea why. Lastly, the way poll message id is constructed is largely simplified in PollMessageExternalKeyConverter as a result of the removal ofy parent keys in PollMessage. This does present a possibility of failure when immediately before deployment, a registrar requests a poll message and received the old id, but by the time the registrar acks the id, the new version is deployed and therefore does not recognize the old key. The likelihood of this happening should be slim, and we could have prevented it by letting the converter recognize both the old and the new key. However, we would like to eventually phase out the old key, and in theory a registrar could ack a poll message at any time after it was requested. So, there is not a safe time by which all the old ids are acked, lest we develop some elaborate scheme to keep track of which messages were sent with an old id when requested and which of these old ids are acked. Only then can we be truly safe to phase out the old id. The benefit does not seem to warrant the effort. If a registrar does encounter a situation like this, they could open a support bug to have us manually ack the poll message for them.
859 lines
32 KiB
Text
859 lines
32 KiB
Text
-- Copyright 2019 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.
|
|
|
|
create table "AllocationToken" (
|
|
token text not null,
|
|
update_timestamp timestamptz,
|
|
allowed_registrar_ids text[],
|
|
allowed_tlds text[],
|
|
creation_time timestamptz not null,
|
|
discount_fraction float8 not null,
|
|
discount_premiums boolean not null,
|
|
discount_years int4 not null,
|
|
domain_name text,
|
|
redemption_domain_history_id int8,
|
|
redemption_domain_repo_id text,
|
|
registration_behavior text not null,
|
|
renewal_price_behavior text not null,
|
|
token_status_transitions hstore,
|
|
token_type text,
|
|
primary key (token)
|
|
);
|
|
|
|
create table "BillingCancellation" (
|
|
billing_cancellation_id int8 not null,
|
|
registrar_id text not null,
|
|
domain_history_revision_id int8 not null,
|
|
domain_repo_id text not null,
|
|
event_time timestamptz not null,
|
|
flags text[],
|
|
reason text not null,
|
|
domain_name text not null,
|
|
billing_time timestamptz,
|
|
billing_event_id int8,
|
|
billing_recurrence_id int8,
|
|
primary key (billing_cancellation_id)
|
|
);
|
|
|
|
create table "BillingEvent" (
|
|
billing_event_id int8 not null,
|
|
registrar_id text not null,
|
|
domain_history_revision_id int8 not null,
|
|
domain_repo_id text not null,
|
|
event_time timestamptz not null,
|
|
flags text[],
|
|
reason text not null,
|
|
domain_name text not null,
|
|
allocation_token text,
|
|
billing_time timestamptz,
|
|
cancellation_matching_billing_recurrence_id int8,
|
|
cost_amount numeric(19, 2),
|
|
cost_currency text,
|
|
period_years int4,
|
|
recurrence_history_revision_id int8,
|
|
synthetic_creation_time timestamptz,
|
|
primary key (billing_event_id)
|
|
);
|
|
|
|
create table "BillingRecurrence" (
|
|
billing_recurrence_id int8 not null,
|
|
registrar_id text not null,
|
|
domain_history_revision_id int8 not null,
|
|
domain_repo_id text not null,
|
|
event_time timestamptz not null,
|
|
flags text[],
|
|
reason text not null,
|
|
domain_name text not null,
|
|
recurrence_end_time timestamptz,
|
|
recurrence_time_of_year text,
|
|
renewal_price_amount numeric(19, 2),
|
|
renewal_price_currency text,
|
|
renewal_price_behavior text not null,
|
|
primary key (billing_recurrence_id)
|
|
);
|
|
|
|
create table "ClaimsEntry" (
|
|
revision_id int8 not null,
|
|
domain_label text not null,
|
|
claim_key text not null,
|
|
primary key (revision_id, domain_label)
|
|
);
|
|
|
|
create table "ClaimsList" (
|
|
revision_id bigserial not null,
|
|
tmdb_generation_time timestamptz not null,
|
|
creation_timestamp timestamptz not null,
|
|
primary key (revision_id)
|
|
);
|
|
|
|
create table "Contact" (
|
|
repo_id text not null,
|
|
update_timestamp timestamptz,
|
|
creation_registrar_id text,
|
|
creation_time timestamptz,
|
|
current_sponsor_registrar_id text,
|
|
deletion_time timestamptz,
|
|
last_epp_update_registrar_id text,
|
|
last_epp_update_time timestamptz,
|
|
statuses text[],
|
|
auth_info_repo_id text,
|
|
auth_info_value text,
|
|
contact_id text,
|
|
disclose_types_addr text[],
|
|
disclose_show_email boolean,
|
|
disclose_show_fax boolean,
|
|
disclose_mode_flag boolean,
|
|
disclose_types_name text[],
|
|
disclose_types_org text[],
|
|
disclose_show_voice boolean,
|
|
email text,
|
|
fax_phone_extension text,
|
|
fax_phone_number text,
|
|
addr_i18n_city text,
|
|
addr_i18n_country_code text,
|
|
addr_i18n_state text,
|
|
addr_i18n_street_line1 text,
|
|
addr_i18n_street_line2 text,
|
|
addr_i18n_street_line3 text,
|
|
addr_i18n_zip text,
|
|
addr_i18n_name text,
|
|
addr_i18n_org text,
|
|
addr_i18n_type text,
|
|
last_transfer_time timestamptz,
|
|
addr_local_city text,
|
|
addr_local_country_code text,
|
|
addr_local_state text,
|
|
addr_local_street_line1 text,
|
|
addr_local_street_line2 text,
|
|
addr_local_street_line3 text,
|
|
addr_local_zip text,
|
|
addr_local_name text,
|
|
addr_local_org text,
|
|
addr_local_type text,
|
|
search_name text,
|
|
transfer_history_entry_id int8,
|
|
transfer_poll_message_id_1 int8,
|
|
transfer_poll_message_id_2 int8,
|
|
transfer_poll_message_id_3 int8,
|
|
transfer_repo_id text,
|
|
transfer_client_txn_id text,
|
|
transfer_server_txn_id text,
|
|
transfer_gaining_registrar_id text,
|
|
transfer_losing_registrar_id text,
|
|
transfer_pending_expiration_time timestamptz,
|
|
transfer_request_time timestamptz,
|
|
transfer_status text,
|
|
voice_phone_extension text,
|
|
voice_phone_number text,
|
|
primary key (repo_id)
|
|
);
|
|
|
|
create table "ContactHistory" (
|
|
contact_repo_id text not null,
|
|
history_revision_id int8 not null,
|
|
history_by_superuser boolean not null,
|
|
history_registrar_id text,
|
|
history_modification_time timestamptz not null,
|
|
history_reason text,
|
|
history_requested_by_registrar boolean,
|
|
history_client_transaction_id text,
|
|
history_server_transaction_id text,
|
|
history_type text not null,
|
|
history_xml_bytes bytea,
|
|
auth_info_repo_id text,
|
|
auth_info_value text,
|
|
contact_id text,
|
|
disclose_types_addr text[],
|
|
disclose_show_email boolean,
|
|
disclose_show_fax boolean,
|
|
disclose_mode_flag boolean,
|
|
disclose_types_name text[],
|
|
disclose_types_org text[],
|
|
disclose_show_voice boolean,
|
|
email text,
|
|
fax_phone_extension text,
|
|
fax_phone_number text,
|
|
addr_i18n_city text,
|
|
addr_i18n_country_code text,
|
|
addr_i18n_state text,
|
|
addr_i18n_street_line1 text,
|
|
addr_i18n_street_line2 text,
|
|
addr_i18n_street_line3 text,
|
|
addr_i18n_zip text,
|
|
addr_i18n_name text,
|
|
addr_i18n_org text,
|
|
addr_i18n_type text,
|
|
last_transfer_time timestamptz,
|
|
addr_local_city text,
|
|
addr_local_country_code text,
|
|
addr_local_state text,
|
|
addr_local_street_line1 text,
|
|
addr_local_street_line2 text,
|
|
addr_local_street_line3 text,
|
|
addr_local_zip text,
|
|
addr_local_name text,
|
|
addr_local_org text,
|
|
addr_local_type text,
|
|
search_name text,
|
|
transfer_history_entry_id int8,
|
|
transfer_poll_message_id_1 int8,
|
|
transfer_poll_message_id_2 int8,
|
|
transfer_poll_message_id_3 int8,
|
|
transfer_repo_id text,
|
|
transfer_client_txn_id text,
|
|
transfer_server_txn_id text,
|
|
transfer_gaining_registrar_id text,
|
|
transfer_losing_registrar_id text,
|
|
transfer_pending_expiration_time timestamptz,
|
|
transfer_request_time timestamptz,
|
|
transfer_status text,
|
|
voice_phone_extension text,
|
|
voice_phone_number text,
|
|
creation_registrar_id text,
|
|
creation_time timestamptz,
|
|
current_sponsor_registrar_id text,
|
|
deletion_time timestamptz,
|
|
last_epp_update_registrar_id text,
|
|
last_epp_update_time timestamptz,
|
|
statuses text[],
|
|
update_timestamp timestamptz,
|
|
primary key (contact_repo_id, history_revision_id)
|
|
);
|
|
|
|
create table "Cursor" (
|
|
scope text not null,
|
|
type text not null,
|
|
cursor_time timestamptz not null,
|
|
last_update_time timestamptz not null,
|
|
primary key (scope, type)
|
|
);
|
|
|
|
create table "DatabaseMigrationStateSchedule" (
|
|
id int8 not null,
|
|
migration_transitions hstore,
|
|
primary key (id)
|
|
);
|
|
|
|
create table "DelegationSignerData" (
|
|
algorithm int4 not null,
|
|
digest bytea not null,
|
|
digest_type int4 not null,
|
|
domain_repo_id text not null,
|
|
key_tag int4 not null,
|
|
primary key (algorithm, digest, digest_type, domain_repo_id, key_tag)
|
|
);
|
|
|
|
create table "Domain" (
|
|
repo_id text not null,
|
|
update_timestamp timestamptz,
|
|
creation_registrar_id text,
|
|
creation_time timestamptz,
|
|
current_sponsor_registrar_id text,
|
|
deletion_time timestamptz,
|
|
last_epp_update_registrar_id text,
|
|
last_epp_update_time timestamptz,
|
|
statuses text[],
|
|
admin_contact text,
|
|
auth_info_repo_id text,
|
|
auth_info_value text,
|
|
billing_recurrence_id int8,
|
|
autorenew_end_time timestamptz,
|
|
autorenew_poll_message_id int8,
|
|
billing_contact text,
|
|
current_package_token text,
|
|
deletion_poll_message_id int8,
|
|
dns_refresh_request_time timestamptz,
|
|
domain_name text,
|
|
idn_table_name text,
|
|
last_transfer_time timestamptz,
|
|
launch_notice_accepted_time timestamptz,
|
|
launch_notice_expiration_time timestamptz,
|
|
launch_notice_tcn_id text,
|
|
launch_notice_validator_id text,
|
|
registrant_contact text,
|
|
registration_expiration_time timestamptz,
|
|
smd_id text,
|
|
subordinate_hosts text[],
|
|
tech_contact text,
|
|
tld text,
|
|
transfer_billing_cancellation_id int8,
|
|
transfer_billing_recurrence_id int8,
|
|
transfer_autorenew_poll_message_id int8,
|
|
transfer_autorenew_poll_message_history_id int8,
|
|
transfer_billing_event_id int8,
|
|
transfer_renew_period_unit text,
|
|
transfer_renew_period_value int4,
|
|
transfer_registration_expiration_time timestamptz,
|
|
transfer_history_entry_id int8,
|
|
transfer_poll_message_id_1 int8,
|
|
transfer_poll_message_id_2 int8,
|
|
transfer_poll_message_id_3 int8,
|
|
transfer_repo_id text,
|
|
transfer_client_txn_id text,
|
|
transfer_server_txn_id text,
|
|
transfer_gaining_registrar_id text,
|
|
transfer_losing_registrar_id text,
|
|
transfer_pending_expiration_time timestamptz,
|
|
transfer_request_time timestamptz,
|
|
transfer_status text,
|
|
primary key (repo_id)
|
|
);
|
|
|
|
create table "DomainDsDataHistory" (
|
|
ds_data_history_revision_id int8 not null,
|
|
algorithm int4 not null,
|
|
digest bytea not null,
|
|
digest_type int4 not null,
|
|
domain_history_revision_id int8 not null,
|
|
domain_repo_id text,
|
|
key_tag int4 not null,
|
|
primary key (ds_data_history_revision_id)
|
|
);
|
|
|
|
create table "DomainHistory" (
|
|
domain_repo_id text not null,
|
|
history_revision_id int8 not null,
|
|
history_by_superuser boolean not null,
|
|
history_registrar_id text,
|
|
history_modification_time timestamptz not null,
|
|
history_reason text,
|
|
history_requested_by_registrar boolean,
|
|
history_client_transaction_id text,
|
|
history_server_transaction_id text,
|
|
history_type text not null,
|
|
history_xml_bytes bytea,
|
|
admin_contact text,
|
|
auth_info_repo_id text,
|
|
auth_info_value text,
|
|
billing_recurrence_id int8,
|
|
autorenew_end_time timestamptz,
|
|
autorenew_poll_message_id int8,
|
|
billing_contact text,
|
|
current_package_token text,
|
|
deletion_poll_message_id int8,
|
|
dns_refresh_request_time timestamptz,
|
|
domain_name text,
|
|
idn_table_name text,
|
|
last_transfer_time timestamptz,
|
|
launch_notice_accepted_time timestamptz,
|
|
launch_notice_expiration_time timestamptz,
|
|
launch_notice_tcn_id text,
|
|
launch_notice_validator_id text,
|
|
registrant_contact text,
|
|
registration_expiration_time timestamptz,
|
|
smd_id text,
|
|
subordinate_hosts text[],
|
|
tech_contact text,
|
|
tld text,
|
|
transfer_billing_cancellation_id int8,
|
|
transfer_billing_recurrence_id int8,
|
|
transfer_autorenew_poll_message_id int8,
|
|
transfer_autorenew_poll_message_history_id int8,
|
|
transfer_billing_event_id int8,
|
|
transfer_renew_period_unit text,
|
|
transfer_renew_period_value int4,
|
|
transfer_registration_expiration_time timestamptz,
|
|
transfer_history_entry_id int8,
|
|
transfer_poll_message_id_1 int8,
|
|
transfer_poll_message_id_2 int8,
|
|
transfer_poll_message_id_3 int8,
|
|
transfer_repo_id text,
|
|
transfer_client_txn_id text,
|
|
transfer_server_txn_id text,
|
|
transfer_gaining_registrar_id text,
|
|
transfer_losing_registrar_id text,
|
|
transfer_pending_expiration_time timestamptz,
|
|
transfer_request_time timestamptz,
|
|
transfer_status text,
|
|
creation_registrar_id text,
|
|
creation_time timestamptz,
|
|
current_sponsor_registrar_id text,
|
|
deletion_time timestamptz,
|
|
last_epp_update_registrar_id text,
|
|
last_epp_update_time timestamptz,
|
|
statuses text[],
|
|
update_timestamp timestamptz,
|
|
history_other_registrar_id text,
|
|
history_period_unit text,
|
|
history_period_value int4,
|
|
primary key (domain_repo_id, history_revision_id)
|
|
);
|
|
|
|
create table "DomainHistoryHost" (
|
|
domain_history_domain_repo_id text not null,
|
|
domain_history_history_revision_id int8 not null,
|
|
host_repo_id text
|
|
);
|
|
|
|
create table "DomainHost" (
|
|
domain_repo_id text not null,
|
|
host_repo_id text
|
|
);
|
|
|
|
create table "DomainTransactionRecord" (
|
|
id bigserial not null,
|
|
domain_repo_id text,
|
|
history_revision_id int8,
|
|
report_amount int4 not null,
|
|
report_field text not null,
|
|
reporting_time timestamptz not null,
|
|
tld text not null,
|
|
primary key (id)
|
|
);
|
|
|
|
create table "GracePeriod" (
|
|
grace_period_id int8 not null,
|
|
billing_event_id int8,
|
|
billing_recurrence_id int8,
|
|
registrar_id text not null,
|
|
domain_repo_id text not null,
|
|
expiration_time timestamptz not null,
|
|
type text not null,
|
|
primary key (grace_period_id)
|
|
);
|
|
|
|
create table "GracePeriodHistory" (
|
|
grace_period_history_revision_id int8 not null,
|
|
billing_event_id int8,
|
|
billing_recurrence_id int8,
|
|
registrar_id text not null,
|
|
domain_repo_id text not null,
|
|
expiration_time timestamptz not null,
|
|
type text not null,
|
|
domain_history_revision_id int8,
|
|
grace_period_id int8 not null,
|
|
primary key (grace_period_history_revision_id)
|
|
);
|
|
|
|
create table "Host" (
|
|
repo_id text not null,
|
|
update_timestamp timestamptz,
|
|
creation_registrar_id text,
|
|
creation_time timestamptz,
|
|
current_sponsor_registrar_id text,
|
|
deletion_time timestamptz,
|
|
last_epp_update_registrar_id text,
|
|
last_epp_update_time timestamptz,
|
|
statuses text[],
|
|
host_name text,
|
|
inet_addresses text[],
|
|
last_superordinate_change timestamptz,
|
|
last_transfer_time timestamptz,
|
|
superordinate_domain text,
|
|
primary key (repo_id)
|
|
);
|
|
|
|
create table "HostHistory" (
|
|
host_repo_id text not null,
|
|
history_revision_id int8 not null,
|
|
history_by_superuser boolean not null,
|
|
history_registrar_id text,
|
|
history_modification_time timestamptz not null,
|
|
history_reason text,
|
|
history_requested_by_registrar boolean,
|
|
history_client_transaction_id text,
|
|
history_server_transaction_id text,
|
|
history_type text not null,
|
|
history_xml_bytes bytea,
|
|
host_name text,
|
|
inet_addresses text[],
|
|
last_superordinate_change timestamptz,
|
|
last_transfer_time timestamptz,
|
|
superordinate_domain text,
|
|
creation_registrar_id text,
|
|
creation_time timestamptz,
|
|
current_sponsor_registrar_id text,
|
|
deletion_time timestamptz,
|
|
last_epp_update_registrar_id text,
|
|
last_epp_update_time timestamptz,
|
|
statuses text[],
|
|
update_timestamp timestamptz,
|
|
primary key (host_repo_id, history_revision_id)
|
|
);
|
|
|
|
create table "Lock" (
|
|
resource_name text not null,
|
|
scope text not null,
|
|
acquired_time timestamptz not null,
|
|
expiration_time timestamptz not null,
|
|
request_log_id text not null,
|
|
primary key (resource_name, scope)
|
|
);
|
|
|
|
create table "PollMessage" (
|
|
type text not null,
|
|
poll_message_id int8 not null,
|
|
registrar_id text not null,
|
|
contact_history_revision_id int8,
|
|
contact_repo_id text,
|
|
domain_history_revision_id int8,
|
|
domain_repo_id text,
|
|
event_time timestamptz not null,
|
|
host_history_revision_id int8,
|
|
host_repo_id text,
|
|
message text,
|
|
transfer_response_contact_id text,
|
|
transfer_response_domain_expiration_time timestamptz,
|
|
transfer_response_domain_name text,
|
|
transfer_response_host_id text,
|
|
pending_action_response_action_result boolean,
|
|
pending_action_response_name_or_id text,
|
|
pending_action_response_processed_date timestamptz,
|
|
pending_action_response_client_txn_id text,
|
|
pending_action_response_server_txn_id text,
|
|
transfer_response_gaining_registrar_id text,
|
|
transfer_response_losing_registrar_id text,
|
|
transfer_response_pending_transfer_expiration_time timestamptz,
|
|
transfer_response_transfer_request_time timestamptz,
|
|
transfer_response_transfer_status text,
|
|
autorenew_end_time timestamptz,
|
|
autorenew_domain_name text,
|
|
primary key (poll_message_id)
|
|
);
|
|
|
|
create table "PremiumEntry" (
|
|
revision_id int8 not null,
|
|
domain_label text not null,
|
|
price numeric(19, 2) not null,
|
|
primary key (revision_id, domain_label)
|
|
);
|
|
|
|
create table "PremiumList" (
|
|
revision_id bigserial not null,
|
|
creation_timestamp timestamptz,
|
|
name text not null,
|
|
bloom_filter bytea not null,
|
|
currency text not null,
|
|
primary key (revision_id)
|
|
);
|
|
|
|
create table "RdeRevision" (
|
|
date date not null,
|
|
mode text not null,
|
|
tld text not null,
|
|
update_timestamp timestamptz,
|
|
revision int4 not null,
|
|
primary key (date, mode, tld)
|
|
);
|
|
|
|
create table "Registrar" (
|
|
registrar_id text not null,
|
|
allowed_tlds text[],
|
|
billing_account_map hstore,
|
|
block_premium_names boolean not null,
|
|
client_certificate text,
|
|
client_certificate_hash text,
|
|
contacts_require_syncing boolean not null,
|
|
creation_time timestamptz not null,
|
|
drive_folder_id text,
|
|
email_address text,
|
|
failover_client_certificate text,
|
|
failover_client_certificate_hash text,
|
|
fax_number text,
|
|
iana_identifier int8,
|
|
icann_referral_email text,
|
|
i18n_address_city text,
|
|
i18n_address_country_code text,
|
|
i18n_address_state text,
|
|
i18n_address_street_line1 text,
|
|
i18n_address_street_line2 text,
|
|
i18n_address_street_line3 text,
|
|
i18n_address_zip text,
|
|
ip_address_allow_list text[],
|
|
last_certificate_update_time timestamptz,
|
|
last_expiring_cert_notification_sent_date timestamptz,
|
|
last_expiring_failover_cert_notification_sent_date timestamptz,
|
|
last_update_time timestamptz not null,
|
|
localized_address_city text,
|
|
localized_address_country_code text,
|
|
localized_address_state text,
|
|
localized_address_street_line1 text,
|
|
localized_address_street_line2 text,
|
|
localized_address_street_line3 text,
|
|
localized_address_zip text,
|
|
password_hash text,
|
|
phone_number text,
|
|
phone_passcode text,
|
|
po_number text,
|
|
rdap_base_urls text[],
|
|
registrar_name text not null,
|
|
registry_lock_allowed boolean not null,
|
|
password_salt text,
|
|
state text,
|
|
type text not null,
|
|
url text,
|
|
whois_server text,
|
|
primary key (registrar_id)
|
|
);
|
|
|
|
create table "RegistrarPoc" (
|
|
email_address text not null,
|
|
registrar_id text not null,
|
|
allowed_to_set_registry_lock_password boolean not null,
|
|
fax_number text,
|
|
gae_user_id text,
|
|
name text,
|
|
phone_number text,
|
|
registry_lock_email_address text,
|
|
registry_lock_password_hash text,
|
|
registry_lock_password_salt text,
|
|
types text[],
|
|
visible_in_domain_whois_as_abuse boolean not null,
|
|
visible_in_whois_as_admin boolean not null,
|
|
visible_in_whois_as_tech boolean not null,
|
|
primary key (email_address, registrar_id)
|
|
);
|
|
|
|
create table "RegistryLock" (
|
|
revision_id bigserial not null,
|
|
domain_name text not null,
|
|
is_superuser boolean 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_time timestamptz,
|
|
unlock_request_time timestamptz,
|
|
verification_code text not null,
|
|
relock_revision_id int8,
|
|
primary key (revision_id)
|
|
);
|
|
|
|
create table "ReservedEntry" (
|
|
revision_id int8 not null,
|
|
domain_label text not null,
|
|
comment text,
|
|
reservation_type int4 not null,
|
|
primary key (revision_id, domain_label)
|
|
);
|
|
|
|
create table "ReservedList" (
|
|
revision_id bigserial not null,
|
|
creation_timestamp timestamptz,
|
|
name text not null,
|
|
should_publish boolean not null,
|
|
primary key (revision_id)
|
|
);
|
|
|
|
create table "ServerSecret" (
|
|
id int8 not null,
|
|
secret uuid,
|
|
primary key (id)
|
|
);
|
|
|
|
create table "SignedMarkRevocationEntry" (
|
|
revision_id int8 not null,
|
|
revocation_time timestamptz not null,
|
|
smd_id text not null,
|
|
primary key (revision_id, smd_id)
|
|
);
|
|
|
|
create table "SignedMarkRevocationList" (
|
|
revision_id bigserial not null,
|
|
creation_time timestamptz,
|
|
primary key (revision_id)
|
|
);
|
|
|
|
create table "Spec11ThreatMatch" (
|
|
id bigserial not null,
|
|
check_date date not null,
|
|
domain_name text not null,
|
|
domain_repo_id text not null,
|
|
registrar_id text not null,
|
|
threat_types text[] not null,
|
|
tld text not null,
|
|
primary key (id)
|
|
);
|
|
|
|
create table "Tld" (
|
|
tld_name text not null,
|
|
add_grace_period_length interval not null,
|
|
allowed_fully_qualified_host_names text[],
|
|
allowed_registrant_contact_ids text[],
|
|
anchor_tenant_add_grace_period_length interval not null,
|
|
auto_renew_grace_period_length interval not null,
|
|
automatic_transfer_length interval not null,
|
|
claims_period_end timestamptz not null,
|
|
create_billing_cost_amount numeric(19, 2),
|
|
create_billing_cost_currency text,
|
|
creation_time timestamptz not null,
|
|
currency text not null,
|
|
dns_paused boolean not null,
|
|
dns_writers text[] not null,
|
|
drive_folder_id text,
|
|
eap_fee_schedule hstore not null,
|
|
escrow_enabled boolean not null,
|
|
invoicing_enabled boolean not null,
|
|
lordn_username text,
|
|
num_dns_publish_locks int4 not null,
|
|
pending_delete_length interval not null,
|
|
premium_list_name text,
|
|
pricing_engine_class_name text,
|
|
redemption_grace_period_length interval not null,
|
|
registry_lock_or_unlock_cost_amount numeric(19, 2),
|
|
registry_lock_or_unlock_cost_currency text,
|
|
renew_billing_cost_transitions hstore not null,
|
|
renew_grace_period_length interval not null,
|
|
reserved_list_names text[],
|
|
restore_billing_cost_amount numeric(19, 2),
|
|
restore_billing_cost_currency text,
|
|
roid_suffix text,
|
|
server_status_change_billing_cost_amount numeric(19, 2),
|
|
server_status_change_billing_cost_currency text,
|
|
tld_state_transitions hstore not null,
|
|
tld_type text not null,
|
|
tld_unicode text not null,
|
|
transfer_grace_period_length interval not null,
|
|
primary key (tld_name)
|
|
);
|
|
|
|
create table "TmchCrl" (
|
|
id int8 not null,
|
|
certificate_revocations text not null,
|
|
update_timestamp timestamptz not null,
|
|
url text not null,
|
|
primary key (id)
|
|
);
|
|
create index allocation_token_domain_name_idx on "AllocationToken" (domain_name);
|
|
create index IDX9g3s7mjv1yn4t06nqid39whss on "AllocationToken" (token_type);
|
|
create index IDXtmlqd31dpvvd2g1h9i7erw6aj on "AllocationToken" (redemption_domain_repo_id);
|
|
create index IDXih4b2tea127p5rb61gje6e1y2 on "BillingCancellation" (registrar_id);
|
|
create index IDX2exdfbx6oiiwnhr8j6gjpqt2j on "BillingCancellation" (event_time);
|
|
create index IDXl8vobbecsd32k4ksavdfx8st6 on "BillingCancellation" (domain_repo_id);
|
|
create index IDXqa3g92jc17e8dtiaviy4fet4x on "BillingCancellation" (billing_time);
|
|
create index IDX4ytbe5f3b39trsd4okx5ijhs4 on "BillingCancellation" (billing_event_id);
|
|
create index IDXku0fopwyvd57ebo8bf0jg9xo2 on "BillingCancellation" (billing_recurrence_id);
|
|
create index IDXqspv57gj2led8ly42fq01t7m7 on "BillingEvent" (registrar_id);
|
|
create index IDX5yfbr88439pxw0v3j86c74fp8 on "BillingEvent" (event_time);
|
|
create index IDX6py6ocrab0ivr76srcd2okpnq on "BillingEvent" (billing_time);
|
|
create index IDXplxf9v56p0wg8ws6qsvd082hk on "BillingEvent" (synthetic_creation_time);
|
|
create index IDXbgfmveqa7e5hn689koikwn70r on "BillingEvent" (domain_repo_id);
|
|
create index IDXcesda59ssop44kklytpb292hn on "BillingEvent" (allocation_token);
|
|
create index IDX6ebt3nwk5ocvnremnhnlkl6ff on "BillingEvent" (cancellation_matching_billing_recurrence_id);
|
|
create index IDXd3gxhkh0jk694pjvh9pyn7wjc on "BillingRecurrence" (registrar_id);
|
|
create index IDX6syykou4nkc7hqa5p8r92cpch on "BillingRecurrence" (event_time);
|
|
create index IDXoqttafcywwdn41um6kwlt0n8b on "BillingRecurrence" (domain_repo_id);
|
|
create index IDXp3usbtvk0v1m14i5tdp4xnxgc on "BillingRecurrence" (recurrence_end_time);
|
|
create index IDXjny8wuot75b5e6p38r47wdawu on "BillingRecurrence" (recurrence_time_of_year);
|
|
create index IDX3y752kr9uh4kh6uig54vemx0l on "Contact" (creation_time);
|
|
create index IDXtm415d6fe1rr35stm33s5mg18 on "Contact" (current_sponsor_registrar_id);
|
|
create index IDXn1f711wicdnooa2mqb7g1m55o on "Contact" (deletion_time);
|
|
create index IDXoqd7n4hbx86hvlgkilq75olas on "Contact" (contact_id);
|
|
create index IDX1p3esngcwwu6hstyua6itn6ff on "Contact" (search_name);
|
|
create index IDXo1xdtpij2yryh0skxe9v91sep on "ContactHistory" (creation_time);
|
|
create index IDXhp33wybmb6tbpr1bq7ttwk8je on "ContactHistory" (history_registrar_id);
|
|
create index IDX9q53px6r302ftgisqifmc6put on "ContactHistory" (history_type);
|
|
create index IDXsudwswtwqnfnx2o1hx4s0k0g5 on "ContactHistory" (history_modification_time);
|
|
create index IDXhlqqd5uy98cjyos72d81x9j95 on "DelegationSignerData" (domain_repo_id);
|
|
create index IDXnb02m43jcx24r64n8rbg22u4q on "Domain" (admin_contact);
|
|
create index IDXlrq7v63pc21uoh3auq6eybyhl on "Domain" (autorenew_end_time);
|
|
create index IDXq9gy8x2xynt9tb16yajn1gcm8 on "Domain" (billing_contact);
|
|
create index IDX8nr0ke9mrrx4ewj6pd2ag4rmr on "Domain" (creation_time);
|
|
create index IDXhsjqiy2lyobfymplb28nm74lm on "Domain" (current_sponsor_registrar_id);
|
|
create index IDX5mnf0wn20tno4b9do88j61klr on "Domain" (deletion_time);
|
|
create index IDXc5aw4pk1vkd6ymhvkpanmoadv on "Domain" (domain_name);
|
|
create index IDXr22ciyccwi9rrqmt1ro0s59qf on "Domain" (tech_contact);
|
|
create index IDXrwl38wwkli1j7gkvtywi9jokq on "Domain" (tld);
|
|
create index IDXa7fu0bqynfb79rr80528b4jqt on "Domain" (registrant_contact);
|
|
create index IDXcws5mvmpl8o10wrhde780ors2 on "Domain" (dns_refresh_request_time);
|
|
create index IDXsfci08jgsymxy6ovh4k7r358c on "Domain" (billing_recurrence_id);
|
|
create index IDX3y3k7m2bkgahm9sixiohgyrga on "Domain" (transfer_billing_event_id);
|
|
create index IDXcju58vqascbpve1t7fem53ctl on "Domain" (transfer_billing_recurrence_id);
|
|
create index IDXrh4xmrot9bd63o382ow9ltfig on "DomainHistory" (creation_time);
|
|
create index IDXaro1omfuaxjwmotk3vo00trwm on "DomainHistory" (history_registrar_id);
|
|
create index IDXsu1nam10cjes9keobapn5jvxj on "DomainHistory" (history_type);
|
|
create index IDX6w3qbtgce93cal2orjg1tw7b7 on "DomainHistory" (history_modification_time);
|
|
|
|
alter table if exists "DomainHistoryHost"
|
|
add constraint UKt2e7ae3t8gcsxd13wjx2ka7ij unique (domain_history_history_revision_id, domain_history_domain_repo_id, host_repo_id);
|
|
create index IDXjw3rwtfrexyq53x9vu7qghrdt on "DomainHost" (host_repo_id);
|
|
|
|
alter table if exists "DomainHost"
|
|
add constraint UKat9erbh52e4lg3jw6ai9wkjj9 unique (domain_repo_id, host_repo_id);
|
|
create index IDXj1mtx98ndgbtb1bkekahms18w on "GracePeriod" (domain_repo_id);
|
|
create index IDXbgssjudpm428mrv0xfpvgifps on "GracePeriod" (billing_event_id);
|
|
create index IDX5u5m6clpk3nktrvtyy5umacb6 on "GracePeriod" (billing_recurrence_id);
|
|
create index IDXd01j17vrpjxaerxdmn8bwxs7s on "GracePeriodHistory" (domain_repo_id);
|
|
create index IDXkpkh68n6dy5v51047yr6b0e9l on "Host" (host_name);
|
|
create index IDXy98mebut8ix1v07fjxxdkqcx on "Host" (creation_time);
|
|
create index IDXovmntef6l45tw2bsfl56tcugx on "Host" (deletion_time);
|
|
create index IDXl49vydnq0h5j1piefwjy4i8er on "Host" (current_sponsor_registrar_id);
|
|
create index IDXfg2nnjlujxo6cb9fha971bq2n on "HostHistory" (creation_time);
|
|
create index IDX1iy7njgb7wjmj9piml4l2g0qi on "HostHistory" (history_registrar_id);
|
|
create index IDXkkwbwcwvrdkkqothkiye4jiff on "HostHistory" (host_name);
|
|
create index IDXknk8gmj7s47q56cwpa6rmpt5l on "HostHistory" (history_type);
|
|
create index IDX67qwkjtlq5q8dv6egtrtnhqi7 on "HostHistory" (history_modification_time);
|
|
create index IDXe7wu46c7wpvfmfnj4565abibp on "PollMessage" (registrar_id);
|
|
create index IDXaydgox62uno9qx8cjlj5lauye on "PollMessage" (event_time);
|
|
create index premiumlist_name_idx on "PremiumList" (name);
|
|
create index registrar_name_idx on "Registrar" (registrar_name);
|
|
create index registrar_iana_identifier_idx on "Registrar" (iana_identifier);
|
|
create index registrarpoc_gae_user_id_idx on "RegistrarPoc" (gae_user_id);
|
|
create index idx_registry_lock_verification_code on "RegistryLock" (verification_code);
|
|
create index idx_registry_lock_registrar_id on "RegistryLock" (registrar_id);
|
|
|
|
alter table if exists "RegistryLock"
|
|
add constraint idx_registry_lock_repo_id_revision_id unique (repo_id, revision_id);
|
|
create index reservedlist_name_idx on "ReservedList" (name);
|
|
create index spec11threatmatch_registrar_id_idx on "Spec11ThreatMatch" (registrar_id);
|
|
create index spec11threatmatch_tld_idx on "Spec11ThreatMatch" (tld);
|
|
create index spec11threatmatch_check_date_idx on "Spec11ThreatMatch" (check_date);
|
|
|
|
alter table if exists "DelegationSignerData"
|
|
add constraint FKtr24j9v14ph2mfuw2gsmt12kq
|
|
foreign key (domain_repo_id)
|
|
references "Domain";
|
|
|
|
alter table if exists "DomainDsDataHistory"
|
|
add constraint FKo4ilgyyfnvppbpuivus565i0j
|
|
foreign key (domain_repo_id, domain_history_revision_id)
|
|
references "DomainHistory";
|
|
|
|
alter table if exists "DomainHistoryHost"
|
|
add constraint FKa9woh3hu8gx5x0vly6bai327n
|
|
foreign key (domain_history_domain_repo_id, domain_history_history_revision_id)
|
|
references "DomainHistory";
|
|
|
|
alter table if exists "DomainHost"
|
|
add constraint FKeq1guccbre1yk3oosgp2io554
|
|
foreign key (domain_repo_id)
|
|
references "Domain";
|
|
|
|
alter table if exists "DomainTransactionRecord"
|
|
add constraint FKcjqe54u72kha71vkibvxhjye7
|
|
foreign key (domain_repo_id, history_revision_id)
|
|
references "DomainHistory";
|
|
|
|
alter table if exists "GracePeriod"
|
|
add constraint FK2mys4hojm6ev2g9tmy5aq6m7g
|
|
foreign key (domain_repo_id)
|
|
references "Domain";
|
|
|
|
alter table if exists "GracePeriodHistory"
|
|
add constraint FK7w3cx8d55q8bln80e716tr7b8
|
|
foreign key (domain_repo_id, domain_history_revision_id)
|
|
references "DomainHistory";
|
|
|
|
alter table if exists "RegistryLock"
|
|
add constraint FK2lhcwpxlnqijr96irylrh1707
|
|
foreign key (relock_revision_id)
|
|
references "RegistryLock";
|
|
|
|
alter table if exists "SignedMarkRevocationEntry"
|
|
add constraint FK5ivlhvs3121yx2li5tqh54u4
|
|
foreign key (revision_id)
|
|
references "SignedMarkRevocationList";
|