| -- |
| -- Licensed to the Apache Software Foundation (ASF) under one or more |
| -- contributor license agreements. See the NOTICE file distributed with |
| -- this work for additional information regarding copyright ownership. |
| -- The ASF licenses this file to You 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. |
| -- |
| |
| -- -------------------------------- The script used when storeMode is 'db' -------------------------------- |
| -- the table to store GlobalSession data |
| CREATE TABLE IF NOT EXISTS public.global_table |
| ( |
| xid VARCHAR(128) NOT NULL, |
| transaction_id BIGINT, |
| status SMALLINT NOT NULL, |
| application_id VARCHAR(32), |
| transaction_service_group VARCHAR(32), |
| transaction_name VARCHAR(128), |
| timeout INT, |
| begin_time BIGINT, |
| application_data VARCHAR(2000), |
| gmt_create TIMESTAMP(0), |
| gmt_modified TIMESTAMP(0), |
| CONSTRAINT pk_global_table PRIMARY KEY (xid) |
| ); |
| |
| CREATE INDEX idx_global_table_status_gmt_modified ON public.global_table (status, gmt_modified); |
| CREATE INDEX idx_global_table_transaction_id ON public.global_table (transaction_id); |
| |
| -- the table to store BranchSession data |
| CREATE TABLE IF NOT EXISTS public.branch_table |
| ( |
| branch_id BIGINT NOT NULL, |
| xid VARCHAR(128) NOT NULL, |
| transaction_id BIGINT, |
| resource_group_id VARCHAR(32), |
| resource_id VARCHAR(256), |
| branch_type VARCHAR(8), |
| status SMALLINT, |
| client_id VARCHAR(64), |
| application_data VARCHAR(2000), |
| gmt_create TIMESTAMP(6), |
| gmt_modified TIMESTAMP(6), |
| CONSTRAINT pk_branch_table PRIMARY KEY (branch_id) |
| ); |
| |
| CREATE INDEX idx_branch_table_xid ON public.branch_table (xid); |
| |
| -- the table to store lock data |
| CREATE TABLE IF NOT EXISTS public.lock_table |
| ( |
| row_key VARCHAR(128) NOT NULL, |
| xid VARCHAR(128), |
| transaction_id BIGINT, |
| branch_id BIGINT NOT NULL, |
| resource_id VARCHAR(256), |
| table_name VARCHAR(32), |
| pk VARCHAR(36), |
| status SMALLINT NOT NULL DEFAULT 0, |
| gmt_create TIMESTAMP(0), |
| gmt_modified TIMESTAMP(0), |
| CONSTRAINT pk_lock_table PRIMARY KEY (row_key) |
| ); |
| |
| comment on column public.lock_table.status is '0:locked ,1:rollbacking'; |
| CREATE INDEX idx_lock_table_branch_id ON public.lock_table (branch_id); |
| CREATE INDEX idx_lock_table_xid ON public.lock_table (xid); |
| CREATE INDEX idx_lock_table_status ON public.lock_table (status); |
| |
| CREATE TABLE distributed_lock ( |
| lock_key VARCHAR(20) NOT NULL, |
| lock_value VARCHAR(20) NOT NULL, |
| expire BIGINT NOT NULL, |
| CONSTRAINT pk_distributed_lock_table PRIMARY KEY (lock_key) |
| ); |
| |
| INSERT INTO distributed_lock (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0); |
| INSERT INTO distributed_lock (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0); |
| INSERT INTO distributed_lock (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0); |
| INSERT INTO distributed_lock (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0); |
| |
| CREATE TABLE IF NOT EXISTS vgroup_table |
| ( |
| vGroup VARCHAR(255), |
| namespace VARCHAR(255), |
| cluster VARCHAR(255), |
| PRIMARY KEY (vGroup) |
| ); |