commit cbe9c2431a98f52d4df6ce3cc9b3311b5202fe44
parent d406945fa9c1e8f792dcbdc26260829b8af2a84c
Author: Florian Dold <florian@dold.me>
Date: Wed, 26 Mar 2025 14:43:44 +0100
Revert "partition statistics tables"
This reverts commit af7b61bbe698b9c5aabbc176426d1e2d012121d6.
Diffstat:
1 file changed, 136 insertions(+), 430 deletions(-)
diff --git a/src/exchangedb/exchange-xx10.sql b/src/exchangedb/exchange-xx10.sql
@@ -18,7 +18,7 @@
-- @brief Tables for statistics
-- @author Christian Grothoff
--- FIXME: figure out if we do need NULL fo h_payto!
+-- FIXME: add partitions and figure out if we do need NULL fo h_payto!
BEGIN;
@@ -70,122 +70,50 @@ CREATE INDEX exchange_statistic_bucket_meta_by_origin
(origin);
-CREATE FUNCTION create_table_exchange_statistic_bucket_counter (
- IN partition_suffix TEXT DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM create_partitioned_table (
- 'CREATE TABLE %I'
- '(bmeta_serial_id INT8 NOT NULL'
- ' REFERENCES exchange_statistic_bucket_meta (bmeta_serial_id) ON DELETE CASCADE'
- ',h_payto BYTEA CHECK (LENGTH(h_payto)=32)'
- ',bucket_start INT8 NOT NULL'
- ',bucket_range statistic_range NOT NULL'
- ',cumulative_number INT8 NOT NULL'
- ',UNIQUE (h_payto,bmeta_serial_id,bucket_start,bucket_range)'
- ') %s;'
- ,'exchange_statistic_bucket_counter'
- ,'PARTITION BY HASH (h_payto)'
- ,partition_suffix
- );
- PERFORM comment_partitioned_table(
- 'various numeric statistics (cumulative counters) being tracked by bucket into which they fall'
- ,'exchange_statistic_bucket_counter'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'identifies what the statistic is about'
- ,'bmeta_serial_id'
- ,'exchange_statistic_bucket_counter'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics'
- ,'h_payto'
- ,'exchange_statistic_bucket_counter'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'start date for the bucket in seconds since the epoch'
- ,'bucket_start'
- ,'exchange_statistic_bucket_counter'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'range of the bucket'
- ,'bucket_range'
- ,'exchange_statistic_bucket_counter'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'aggregate (sum) of tracked by the statistic; what exactly is tracked is determined by the keyword'
- ,'cumulative_number'
- ,'exchange_statistic_bucket_counter'
- ,partition_suffix
- );
-END $$;
-
-
-CREATE FUNCTION create_table_exchange_statistic_bucket_amount (
- IN partition_suffix TEXT DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM create_partitioned_table (
- 'CREATE TABLE %I'
- '(bmeta_serial_id INT8 NOT NULL'
- ' REFERENCES exchange_statistic_bucket_meta (bmeta_serial_id) ON DELETE CASCADE'
- ',h_payto BYTEA CHECK (LENGTH(h_payto)=32)'
- ',bucket_start INT8 NOT NULL'
- ',bucket_range statistic_range NOT NULL'
- ',cumulative_value taler_amount NOT NULL'
- ',UNIQUE (h_payto,bmeta_serial_id,bucket_start,bucket_range)'
- ') %s;'
- ,'exchange_statistic_bucket_amount'
- ,'PARTITION BY HASH(h_payto)'
- ,partition_suffix
- );
- PERFORM comment_partitioned_table (
- 'various amount statistics (in various currencies) being tracked',
- ,'exchange_statistic_bucket_amount'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'identifies what the statistic is about'
- ,'bmeta_serial_id'
- ,'exchange_statistic_bucket_amount'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column (
- 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics',
- ,'h_payto'
- ,'exchange_statistic_bucket_amount'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'start date for the bucket in seconds since the epoch'
- ,'bucket_start'
- ,'exchange_statistic_bucket_amount'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'range of the bucket'
- ,'bucket_range'
- ,'exchange_statistic_bucket_amount'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'amount being tracked'
- ,'cumulative_value'
- ,'exchange_statistic_bucket_amount'
- ,partition_suffix
- );
-END $$;
+CREATE TABLE exchange_statistic_bucket_counter
+ (bmeta_serial_id INT8 NOT NULL
+ REFERENCES exchange_statistic_bucket_meta (bmeta_serial_id) ON DELETE CASCADE
+ ,h_payto BYTEA CHECK (LENGTH(h_payto)=32)
+ ,bucket_start INT8 NOT NULL
+ ,bucket_range statistic_range NOT NULL
+ ,cumulative_number INT8 NOT NULL
+ ,UNIQUE (bmeta_serial_id,h_payto,bucket_start,bucket_range)
+ );
+COMMENT ON TABLE exchange_statistic_bucket_counter
+ IS 'various numeric statistics (cumulative counters) being tracked by bucket into which they fall';
+COMMENT ON COLUMN exchange_statistic_bucket_counter.bmeta_serial_id
+ IS 'identifies what the statistic is about';
+COMMENT ON COLUMN exchange_statistic_bucket_counter.h_payto
+ IS 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics';
+COMMENT ON COLUMN exchange_statistic_bucket_counter.bucket_start
+ IS 'start date for the bucket in seconds since the epoch';
+COMMENT ON COLUMN exchange_statistic_bucket_counter.bucket_range
+ IS 'range of the bucket';
+COMMENT ON COLUMN exchange_statistic_bucket_counter.cumulative_number
+ IS 'aggregate (sum) of tracked by the statistic; what exactly is tracked is determined by the keyword';
+
+
+CREATE TABLE exchange_statistic_bucket_amount
+ (bmeta_serial_id INT8 NOT NULL
+ REFERENCES exchange_statistic_bucket_meta (bmeta_serial_id) ON DELETE CASCADE
+ ,h_payto BYTEA CHECK (LENGTH(h_payto)=32)
+ ,bucket_start INT8 NOT NULL
+ ,bucket_range statistic_range NOT NULL
+ ,cumulative_value taler_amount NOT NULL
+ ,UNIQUE (bmeta_serial_id,h_payto,bucket_start,bucket_range)
+ );
+COMMENT ON TABLE exchange_statistic_bucket_amount
+ IS 'various amount statistics (in various currencies) being tracked';
+COMMENT ON COLUMN exchange_statistic_bucket_amount.bmeta_serial_id
+ IS 'identifies what the statistic is about';
+COMMENT ON COLUMN exchange_statistic_bucket_amount.h_payto
+ IS 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics';
+COMMENT ON COLUMN exchange_statistic_bucket_amount.bucket_start
+ IS 'start date for the bucket in seconds since the epoch';
+COMMENT ON COLUMN exchange_statistic_bucket_amount.bucket_range
+ IS 'range of the bucket';
+COMMENT ON COLUMN exchange_statistic_bucket_amount.cumulative_value
+ IS 'amount being tracked';
-- -------------- Interval statistics ---------------------
@@ -224,269 +152,95 @@ CREATE INDEX exchange_statistic_interval_meta_by_origin
ON exchange_statistic_interval_meta
(origin);
-
-CREATE FUNCTION create_table_exchange_statistic_counter_event (
- IN partition_suffix TEXT DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE %I'
- '(nevent_serial_id INT8 GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY'
- ',imeta_serial_id INT8'
- ' REFERENCES exchange_statistic_interval_meta (imeta_serial_id) ON DELETE CASCADE'
- ',h_payto BYTEA CHECK (LENGTH(h_payto)=32)'
- ',slot INT8 NOT NULL'
- ',delta INT8 NOT NULL'
- ',UNIQUE (h_payto,imeta_serial_id,slot)'
- ') %s ;'
- ,'exchange_statistic_counter_event'
- ,'PARTITION BY HASH(h_payto)'
- ,partition_suffix
- );
- PERFORM comment_partitioned_table(
- 'number to decrement an interval statistic by when a certain time value is reached';
- ,'exchange_statistic_counter_event'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'unique identifier for this number event'
- ,'nevent_serial_id'
- ,'exchange_statistic_counter_event'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'identifies what the statistic is about; must be of stype number'
- ,'imeta_serial_id'
- ,'exchange_statistic_counter_event'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics'
- ,'h_payto'
- ,'exchange_statistic_counter_event'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'identifies the time slot at which the given event(s) happened, rounded down by the respective precisions value'
- ,'slot'
- ,'exchange_statistic_counter_event'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'total cumulative number that was added at the time identified by slot'
- ,'delta'
- ,'exchange_statistic_counter_event'
- ,partition_suffix
- );
-END $$;
-
-
-CREATE FUNCTION create_table_exchange_statistic_interval_counter (
- IN partition_suffix TEXT DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE %I'
- '(imeta_serial_id INT8 NOT NULL'
- ' REFERENCES exchange_statistic_interval_meta (imeta_serial_id) ON DELETE CASCADE'
- ',h_payto BYTEA CHECK (LENGTH(h_payto)=32)'
- ',range INT8 NOT NULL'
- ',event_delimiter INT8 NOT NULL'
- ',cumulative_number INT8 NOT NULL'
- ',UNIQUE (h_payto,imeta_serial_id,range)'
- ') %s ;'
- ,'exchange_statistic_interval_counter'
- ,'PARTITION BY HASH(h_payto)'
- ,partition_suffix
- );
- PERFORM comment_partitioned_table(
- 'various numeric statistics (cumulative counters) being tracked'
- ,'exchange_statistic_interval_counter'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'identifies what the statistic is about'
- ,'imeta_serial_id'
- ,'exchange_statistic_interval_counter'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics'
- ,'h_payto'
- ,'exchange_statistic_interval_counter'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'for which range is this the counter; note that the cumulative_number excludes the values already stored in smaller ranges'
- ,'range'
- ,'exchange_statistic_interval_counter'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'determines the last event currently included in the interval'
- ,'event_delimiter'
- ,'exchange_statistic_interval_counter'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'aggregate (sum) of tracked by the statistic; what exactly is tracked is determined by the keyword'
- ,'cumulative_number'
- ,'exchange_statistic_interval_counter'
- ,partition_suffix
- );
-END $$;
-
-
-CREATE FUNCTION foreign_table_exchange_statistic_interval_counter()
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name TEXT DEFAULT 'exchange_statistic_interval_counter';
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE ' || table_name ||
- ' ADD CONSTRAINT ' || table_name || '_event_delimiter_foreign_key'
- ' FOREIGN KEY (event_delimiter) '
- ' REFERENCES exchange_statistic_counter_event (nevent_serial_id) ON DELETE RESTRICT'
- );
-END $$;
-
-
-CREATE FUNCTION create_table_exchange_statistic_amount_event (
- IN partition_suffix TEXT DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE %I'
- '(aevent_serial_id INT8 GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY'
- ',imeta_serial_id INT8'
- ' REFERENCES exchange_statistic_interval_meta (imeta_serial_id) ON DELETE CASCADE'
- ',h_payto BYTEA CHECK (LENGTH(h_payto)=32)'
- ',slot INT8 NOT NULL'
- ',delta taler_amount NOT NULL'
- ',CONSTRAINT event_key UNIQUE (h_payto,imeta_serial_id,slot)'
- ') %s ;'
- ,'exchange_statistic_amount_event'
- ,'PARTITION BY HASH(h_payto)'
- ,partition_suffix
- );
- PERFORM comment_partitioned_table(
- 'amount to decrement an interval statistic by when a certain time value is reached'
- ,'exchange_statistic_amount_event'
- ,partition_suffix
- );
-PERFORM comment_partitioned_column(
- 'unique identifier for this amount event'
- ,'aevent_serial_id'
- ,'exchange_statistic_amount_event'
- ,partition_suffix
- );
-PERFORM comment_partitioned_column
- 'identifies what the statistic is about; must be of clazz interval and of stype amount'
- ,'imeta_serial_id'
- ,'exchange_statistic_amount_event'
- ,partition_suffix
- );
-PERFORM comment_partitioned_column
- 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics'
- ,'h_payto'
- ,'exchange_statistic_amount_event'
- ,partition_suffix
- );
-PERFORM comment_partitioned_column
- 'identifies the time slot at which the given event(s) happened'
- ,'slot'
- ,'exchange_statistic_amount_event'
- ,partition_suffix
- );
-PERFORM comment_partitioned_column
- 'total cumulative amount that was added at the time identified by slot'
- ,'delta'
- ,'exchange_statistic_amount_event'
- ,partition_suffix
- );
-END $$;
-
-
-
-CREATE FUNCTION create_table_exchange_statistic_interval_amount (
- IN partition_suffix TEXT DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE %I'
- '(imeta_serial_id INT8 NOT NULL'
- ' REFERENCES exchange_statistic_interval_meta (imeta_serial_id) ON DELETE CASCADE'
- ',h_payto BYTEA CHECK (LENGTH(h_payto)=32)'
- ',event_delimiter INT8 NOT NULL'
- ',range INT8 NOT NULL'
- ',cumulative_value taler_amount NOT NULL'
- ',UNIQUE (h_payto,imeta_serial_id,range)'
- ') %s ;'
- ,'exchange_statistic_interval_amount'
- ,'PARTITION BY HASH(h_payto)'
- ,partition_suffix
- );
- PERFORM comment_partitioned_table(
- 'various amount statistics being tracked'
- ,'exchange_statistic_interval_amount'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'identifies what the statistic is about'
- ,'imeta_serial_id'
- ,'exchange_statistic_interval_amount'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics'
- ,'h_payto'
- ,'exchange_statistic_interval_amount'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'for which range is this the counter; note that the cumulative_number excludes the values already stored in smaller ranges'
- ,'range'
- ,'exchange_statistic_interval_amount'
- ,partition_suffix
- );
- PERFORM comment_partitioned_column(
- 'amount affected by the event'
- ,'cumulative_value'
- ,'exchange_statistic_interval_amount'
- ,partition_suffix
- );
-END $$;
-
-
-CREATE FUNCTION foreign_table_exchange_statistic_interval_amount()
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name TEXT DEFAULT 'exchange_statistic_interval_amount';
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE ' || table_name ||
- ' ADD CONSTRAINT ' || table_name || '_event_delimiter_foreign_key'
- ' FOREIGN KEY (event_delimiter) '
- ' REFERENCES exchange_statistic_amount_event (aevent_serial_id) ON DELETE RESTRICT'
- );
-END $$;
-
+CREATE TABLE exchange_statistic_counter_event
+ (nevent_serial_id INT8 GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
+ ,imeta_serial_id INT8
+ REFERENCES exchange_statistic_interval_meta (imeta_serial_id) ON DELETE CASCADE
+ ,h_payto BYTEA CHECK (LENGTH(h_payto)=32)
+ ,slot INT8 NOT NULL
+ ,delta INT8 NOT NULL
+ ,UNIQUE (imeta_serial_id, h_payto, slot)
+ );
+COMMENT ON TABLE exchange_statistic_counter_event
+ IS 'number to decrement an interval statistic by when a certain time value is reached';
+COMMENT ON COLUMN exchange_statistic_counter_event.nevent_serial_id
+ IS 'unique identifier for this number event';
+COMMENT ON COLUMN exchange_statistic_counter_event.imeta_serial_id
+ IS 'identifies what the statistic is about; must be of stype number';
+COMMENT ON COLUMN exchange_statistic_counter_event.h_payto
+ IS 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics';
+COMMENT ON COLUMN exchange_statistic_counter_event.slot
+ IS 'identifies the time slot at which the given event(s) happened, rounded down by the respective precisions value';
+COMMENT ON COLUMN exchange_statistic_counter_event.delta
+ IS 'total cumulative number that was added at the time identified by slot';
+
+CREATE TABLE exchange_statistic_interval_counter
+ (imeta_serial_id INT8 NOT NULL
+ REFERENCES exchange_statistic_interval_meta (imeta_serial_id) ON DELETE CASCADE
+ ,h_payto BYTEA CHECK (LENGTH(h_payto)=32)
+ ,range INT8 NOT NULL
+ ,event_delimiter INT8 NOT NULL
+ REFERENCES exchange_statistic_counter_event (nevent_serial_id) ON DELETE RESTRICT
+ ,cumulative_number INT8 NOT NULL
+ ,UNIQUE (imeta_serial_id,h_payto,range)
+ );
+COMMENT ON TABLE exchange_statistic_interval_counter
+ IS 'various numeric statistics (cumulative counters) being tracked';
+COMMENT ON COLUMN exchange_statistic_interval_counter.imeta_serial_id
+ IS 'identifies what the statistic is about';
+COMMENT ON COLUMN exchange_statistic_interval_counter.h_payto
+ IS 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics';
+COMMENT ON COLUMN exchange_statistic_interval_counter.range
+ IS 'for which range is this the counter; note that the cumulative_number excludes the values already stored in smaller ranges';
+COMMENT ON COLUMN exchange_statistic_interval_counter.event_delimiter
+ IS 'determines the last event currently included in the interval';
+COMMENT ON COLUMN exchange_statistic_interval_counter.cumulative_number
+ IS 'aggregate (sum) of tracked by the statistic; what exactly is tracked is determined by the keyword';
+
+
+CREATE TABLE exchange_statistic_amount_event
+ (aevent_serial_id INT8 GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
+ ,imeta_serial_id INT8
+ REFERENCES exchange_statistic_interval_meta (imeta_serial_id) ON DELETE CASCADE
+ ,h_payto BYTEA CHECK (LENGTH(h_payto)=32)
+ ,slot INT8 NOT NULL
+ ,delta taler_amount NOT NULL
+ ,CONSTRAINT event_key UNIQUE (imeta_serial_id, h_payto, slot)
+ );
+COMMENT ON TABLE exchange_statistic_amount_event
+ IS 'amount to decrement an interval statistic by when a certain time value is reached';
+COMMENT ON COLUMN exchange_statistic_amount_event.aevent_serial_id
+ IS 'unique identifier for this amount event';
+COMMENT ON COLUMN exchange_statistic_amount_event.imeta_serial_id
+ IS 'identifies what the statistic is about; must be of clazz interval and of stype amount';
+COMMENT ON COLUMN exchange_statistic_amount_event.h_payto
+ IS 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics';
+COMMENT ON COLUMN exchange_statistic_amount_event.slot
+ IS 'identifies the time slot at which the given event(s) happened';
+COMMENT ON COLUMN exchange_statistic_amount_event.delta
+ IS 'total cumulative amount that was added at the time identified by slot';
+
+
+CREATE TABLE exchange_statistic_interval_amount
+ (imeta_serial_id INT8 NOT NULL
+ REFERENCES exchange_statistic_interval_meta (imeta_serial_id) ON DELETE CASCADE
+ ,h_payto BYTEA CHECK (LENGTH(h_payto)=32)
+ ,event_delimiter INT8 NOT NULL
+ REFERENCES exchange_statistic_amount_event (aevent_serial_id) ON DELETE RESTRICT
+ ,range INT8 NOT NULL
+ ,cumulative_value taler_amount NOT NULL
+ ,UNIQUE (imeta_serial_id,h_payto,range)
+ );
+COMMENT ON TABLE exchange_statistic_interval_amount
+ IS 'various amount statistics being tracked';
+COMMENT ON COLUMN exchange_statistic_interval_amount.imeta_serial_id
+ IS 'identifies what the statistic is about';
+COMMENT ON COLUMN exchange_statistic_interval_amount.h_payto
+ IS 'identifies an account (hash of normalized payto) for which the statistic is kept, NULL for global statistics';
+COMMENT ON COLUMN exchange_statistic_interval_amount.range
+ IS 'for which range is this the counter; note that the cumulative_number excludes the values already stored in smaller ranges';
+COMMENT ON COLUMN exchange_statistic_interval_amount.cumulative_value
+ IS 'amount affected by the event';
CREATE TYPE exchange_statistic_interval_number_get_return_value
AS
@@ -494,7 +248,7 @@ CREATE TYPE exchange_statistic_interval_number_get_return_value
,rvalue INT8
);
COMMENT ON TYPE exchange_statistic_interval_number_get_return_value
- 'Return type for exchange_statistic_interval_number_get stored procedure';
+ IS 'Return type for exchange_statistic_interval_number_get stored procedure';
CREATE TYPE exchange_statistic_interval_amount_get_return_value
AS
@@ -502,56 +256,8 @@ CREATE TYPE exchange_statistic_interval_amount_get_return_value
,rvalue taler_amount
);
COMMENT ON TYPE exchange_statistic_interval_amount_get_return_value
- 'Return type for exchange_statistic_interval_amount_get stored procedure';
-
+ IS 'Return type for exchange_statistic_interval_amount_get stored procedure';
-INSERT INTO exchange_tables
- (name
- ,version
- ,action
- ,partitioned
- ,by_range)
- VALUES
- ('exchange_statistic_bucket_counter'
- ,'exchange-xx10'
- ,'create'
- ,TRUE
- ,FALSE),
- ('exchange_statistic_bucket_amount'
- ,'exchange-xx10'
- ,'create'
- ,TRUE
- ,FALSE),
- ('exchange_statistic_counter_event'
- ,'exchange-xx10'
- ,'create'
- ,TRUE
- ,FALSE),
- ('exchange_statistic_interval_counter'
- ,'exchange-xx10'
- ,'create'
- ,TRUE
- ,FALSE),
- ('exchange_statistic_interval_counter'
- ,'exchange-xx10'
- ,'foreign'
- ,TRUE
- ,FALSE),
- ('exchange_statistic_amount_event'
- ,'exchange-xx10'
- ,'create'
- ,TRUE
- ,FALSE),
- ('exchange_statistic_interval_amount'
- ,'exchange-xx10'
- ,'create'
- ,TRUE
- ,FALSE),
- ('exchange_statistic_interval_amount'
- ,'exchange-xx10'
- ,'foreign'
- ,TRUE
- ,FALSE);
COMMIT;