From dedb4627b2cfab2896570413b4f2305c6f89f40d Mon Sep 17 00:00:00 2001 From: Sumit Jaiswal Date: Mon, 23 Sep 2024 15:54:00 +0000 Subject: [PATCH] Add Automated Tests to Validate Logical Replication for partitioned tables Signed-off-by: Sumit Jaiswal --- test/JDBC/expected/partition-replication.out | 1889 +++++++++++++++++ .../replication/partition-replication.mix | 1481 +++++++++++++ 2 files changed, 3370 insertions(+) create mode 100644 test/JDBC/expected/partition-replication.out create mode 100644 test/JDBC/replication/partition-replication.mix diff --git a/test/JDBC/expected/partition-replication.out b/test/JDBC/expected/partition-replication.out new file mode 100644 index 00000000000..86f02b5c87f --- /dev/null +++ b/test/JDBC/expected/partition-replication.out @@ -0,0 +1,1889 @@ + + + + +-- tsql + + +-- Create partitioned tables on both publisher and subscriber +-- with all the supported datatypes. +-- To create partitioned tables, we need to create partition function +-- and partition scheme on both publisher and subscriber. +-------------------------------------------------- +--- Setup partitioned tables on publisher +-------------------------------------------------- +-------------------------------------------------- +--- CREATE Partition Function +-------------------------------------------------- +-- using local variable in args +declare @a int = 0; +declare @b int = 500; +declare @c int = 1000; +CREATE PARTITION FUNCTION IntPartitionFunction (int) +AS RANGE RIGHT FOR VALUES (@a, @b, @c); +GO + + +-- explicit schema can also be specified with paramater type +CREATE PARTITION FUNCTION BigIntPartitionFunction (sys.bigint) +AS RANGE RIGHT FOR VALUES (0, 10000, 100, 1000); +GO + +CREATE PARTITION FUNCTION SmallIntPartitionFunction (smallint) +AS RANGE RIGHT FOR VALUES (cast(32767 as bigint), -32768, 0); +GO + +-- explicit schema can also be specified with paramater type +CREATE PARTITION FUNCTION TinyIntPartitionFunction (sys.tinyint) +AS RANGE RIGHT FOR VALUES (0, cast(255 as varchar), 128); +GO + +CREATE PARTITION FUNCTION DecimalPartitionFunction (decimal(10, 5)) +AS RANGE RIGHT FOR VALUES (0.0, 300.0, 200.0, 100.0); +GO + +CREATE PARTITION FUNCTION NumericPartitionFunction (numeric(5, 2)) +AS RANGE RIGHT FOR VALUES (0.0, 30.0, 10.0, 20.0); +GO + +CREATE PARTITION FUNCTION MoneyPartitionFunction (MONEY) +AS RANGE RIGHT FOR VALUES ($2.56789, ¥4.91, $3.56789); +GO + +CREATE PARTITION FUNCTION SmallMoneyPartitionFunction (SMALLMONEY) +AS RANGE RIGHT FOR VALUES ($2.56789, ¥4.91, $3.56789); +GO + +CREATE PARTITION FUNCTION DatePartitionFunction (date) +AS RANGE RIGHT FOR VALUES ('2022-07-01', '2022-01-01','2023-01-01'); +GO + +-- should implicity cast it to input type +CREATE PARTITION FUNCTION DateTimePartitionFunction (datetime) +AS RANGE RIGHT FOR VALUES ('2022-01-01', '2022-07-01 00:00:00', '2019-01-01 00:00:00'); +GO + +CREATE PARTITION FUNCTION DateTime2PartitionFunction (datetime2(3)) +AS RANGE RIGHT FOR VALUES ('2022-01-01 00:00:00.000', '2022-07-01 00:00:00.000', '2019-01-01 00:00:00.000'); +GO + +CREATE PARTITION FUNCTION SmallDateTimePartitionFunction (smalldatetime) +AS RANGE RIGHT FOR VALUES ('2022-01-01', '2022-07-01', '2019-01-01'); +GO + +CREATE PARTITION FUNCTION CharPartitionFunction (char(5)) +AS RANGE RIGHT FOR VALUES ('A', 'F', 'K', 'P', 'U', 'Z', 'D'); +GO + +CREATE PARTITION FUNCTION VarCharPartitionFunction (varchar(10)) +AS RANGE RIGHT FOR VALUES ('Apple', 'Banana', 'Mango', 'Cherry', 'Date'); +GO + +CREATE PARTITION FUNCTION NVarCharPartitionFunction (nvarchar(10)) +AS RANGE RIGHT FOR VALUES (N'Apple', N'Banana', N'Mango', N'Cherry', N'Date'); +GO + +CREATE PARTITION FUNCTION NCharPartitionFunction (nchar(5)) +AS RANGE RIGHT FOR VALUES (N'A', N'F', N'K', N'P', N'U', N'Z', N'B'); +GO + +CREATE PARTITION FUNCTION BinaryPartitionFunction (binary(4)) +AS RANGE RIGHT FOR VALUES (0x000, 0x800, 0x400, 0xC000); +GO + +CREATE PARTITION FUNCTION VarBinaryPartitionFunction (varbinary(8)) +AS RANGE RIGHT FOR VALUES (0x0000000000000000, 0x8000000000000000, 0x4000000000000000, 0xC000000000000000); +GO + +CREATE PARTITION FUNCTION UniqueIdentifierPartitionFunction (uniqueidentifier) +AS RANGE RIGHT FOR VALUES ('00000000-0000-0000-0000-000000000000', 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF', '6F9619FF-8B86-D011-B42D-00C04FC964FF'); +GO + + + +-------------------------------------------------- +--- CREATE Partition Scheme +-------------------------------------------------- +-- without all option +-- filegroups are equal to partition that will generated by function +CREATE PARTITION SCHEME IntPartitionScheme AS +PARTITION IntPartitionFunction +TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]); +GO + +-- filgroups are more than partition that will generated by function +CREATE PARTITION SCHEME BigIntPartitionScheme AS +PARTITION BigIntPartitionFunction +TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]); +GO + +-- with all option +CREATE PARTITION SCHEME SmallIntPartitionScheme AS +PARTITION SmallIntPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME TinyIntPartitionScheme AS +PARTITION TinyIntPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DecimalPartitionScheme AS +PARTITION DecimalPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NumericPartitionScheme AS +PARTITION NumericPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME MoneyPartitionScheme AS +PARTITION MoneyPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME SmallMoneyPartitionScheme AS +PARTITION SmallMoneyPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DatePartitionScheme AS +PARTITION DatePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DateTimePartitionScheme AS +PARTITION DateTimePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DateTime2PartitionScheme AS +PARTITION DateTime2PartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME SmallDateTimePartitionScheme AS +PARTITION SmallDateTimePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME CharPartitionScheme AS +PARTITION CharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME VarCharPartitionScheme AS +PARTITION VarCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NVarCharPartitionScheme AS +PARTITION NVarCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NCharPartitionScheme AS +PARTITION NCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME BinaryPartitionScheme AS +PARTITION BinaryPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME VarBinaryPartitionScheme AS +PARTITION VarBinaryPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME UniqueIdentifierPartitionScheme AS +PARTITION UniqueIdentifierPartitionFunction +ALL TO ([PRIMARY]); +GO + +--------------------------------------------------------------------------- +--- CREATE PARTITIONED TABLES using PARTITION SCHEME for different datatypes +--------------------------------------------------------------------------- +-- int data type +CREATE TABLE partition_vu_prepare_int_table ( + Value sys.varchar(50), + Id INT PRIMARY KEY +) ON IntPartitionScheme(Id); +GO + +-- bigint data type +CREATE TABLE partition_vu_prepare_bigint_table ( + Id BIGINT PRIMARY KEY, + Value sys.varchar(50) +) ON BigIntPartitionScheme--this is comment should get ignored +(Id); +GO + +-- smallint data type +CREATE TABLE partition_vu_prepare_smallint_table ( + Id SMALLINT PRIMARY KEY, + Value sys.varchar(50) +) ON SmallIntPartitionScheme(Id); +GO + +-- tinyint data type +CREATE TABLE partition_vu_prepare_tinyint_table ( + Id TINYINT PRIMARY KEY, + Value sys.varchar(50) +) ON TinyIntPartitionScheme(Id); +GO + +-- decimal data type +CREATE TABLE partition_vu_prepare_decimal_table ( + Id DECIMAL(10, 5) PRIMARY KEY, + Value sys.varchar(50) +) ON DecimalPartitionScheme(Id); +GO + +-- numeric data type +CREATE TABLE partition_vu_prepare_numeric_table ( + Id NUMERIC(5, 2) PRIMARY KEY, + Value sys.varchar(50) +) ON NumericPartitionScheme(Id); +GO + +-- money data type +CREATE TABLE partition_vu_prepare_money_table ( + Id MONEY PRIMARY KEY, + Value sys.varchar(50) +) ON MoneyPartitionScheme(Id); +GO + +-- smallmoney data type +CREATE TABLE partition_vu_prepare_smallmoney_table ( + Id SMALLMONEY PRIMARY KEY, + Value sys.varchar(50) +) ON SmallMoneyPartitionScheme(Id); +GO + +-- date data type +CREATE TABLE partition_vu_prepare_date_table ( + Id DATE PRIMARY KEY, + Value sys.varchar(50) +) ON DatePartitionScheme(Id); +GO + +-- datetime data type +CREATE TABLE partition_vu_prepare_datetime_table ( + Id DATETIME PRIMARY KEY, + Value sys.varchar(50) +) ON DateTimePartitionScheme(Id); +GO + +-- datetime2 data type +CREATE TABLE partition_vu_prepare_datetime2_table ( + Id DATETIME2(3) PRIMARY KEY, + Value sys.varchar(50) +) ON DateTime2PartitionScheme(Id); +GO + +-- smalldatetime data type +CREATE TABLE partition_vu_prepare_smalldatetime_table ( + Id SMALLDATETIME PRIMARY KEY, + Value sys.varchar(50) +) ON SmallDateTimePartitionScheme(Id); +GO + +-- char data type +CREATE TABLE partition_vu_prepare_char_table ( + Id CHAR(5) PRIMARY KEY, + Value sys.varchar(50) +) ON CharPartitionScheme(Id); +GO + +-- varchar data type +CREATE TABLE partition_vu_prepare_varchar_table ( + Id VARCHAR(10) PRIMARY KEY, + Value sys.varchar(50) +) ON VarCharPartitionScheme(Id); +GO + +-- nvarchar data type +CREATE TABLE partition_vu_prepare_nvarchar_table ( + Id NVARCHAR(10) PRIMARY KEY, + Value sys.varchar(50) +) ON NVarCharPartitionScheme(Id); +GO + +-- nchar data type +CREATE TABLE partition_vu_prepare_nchar_table ( + Id NCHAR(5) PRIMARY KEY, + Value sys.varchar(50) +) ON NCharPartitionScheme(Id); +GO + +-- binary data type +CREATE TABLE partition_vu_prepare_binary_table ( + Id BINARY(4) PRIMARY KEY, + Value sys.varchar(50) +) ON BinaryPartitionScheme(Id); +GO + +-- varbinary data type +CREATE TABLE partition_vu_prepare_varbinary_table ( + Id VARBINARY(8) PRIMARY KEY, + Value sys.varchar(50) +) ON VarBinaryPartitionScheme(Id); +GO + +-- uniqueidentifier data type +CREATE TABLE partition_vu_prepare_uniqueidentifier_table ( + Id UNIQUEIDENTIFIER PRIMARY KEY, + Value sys.varchar(50) +) ON UniqueIdentifierPartitionScheme(Id); +GO + + +-- tsql port=8199 + +-------------------------------------------------- +--- Setup partitioned tables on subscriber +-------------------------------------------------- +------------------------------------------------- +--- CREATE Partition Function +-------------------------------------------------- +-- using local variable in args +declare @a int = 0; +declare @b int = 500; +declare @c int = 1000; +CREATE PARTITION FUNCTION IntPartitionFunction (int) +AS RANGE RIGHT FOR VALUES (@a, @b, @c); +GO + + +-- explicit schema can also be specified with paramater type +CREATE PARTITION FUNCTION BigIntPartitionFunction (sys.bigint) +AS RANGE RIGHT FOR VALUES (0, 10000, 100, 1000); +GO + +CREATE PARTITION FUNCTION SmallIntPartitionFunction (smallint) +AS RANGE RIGHT FOR VALUES (cast(32767 as bigint), -32768, 0); +GO + +-- explicit schema can also be specified with paramater type +CREATE PARTITION FUNCTION TinyIntPartitionFunction (sys.tinyint) +AS RANGE RIGHT FOR VALUES (0, cast(255 as varchar), 128); +GO + +CREATE PARTITION FUNCTION DecimalPartitionFunction (decimal(10, 5)) +AS RANGE RIGHT FOR VALUES (0.0, 300.0, 200.0, 100.0); +GO + +CREATE PARTITION FUNCTION NumericPartitionFunction (numeric(5, 2)) +AS RANGE RIGHT FOR VALUES (0.0, 30.0, 10.0, 20.0); +GO + +CREATE PARTITION FUNCTION MoneyPartitionFunction (MONEY) +AS RANGE RIGHT FOR VALUES ($2.56789, ¥4.91, $3.56789); +GO + +CREATE PARTITION FUNCTION SmallMoneyPartitionFunction (SMALLMONEY) +AS RANGE RIGHT FOR VALUES ($2.56789, ¥4.91, $3.56789); +GO + +CREATE PARTITION FUNCTION DatePartitionFunction (date) +AS RANGE RIGHT FOR VALUES ('2022-07-01', '2022-01-01','2023-01-01'); +GO + +-- should implicity cast it to input type +CREATE PARTITION FUNCTION DateTimePartitionFunction (datetime) +AS RANGE RIGHT FOR VALUES ('2022-01-01', '2022-07-01 00:00:00', '2019-01-01 00:00:00'); +GO + +CREATE PARTITION FUNCTION DateTime2PartitionFunction (datetime2(3)) +AS RANGE RIGHT FOR VALUES ('2022-01-01 00:00:00.000', '2022-07-01 00:00:00.000', '2019-01-01 00:00:00.000'); +GO + +CREATE PARTITION FUNCTION SmallDateTimePartitionFunction (smalldatetime) +AS RANGE RIGHT FOR VALUES ('2022-01-01', '2022-07-01', '2019-01-01'); +GO + +CREATE PARTITION FUNCTION CharPartitionFunction (char(5)) +AS RANGE RIGHT FOR VALUES ('A', 'F', 'K', 'P', 'U', 'Z', 'D'); +GO + +CREATE PARTITION FUNCTION VarCharPartitionFunction (varchar(10)) +AS RANGE RIGHT FOR VALUES ('Apple', 'Banana', 'Mango', 'Cherry', 'Date'); +GO + +CREATE PARTITION FUNCTION NVarCharPartitionFunction (nvarchar(10)) +AS RANGE RIGHT FOR VALUES (N'Apple', N'Banana', N'Mango', N'Cherry', N'Date'); +GO + +CREATE PARTITION FUNCTION NCharPartitionFunction (nchar(5)) +AS RANGE RIGHT FOR VALUES (N'A', N'F', N'K', N'P', N'U', N'Z', N'B'); +GO + +CREATE PARTITION FUNCTION BinaryPartitionFunction (binary(4)) +AS RANGE RIGHT FOR VALUES (0x000, 0x800, 0x400, 0xC000); +GO + +CREATE PARTITION FUNCTION VarBinaryPartitionFunction (varbinary(8)) +AS RANGE RIGHT FOR VALUES (0x0000000000000000, 0x8000000000000000, 0x4000000000000000, 0xC000000000000000); +GO + +CREATE PARTITION FUNCTION UniqueIdentifierPartitionFunction (uniqueidentifier) +AS RANGE RIGHT FOR VALUES ('00000000-0000-0000-0000-000000000000', 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF', '6F9619FF-8B86-D011-B42D-00C04FC964FF'); +GO + + + +-------------------------------------------------- +--- CREATE Partition Scheme +-------------------------------------------------- +-- without all option +-- filegroups are equal to partition that will generated by function +CREATE PARTITION SCHEME IntPartitionScheme AS +PARTITION IntPartitionFunction +TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]); +GO + +-- filgroups are more than partition that will generated by function +CREATE PARTITION SCHEME BigIntPartitionScheme AS +PARTITION BigIntPartitionFunction +TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]); +GO + +-- with all option +CREATE PARTITION SCHEME SmallIntPartitionScheme AS +PARTITION SmallIntPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME TinyIntPartitionScheme AS +PARTITION TinyIntPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DecimalPartitionScheme AS +PARTITION DecimalPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NumericPartitionScheme AS +PARTITION NumericPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME MoneyPartitionScheme AS +PARTITION MoneyPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME SmallMoneyPartitionScheme AS +PARTITION SmallMoneyPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DatePartitionScheme AS +PARTITION DatePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DateTimePartitionScheme AS +PARTITION DateTimePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DateTime2PartitionScheme AS +PARTITION DateTime2PartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME SmallDateTimePartitionScheme AS +PARTITION SmallDateTimePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME CharPartitionScheme AS +PARTITION CharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME VarCharPartitionScheme AS +PARTITION VarCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NVarCharPartitionScheme AS +PARTITION NVarCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NCharPartitionScheme AS +PARTITION NCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME BinaryPartitionScheme AS +PARTITION BinaryPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME VarBinaryPartitionScheme AS +PARTITION VarBinaryPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME UniqueIdentifierPartitionScheme AS +PARTITION UniqueIdentifierPartitionFunction +ALL TO ([PRIMARY]); +GO + +--------------------------------------------------------------------------- +--- CREATE PARTITIONED TABLES using PARTITION SCHEME for different datatypes +--------------------------------------------------------------------------- +-- int data type +CREATE TABLE partition_vu_prepare_int_table ( + Value sys.varchar(50), + Id INT PRIMARY KEY +) ON IntPartitionScheme(Id); +GO + +-- bigint data type +CREATE TABLE partition_vu_prepare_bigint_table ( + Id BIGINT PRIMARY KEY, + Value sys.varchar(50) +) ON BigIntPartitionScheme--this is comment should get ignored +(Id); +GO + +-- smallint data type +CREATE TABLE partition_vu_prepare_smallint_table ( + Id SMALLINT PRIMARY KEY, + Value sys.varchar(50) +) ON SmallIntPartitionScheme(Id); +GO + +-- tinyint data type +CREATE TABLE partition_vu_prepare_tinyint_table ( + Id TINYINT PRIMARY KEY, + Value sys.varchar(50) +) ON TinyIntPartitionScheme(Id); +GO + +-- decimal data type +CREATE TABLE partition_vu_prepare_decimal_table ( + Id DECIMAL(10, 5) PRIMARY KEY, + Value sys.varchar(50) +) ON DecimalPartitionScheme(Id); +GO + +-- numeric data type +CREATE TABLE partition_vu_prepare_numeric_table ( + Id NUMERIC(5, 2) PRIMARY KEY, + Value sys.varchar(50) +) ON NumericPartitionScheme(Id); +GO + +-- money data type +CREATE TABLE partition_vu_prepare_money_table ( + Id MONEY PRIMARY KEY, + Value sys.varchar(50) +) ON MoneyPartitionScheme(Id); +GO + +-- smallmoney data type +CREATE TABLE partition_vu_prepare_smallmoney_table ( + Id SMALLMONEY PRIMARY KEY, + Value sys.varchar(50) +) ON SmallMoneyPartitionScheme(Id); +GO + +-- date data type +CREATE TABLE partition_vu_prepare_date_table ( + Id DATE PRIMARY KEY, + Value sys.varchar(50) +) ON DatePartitionScheme(Id); +GO + +-- datetime data type +CREATE TABLE partition_vu_prepare_datetime_table ( + Id DATETIME PRIMARY KEY, + Value sys.varchar(50) +) ON DateTimePartitionScheme(Id); +GO + +-- datetime2 data type +CREATE TABLE partition_vu_prepare_datetime2_table ( + Id DATETIME2(3) PRIMARY KEY, + Value sys.varchar(50) +) ON DateTime2PartitionScheme(Id); +GO + +-- smalldatetime data type +CREATE TABLE partition_vu_prepare_smalldatetime_table ( + Id SMALLDATETIME PRIMARY KEY, + Value sys.varchar(50) +) ON SmallDateTimePartitionScheme(Id); +GO + +-- char data type +CREATE TABLE partition_vu_prepare_char_table ( + Id CHAR(5) PRIMARY KEY, + Value sys.varchar(50) +) ON CharPartitionScheme(Id); +GO + +-- varchar data type +CREATE TABLE partition_vu_prepare_varchar_table ( + Id VARCHAR(10) PRIMARY KEY, + Value sys.varchar(50) +) ON VarCharPartitionScheme(Id); +GO + +-- nvarchar data type +CREATE TABLE partition_vu_prepare_nvarchar_table ( + Id NVARCHAR(10) PRIMARY KEY, + Value sys.varchar(50) +) ON NVarCharPartitionScheme(Id); +GO + +-- nchar data type +CREATE TABLE partition_vu_prepare_nchar_table ( + Id NCHAR(5) PRIMARY KEY, + Value sys.varchar(50) +) ON NCharPartitionScheme(Id); +GO + +-- binary data type +CREATE TABLE partition_vu_prepare_binary_table ( + Id BINARY(4) PRIMARY KEY, + Value sys.varchar(50) +) ON BinaryPartitionScheme(Id); +GO + +-- varbinary data type +CREATE TABLE partition_vu_prepare_varbinary_table ( + Id VARBINARY(8) PRIMARY KEY, + Value sys.varchar(50) +) ON VarBinaryPartitionScheme(Id); +GO + +-- uniqueidentifier data type +CREATE TABLE partition_vu_prepare_uniqueidentifier_table ( + Id UNIQUEIDENTIFIER PRIMARY KEY, + Value sys.varchar(50) +) ON UniqueIdentifierPartitionScheme(Id); +GO + + +-- tsql +--------------------------------------------------------------------------- +-- Insert some data into the source table before publishing it +-- to verify if initial data sync works fine. +--------------------------------------------------------------------------- +-- Insert values into partition_vu_prepare_int_table +INSERT INTO partition_vu_prepare_int_table (Id, Value) VALUES (1, 'Value 1'); +INSERT INTO partition_vu_prepare_int_table (Id, Value) VALUES (100, 'Value 100'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_bigint_table +INSERT INTO partition_vu_prepare_bigint_table (Id, Value) VALUES (1, 'Value 1'); +INSERT INTO partition_vu_prepare_bigint_table (Id, Value) VALUES (100, 'Value 100'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_smallint_table +INSERT INTO partition_vu_prepare_smallint_table (Id, Value) VALUES (1, 'Value 1'); +INSERT INTO partition_vu_prepare_smallint_table (Id, Value) VALUES (-32768, 'Value -32768'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_tinyint_table +INSERT INTO partition_vu_prepare_tinyint_table (Id, Value) VALUES (1, 'Value 1'); +INSERT INTO partition_vu_prepare_tinyint_table (Id, Value) VALUES (128, 'Value 128'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_decimal_table +INSERT INTO partition_vu_prepare_decimal_table (Id, Value) VALUES (1.0, 'Value 1.0'); +INSERT INTO partition_vu_prepare_decimal_table (Id, Value) VALUES (100.0, 'Value 100.0'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_numeric_table +INSERT INTO partition_vu_prepare_numeric_table (Id, Value) VALUES (1.0, 'Value 1.0'); +INSERT INTO partition_vu_prepare_numeric_table (Id, Value) VALUES (10.0, 'Value 10.0'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_money_table +INSERT INTO partition_vu_prepare_money_table (Id, Value) VALUES (1.0, 'Value 1.0'); +INSERT INTO partition_vu_prepare_money_table (Id, Value) VALUES (2.56789, 'Value 2.56789'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_smallmoney_table +INSERT INTO partition_vu_prepare_smallmoney_table (Id, Value) VALUES (1.0, 'Value 1.0'); +INSERT INTO partition_vu_prepare_smallmoney_table (Id, Value) VALUES (2.56789, 'Value 2.56789'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_date_table +INSERT INTO partition_vu_prepare_date_table (Id, Value) VALUES ('2022-01-01', 'Value 2022-01-01'); +INSERT INTO partition_vu_prepare_date_table (Id, Value) VALUES ('2022-07-01', 'Value 2022-07-01'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_datetime_table +INSERT INTO partition_vu_prepare_datetime_table (Id, Value) VALUES ('2019-01-01', 'Value 2019-01-01'); +INSERT INTO partition_vu_prepare_datetime_table (Id, Value) VALUES ('2022-01-01', 'Value 2022-01-01'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_datetime2_table +INSERT INTO partition_vu_prepare_datetime2_table (Id, Value) VALUES ('2019-01-01 00:00:00.000', 'Value 2019-01-01 00:00:00.000'); +INSERT INTO partition_vu_prepare_datetime2_table (Id, Value) VALUES ('2022-01-01 00:00:00.000', 'Value 2022-01-01 00:00:00.000'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_smalldatetime_table +INSERT INTO partition_vu_prepare_smalldatetime_table (Id, Value) VALUES ('2019-01-01', 'Value 2019-01-01'); +INSERT INTO partition_vu_prepare_smalldatetime_table (Id, Value) VALUES ('2022-01-01', 'Value 2022-01-01'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_char_table +INSERT INTO partition_vu_prepare_char_table (Id, Value) VALUES ('A', 'Value A'); +INSERT INTO partition_vu_prepare_char_table (Id, Value) VALUES ('K', 'Value K'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_varchar_table +INSERT INTO partition_vu_prepare_varchar_table (Id, Value) VALUES ('Apple', 'Value Apple'); +INSERT INTO partition_vu_prepare_varchar_table (Id, Value) VALUES ('Banana', 'Value Banana'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_nvarchar_table +INSERT INTO partition_vu_prepare_nvarchar_table (Id, Value) VALUES (N'Apple', N'Value Apple'); +INSERT INTO partition_vu_prepare_nvarchar_table (Id, Value) VALUES (N'Banana', N'Value Banana'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_nchar_table +INSERT INTO partition_vu_prepare_nchar_table (Id, Value) VALUES (N'A', N'Value A'); +INSERT INTO partition_vu_prepare_nchar_table (Id, Value) VALUES (N'K', N'Value K'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_binary_table +INSERT INTO partition_vu_prepare_binary_table (Id, Value) VALUES (0x0000, 'Value 0x0000'); +INSERT INTO partition_vu_prepare_binary_table (Id, Value) VALUES (0x0400, 'Value 0x0400'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_varbinary_table +INSERT INTO partition_vu_prepare_varbinary_table (Id, Value) VALUES (0x0000000000000000, 'Value 0x0000000000000000'); +INSERT INTO partition_vu_prepare_varbinary_table (Id, Value) VALUES (0x4000000000000000, 'Value 0x4000000000000000'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_uniqueidentifier_table +INSERT INTO partition_vu_prepare_uniqueidentifier_table (Id, Value) VALUES ('00000000-0000-0000-0000-000000000000', 'Value 00000000-0000-0000-0000-000000000000'); +INSERT INTO partition_vu_prepare_uniqueidentifier_table (Id, Value) VALUES ('6F9619FF-8B86-D011-B42D-00C04FC964FF', 'Value 6F9619FF-8B86-D011-B42D-00C04FC964FF'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- tsql port=8199 +---------------------------------------------------- +-- Should not see data yet in the subscriber table +---------------------------------------------------- +SELECT * FROM partition_vu_prepare_int_table; +GO +~~START~~ +varchar#!#int +~~END~~ + + + +-- psql +---------------------------------------------------- +-- ADD source tables to publication +---------------------------------------------------- +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_int_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_bigint_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_smallint_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_tinyint_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_decimal_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_numeric_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_money_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_smallmoney_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_date_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_datetime_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_datetime2_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_smalldatetime_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_char_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_varchar_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_nvarchar_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_nchar_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_binary_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_varbinary_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_uniqueidentifier_table; +GO + + +-- psql port=5433 +---------------------------------------------------- +-- Refresh the subscription +---------------------------------------------------- +ALTER SUBSCRIPTION my_sub REFRESH PUBLICATION; +GO + + +-- Wait for data to get replicated +select pg_sleep(10); +GO +~~START~~ +void + +~~END~~ + + + +-- tsql port=8199 +----------------------------------------------------------- +-- Initial data should have replicated to subscriber now +----------------------------------------------------------- +SELECT * FROM partition_vu_prepare_int_table order by Id; +GO +~~START~~ +varchar#!#int +Value 1#!#1 +Value 100#!#100 +~~END~~ + + +SELECT * FROM partition_vu_prepare_bigint_table order by Id; +GO +~~START~~ +bigint#!#varchar +1#!#Value 1 +100#!#Value 100 +~~END~~ + + +SELECT * FROM partition_vu_prepare_smallint_table order by Id; +GO +~~START~~ +smallint#!#varchar +-32768#!#Value -32768 +1#!#Value 1 +~~END~~ + + +SELECT * FROM partition_vu_prepare_tinyint_table order by Id; +GO +~~START~~ +tinyint#!#varchar +1#!#Value 1 +128#!#Value 128 +~~END~~ + + +SELECT * FROM partition_vu_prepare_decimal_table order by Id; +GO +~~START~~ +numeric#!#varchar +1.00000#!#Value 1.0 +100.00000#!#Value 100.0 +~~END~~ + + +SELECT * FROM partition_vu_prepare_numeric_table order by Id; +GO +~~START~~ +numeric#!#varchar +1.00#!#Value 1.0 +10.00#!#Value 10.0 +~~END~~ + + +SELECT * FROM partition_vu_prepare_money_table order by Id; +GO +~~START~~ +money#!#varchar +1.0000#!#Value 1.0 +2.5679#!#Value 2.56789 +~~END~~ + + +SELECT * FROM partition_vu_prepare_smallmoney_table order by Id; +GO +~~START~~ +smallmoney#!#varchar +1.0000#!#Value 1.0 +2.5679#!#Value 2.56789 +~~END~~ + + +SELECT * FROM partition_vu_prepare_date_table order by Id; +GO +~~START~~ +date#!#varchar +2022-01-01#!#Value 2022-01-01 +2022-07-01#!#Value 2022-07-01 +~~END~~ + + +SELECT * FROM partition_vu_prepare_datetime_table order by Id; +GO +~~START~~ +datetime#!#varchar +2019-01-01 00:00:00.0#!#Value 2019-01-01 +2022-01-01 00:00:00.0#!#Value 2022-01-01 +~~END~~ + + +SELECT * FROM partition_vu_prepare_datetime2_table order by Id; +GO +~~START~~ +datetime2#!#varchar +2019-01-01 00:00:00.000#!#Value 2019-01-01 00:00:00.000 +2022-01-01 00:00:00.000#!#Value 2022-01-01 00:00:00.000 +~~END~~ + + +SELECT * FROM partition_vu_prepare_smalldatetime_table order by Id; +GO +~~START~~ +smalldatetime#!#varchar +2019-01-01 00:00:00.0#!#Value 2019-01-01 +2022-01-01 00:00:00.0#!#Value 2022-01-01 +~~END~~ + + +SELECT * FROM partition_vu_prepare_char_table order by Id; +GO +~~START~~ +char#!#varchar +A #!#Value A +K #!#Value K +~~END~~ + + +SELECT * FROM partition_vu_prepare_varchar_table order by Id; +GO +~~START~~ +varchar#!#varchar +Apple#!#Value Apple +Banana#!#Value Banana +~~END~~ + + +SELECT * FROM partition_vu_prepare_nvarchar_table order by Id; +GO +~~START~~ +nvarchar#!#varchar +Apple#!#Value Apple +Banana#!#Value Banana +~~END~~ + + +SELECT * FROM partition_vu_prepare_nchar_table order by Id; +GO +~~START~~ +nchar#!#varchar +A #!#Value A +K #!#Value K +~~END~~ + + +SELECT * FROM partition_vu_prepare_binary_table order by Id; +GO +~~START~~ +binary#!#varchar +00000000#!#Value 0x0000 +04000000#!#Value 0x0400 +~~END~~ + + +SELECT * FROM partition_vu_prepare_varbinary_table order by Id; +GO +~~START~~ +varbinary#!#varchar +0000000000000000#!#Value 0x0000000000000000 +4000000000000000#!#Value 0x4000000000000000 +~~END~~ + + +SELECT * FROM partition_vu_prepare_uniqueidentifier_table order by Id; +GO +~~START~~ +uniqueidentifier#!#varchar +00000000-0000-0000-0000-000000000000#!#Value 00000000-0000-0000-0000-000000000000 +6F9619FF-8B86-D011-B42D-00C04FC964FF#!#Value 6F9619FF-8B86-D011-B42D-00C04FC964FF +~~END~~ + + + +-- tsql +----------------------------------------------------------- +-- Insert more data into publisher to see if replication works +----------------------------------------------------------- +-- Insert values into partition_vu_prepare_int_table +INSERT INTO partition_vu_prepare_int_table (Id, Value) VALUES (10000, 'Value 10000'); +GO +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_bigint_table +INSERT INTO partition_vu_prepare_bigint_table (Id, Value) VALUES (10000, 'Value 10000'); +INSERT INTO partition_vu_prepare_bigint_table (Id, Value) VALUES (1000000000, 'Value 1000000000'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_smallint_table +INSERT INTO partition_vu_prepare_smallint_table (Id, Value) VALUES (32767, 'Value 32767'); +GO +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_tinyint_table +INSERT INTO partition_vu_prepare_tinyint_table (Id, Value) VALUES (255, 'Value 255'); +GO +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_decimal_table +INSERT INTO partition_vu_prepare_decimal_table (Id, Value) VALUES (200.0, 'Value 200.0'); +INSERT INTO partition_vu_prepare_decimal_table (Id, Value) VALUES (300.0, 'Value 300.0'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_numeric_table +INSERT INTO partition_vu_prepare_numeric_table (Id, Value) VALUES (20.0, 'Value 20.0'); +INSERT INTO partition_vu_prepare_numeric_table (Id, Value) VALUES (30.0, 'Value 30.0'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_money_table +INSERT INTO partition_vu_prepare_money_table (Id, Value) VALUES (4.91, 'Value 4.91'); +GO +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_smallmoney_table +INSERT INTO partition_vu_prepare_smallmoney_table (Id, Value) VALUES (4.91, 'Value 4.91'); +GO +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_date_table +INSERT INTO partition_vu_prepare_date_table (Id, Value) VALUES ('2023-01-01', 'Value 2023-01-01'); +GO +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_datetime_table +INSERT INTO partition_vu_prepare_datetime_table (Id, Value) VALUES ('2022-07-01', 'Value 2022-07-01'); +GO +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_datetime2_table +INSERT INTO partition_vu_prepare_datetime2_table (Id, Value) VALUES ('2022-07-01 00:00:00.000', 'Value 2022-07-01 00:00:00.000'); +GO +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_smalldatetime_table +INSERT INTO partition_vu_prepare_smalldatetime_table (Id, Value) VALUES ('2022-07-01', 'Value 2022-07-01'); +GO +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_char_table +INSERT INTO partition_vu_prepare_char_table (Id, Value) VALUES ('U', 'Value U'); +INSERT INTO partition_vu_prepare_char_table (Id, Value) VALUES ('D', 'Value D'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_varchar_table +INSERT INTO partition_vu_prepare_varchar_table (Id, Value) VALUES ('Mango', 'Value Mango'); +INSERT INTO partition_vu_prepare_varchar_table (Id, Value) VALUES ('Cherry', 'Value Cherry'); +INSERT INTO partition_vu_prepare_varchar_table (Id, Value) VALUES ('Date', 'Value Date'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_nvarchar_table +INSERT INTO partition_vu_prepare_nvarchar_table (Id, Value) VALUES (N'Mango', N'Value Mango'); +INSERT INTO partition_vu_prepare_nvarchar_table (Id, Value) VALUES (N'Cherry', N'Value Cherry'); +INSERT INTO partition_vu_prepare_nvarchar_table (Id, Value) VALUES (N'Date', N'Value Date'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_nchar_table +INSERT INTO partition_vu_prepare_nchar_table (Id, Value) VALUES (N'U', N'Value U'); +INSERT INTO partition_vu_prepare_nchar_table (Id, Value) VALUES (N'B', N'Value B'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_binary_table +INSERT INTO partition_vu_prepare_binary_table (Id, Value) VALUES (0x0800, 'Value 0x0800'); +INSERT INTO partition_vu_prepare_binary_table (Id, Value) VALUES (0x0C000, 'Value 0x0C000'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_varbinary_table +INSERT INTO partition_vu_prepare_varbinary_table (Id, Value) VALUES (0x8000000000000000, 'Value 0x8000000000000000'); +INSERT INTO partition_vu_prepare_varbinary_table (Id, Value) VALUES (0xC000000000000000, 'Value 0xC000000000000000'); +GO +~~ROW COUNT: 1~~ + +~~ROW COUNT: 1~~ + + +-- Insert values into partition_vu_prepare_uniqueidentifier_table +INSERT INTO partition_vu_prepare_uniqueidentifier_table (Id, Value) VALUES ('FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF', 'Value FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF'); +GO +~~ROW COUNT: 1~~ + + + +-- psql +-- Wait for data to get replicated +select pg_sleep(10); +GO +~~START~~ +void + +~~END~~ + + +-- tsql port=8199 +----------------------------------------------------------- +-- Validate that new data's are also replicated +----------------------------------------------------------- +SELECT * FROM partition_vu_prepare_int_table order by Id; +GO +~~START~~ +varchar#!#int +Value 1#!#1 +Value 100#!#100 +Value 10000#!#10000 +~~END~~ + + +SELECT * FROM partition_vu_prepare_bigint_table order by Id; +GO +~~START~~ +bigint#!#varchar +1#!#Value 1 +100#!#Value 100 +10000#!#Value 10000 +1000000000#!#Value 1000000000 +~~END~~ + + +SELECT * FROM partition_vu_prepare_smallint_table order by Id; +GO +~~START~~ +smallint#!#varchar +-32768#!#Value -32768 +1#!#Value 1 +32767#!#Value 32767 +~~END~~ + + +SELECT * FROM partition_vu_prepare_tinyint_table order by Id; +GO +~~START~~ +tinyint#!#varchar +1#!#Value 1 +128#!#Value 128 +255#!#Value 255 +~~END~~ + + +SELECT * FROM partition_vu_prepare_decimal_table order by Id; +GO +~~START~~ +numeric#!#varchar +1.00000#!#Value 1.0 +100.00000#!#Value 100.0 +200.00000#!#Value 200.0 +300.00000#!#Value 300.0 +~~END~~ + + +SELECT * FROM partition_vu_prepare_numeric_table order by Id; +GO +~~START~~ +numeric#!#varchar +1.00#!#Value 1.0 +10.00#!#Value 10.0 +20.00#!#Value 20.0 +30.00#!#Value 30.0 +~~END~~ + + +SELECT * FROM partition_vu_prepare_money_table order by Id; +GO +~~START~~ +money#!#varchar +1.0000#!#Value 1.0 +2.5679#!#Value 2.56789 +4.9100#!#Value 4.91 +~~END~~ + + +SELECT * FROM partition_vu_prepare_smallmoney_table order by Id; +GO +~~START~~ +smallmoney#!#varchar +1.0000#!#Value 1.0 +2.5679#!#Value 2.56789 +4.9100#!#Value 4.91 +~~END~~ + + +SELECT * FROM partition_vu_prepare_date_table order by Id; +GO +~~START~~ +date#!#varchar +2022-01-01#!#Value 2022-01-01 +2022-07-01#!#Value 2022-07-01 +2023-01-01#!#Value 2023-01-01 +~~END~~ + + +SELECT * FROM partition_vu_prepare_datetime_table order by Id; +GO +~~START~~ +datetime#!#varchar +2019-01-01 00:00:00.0#!#Value 2019-01-01 +2022-01-01 00:00:00.0#!#Value 2022-01-01 +2022-07-01 00:00:00.0#!#Value 2022-07-01 +~~END~~ + + +SELECT * FROM partition_vu_prepare_datetime2_table order by Id; +GO +~~START~~ +datetime2#!#varchar +2019-01-01 00:00:00.000#!#Value 2019-01-01 00:00:00.000 +2022-01-01 00:00:00.000#!#Value 2022-01-01 00:00:00.000 +2022-07-01 00:00:00.000#!#Value 2022-07-01 00:00:00.000 +~~END~~ + + +SELECT * FROM partition_vu_prepare_smalldatetime_table order by Id; +GO +~~START~~ +smalldatetime#!#varchar +2019-01-01 00:00:00.0#!#Value 2019-01-01 +2022-01-01 00:00:00.0#!#Value 2022-01-01 +2022-07-01 00:00:00.0#!#Value 2022-07-01 +~~END~~ + + +SELECT * FROM partition_vu_prepare_char_table order by Id; +GO +~~START~~ +char#!#varchar +A #!#Value A +D #!#Value D +K #!#Value K +U #!#Value U +~~END~~ + + +SELECT * FROM partition_vu_prepare_varchar_table order by Id; +GO +~~START~~ +varchar#!#varchar +Apple#!#Value Apple +Banana#!#Value Banana +Cherry#!#Value Cherry +Date#!#Value Date +Mango#!#Value Mango +~~END~~ + + +SELECT * FROM partition_vu_prepare_nvarchar_table order by Id; +GO +~~START~~ +nvarchar#!#varchar +Apple#!#Value Apple +Banana#!#Value Banana +Cherry#!#Value Cherry +Date#!#Value Date +Mango#!#Value Mango +~~END~~ + + +SELECT * FROM partition_vu_prepare_nchar_table order by Id; +GO +~~START~~ +nchar#!#varchar +A #!#Value A +B #!#Value B +K #!#Value K +U #!#Value U +~~END~~ + + +SELECT * FROM partition_vu_prepare_binary_table order by Id; +GO +~~START~~ +binary#!#varchar +00000000#!#Value 0x0000 +00C00000#!#Value 0x0C000 +04000000#!#Value 0x0400 +08000000#!#Value 0x0800 +~~END~~ + + +SELECT * FROM partition_vu_prepare_varbinary_table order by Id; +GO +~~START~~ +varbinary#!#varchar +0000000000000000#!#Value 0x0000000000000000 +4000000000000000#!#Value 0x4000000000000000 +8000000000000000#!#Value 0x8000000000000000 +C000000000000000#!#Value 0xC000000000000000 +~~END~~ + + +SELECT * FROM partition_vu_prepare_uniqueidentifier_table order by Id; +GO +~~START~~ +uniqueidentifier#!#varchar +00000000-0000-0000-0000-000000000000#!#Value 00000000-0000-0000-0000-000000000000 +6F9619FF-8B86-D011-B42D-00C04FC964FF#!#Value 6F9619FF-8B86-D011-B42D-00C04FC964FF +FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF#!#Value FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF +~~END~~ + + +-- psql +------------------- +-- Cleanup +------------------- +-- drop tables from publication +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_int_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_bigint_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_smallint_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_tinyint_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_decimal_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_numeric_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_money_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_smallmoney_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_date_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_datetime_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_datetime2_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_smalldatetime_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_char_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_varchar_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_nvarchar_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_nchar_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_binary_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_varbinary_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_uniqueidentifier_table; +GO + +-- psql port=5433 +ALTER SUBSCRIPTION my_sub REFRESH PUBLICATION; +GO + + + +-- tsql +------------------------------------------------------------------ +--- Drop partitioned tables, schemes and function on publisher +------------------------------------------------------------------ +-------------------------------------------------- +--- DROP Partitioned Table +-------------------------------------------------- +DROP TABLE partition_vu_prepare_uniqueidentifier_table; +GO + +DROP TABLE partition_vu_prepare_varbinary_table; +GO + +DROP TABLE partition_vu_prepare_binary_table; +GO + +DROP TABLE partition_vu_prepare_nchar_table; +GO + +DROP TABLE partition_vu_prepare_nvarchar_table; +GO + +DROP TABLE partition_vu_prepare_varchar_table; +GO + +DROP TABLE partition_vu_prepare_char_table; +GO + +DROP TABLE partition_vu_prepare_smalldatetime_table; +GO + +DROP TABLE partition_vu_prepare_datetime2_table; +GO + +DROP TABLE partition_vu_prepare_datetime_table; +GO + +DROP TABLE partition_vu_prepare_date_table; +GO + +DROP TABLE partition_vu_prepare_smallmoney_table; +GO + +DROP TABLE partition_vu_prepare_money_table; +GO + +DROP TABLE partition_vu_prepare_numeric_table; +GO + +DROP TABLE partition_vu_prepare_decimal_table; +GO + +DROP TABLE partition_vu_prepare_tinyint_table; +GO + +DROP TABLE partition_vu_prepare_smallint_table; +GO + +DROP TABLE partition_vu_prepare_bigint_table; +GO + +DROP TABLE partition_vu_prepare_int_table; +GO + +-------------------------------------------------- +--- DROP Partition Scheme +-------------------------------------------------- +DROP PARTITION SCHEME IntPartitionScheme +GO + +DROP PARTITION SCHEME BigIntPartitionScheme +GO + +DROP PARTITION SCHEME SmallIntPartitionScheme +GO + +DROP PARTITION SCHEME TinyIntPartitionScheme +GO + +DROP PARTITION SCHEME DecimalPartitionScheme +GO + +DROP PARTITION SCHEME NumericPartitionScheme +GO + +DROP PARTITION SCHEME MoneyPartitionScheme +GO + +DROP PARTITION SCHEME SmallMoneyPartitionScheme +GO + +DROP PARTITION SCHEME DatePartitionScheme +GO + +DROP PARTITION SCHEME DateTimePartitionScheme +GO + +DROP PARTITION SCHEME DateTime2PartitionScheme +GO + +DROP PARTITION SCHEME SmallDateTimePartitionScheme +GO + +DROP PARTITION SCHEME CharPartitionScheme +GO + +DROP PARTITION SCHEME VarCharPartitionScheme +GO + +DROP PARTITION SCHEME NVarCharPartitionScheme +GO + +DROP PARTITION SCHEME NCharPartitionScheme +GO + +DROP PARTITION SCHEME BinaryPartitionScheme +GO + +DROP PARTITION SCHEME VarBinaryPartitionScheme +GO + +DROP PARTITION SCHEME UniqueIdentifierPartitionScheme +GO + +------------------------------------------- +--- DROP Partition Function +------------------------------------------- +DROP PARTITION FUNCTION IntPartitionFunction +GO + +DROP PARTITION FUNCTION BigIntPartitionFunction +GO + +DROP PARTITION FUNCTION SmallIntPartitionFunction +GO + +DROP PARTITION FUNCTION TinyIntPartitionFunction +GO + +DROP PARTITION FUNCTION DecimalPartitionFunction +GO + +DROP PARTITION FUNCTION NumericPartitionFunction +GO + +DROP PARTITION FUNCTION MoneyPartitionFunction +GO + +DROP PARTITION FUNCTION SmallMoneyPartitionFunction +GO + +DROP PARTITION FUNCTION DatePartitionFunction +GO + +DROP PARTITION FUNCTION DateTimePartitionFunction +GO + +DROP PARTITION FUNCTION DateTime2PartitionFunction +GO + +DROP PARTITION FUNCTION SmallDateTimePartitionFunction +GO + +DROP PARTITION FUNCTION CharPartitionFunction +GO + +DROP PARTITION FUNCTION VarCharPartitionFunction +GO + +DROP PARTITION FUNCTION NVarCharPartitionFunction +GO + +DROP PARTITION FUNCTION NCharPartitionFunction +GO + +DROP PARTITION FUNCTION BinaryPartitionFunction +GO + +DROP PARTITION FUNCTION VarBinaryPartitionFunction +GO + +DROP PARTITION FUNCTION UniqueIdentifierPartitionFunction +GO + + + +-- tsql port=8199 +------------------------------------------------------------------ +--- Drop partitioned tables, schemes and function on subscriber +------------------------------------------------------------------ +-------------------------------------------------- +--- DROP Partitioned Table +-------------------------------------------------- +DROP TABLE partition_vu_prepare_uniqueidentifier_table; +GO + +DROP TABLE partition_vu_prepare_varbinary_table; +GO + +DROP TABLE partition_vu_prepare_binary_table; +GO + +DROP TABLE partition_vu_prepare_nchar_table; +GO + +DROP TABLE partition_vu_prepare_nvarchar_table; +GO + +DROP TABLE partition_vu_prepare_varchar_table; +GO + +DROP TABLE partition_vu_prepare_char_table; +GO + +DROP TABLE partition_vu_prepare_smalldatetime_table; +GO + +DROP TABLE partition_vu_prepare_datetime2_table; +GO + +DROP TABLE partition_vu_prepare_datetime_table; +GO + +DROP TABLE partition_vu_prepare_date_table; +GO + +DROP TABLE partition_vu_prepare_smallmoney_table; +GO + +DROP TABLE partition_vu_prepare_money_table; +GO + +DROP TABLE partition_vu_prepare_numeric_table; +GO + +DROP TABLE partition_vu_prepare_decimal_table; +GO + +DROP TABLE partition_vu_prepare_tinyint_table; +GO + +DROP TABLE partition_vu_prepare_smallint_table; +GO + +DROP TABLE partition_vu_prepare_bigint_table; +GO + +DROP TABLE partition_vu_prepare_int_table; +GO + +-------------------------------------------------- +--- DROP Partition Scheme +-------------------------------------------------- +DROP PARTITION SCHEME IntPartitionScheme +GO + +DROP PARTITION SCHEME BigIntPartitionScheme +GO + +DROP PARTITION SCHEME SmallIntPartitionScheme +GO + +DROP PARTITION SCHEME TinyIntPartitionScheme +GO + +DROP PARTITION SCHEME DecimalPartitionScheme +GO + +DROP PARTITION SCHEME NumericPartitionScheme +GO + +DROP PARTITION SCHEME MoneyPartitionScheme +GO + +DROP PARTITION SCHEME SmallMoneyPartitionScheme +GO + +DROP PARTITION SCHEME DatePartitionScheme +GO + +DROP PARTITION SCHEME DateTimePartitionScheme +GO + +DROP PARTITION SCHEME DateTime2PartitionScheme +GO + +DROP PARTITION SCHEME SmallDateTimePartitionScheme +GO + +DROP PARTITION SCHEME CharPartitionScheme +GO + +DROP PARTITION SCHEME VarCharPartitionScheme +GO + +DROP PARTITION SCHEME NVarCharPartitionScheme +GO + +DROP PARTITION SCHEME NCharPartitionScheme +GO + +DROP PARTITION SCHEME BinaryPartitionScheme +GO + +DROP PARTITION SCHEME VarBinaryPartitionScheme +GO + +DROP PARTITION SCHEME UniqueIdentifierPartitionScheme +GO + +------------------------------------------- +--- DROP Partition Function +------------------------------------------- +DROP PARTITION FUNCTION IntPartitionFunction +GO + +DROP PARTITION FUNCTION BigIntPartitionFunction +GO + +DROP PARTITION FUNCTION SmallIntPartitionFunction +GO + +DROP PARTITION FUNCTION TinyIntPartitionFunction +GO + +DROP PARTITION FUNCTION DecimalPartitionFunction +GO + +DROP PARTITION FUNCTION NumericPartitionFunction +GO + +DROP PARTITION FUNCTION MoneyPartitionFunction +GO + +DROP PARTITION FUNCTION SmallMoneyPartitionFunction +GO + +DROP PARTITION FUNCTION DatePartitionFunction +GO + +DROP PARTITION FUNCTION DateTimePartitionFunction +GO + +DROP PARTITION FUNCTION DateTime2PartitionFunction +GO + +DROP PARTITION FUNCTION SmallDateTimePartitionFunction +GO + +DROP PARTITION FUNCTION CharPartitionFunction +GO + +DROP PARTITION FUNCTION VarCharPartitionFunction +GO + +DROP PARTITION FUNCTION NVarCharPartitionFunction +GO + +DROP PARTITION FUNCTION NCharPartitionFunction +GO + +DROP PARTITION FUNCTION BinaryPartitionFunction +GO + +DROP PARTITION FUNCTION VarBinaryPartitionFunction +GO + +DROP PARTITION FUNCTION UniqueIdentifierPartitionFunction +GO diff --git a/test/JDBC/replication/partition-replication.mix b/test/JDBC/replication/partition-replication.mix new file mode 100644 index 00000000000..48ed7b01034 --- /dev/null +++ b/test/JDBC/replication/partition-replication.mix @@ -0,0 +1,1481 @@ +-- Create partitioned tables on both publisher and subscriber +-- with all the supported datatypes. +-- To create partitioned tables, we need to create partition function +-- and partition scheme on both publisher and subscriber. + + + +-------------------------------------------------- +--- Setup partitioned tables on publisher +-------------------------------------------------- + +-- tsql + +-------------------------------------------------- +--- CREATE Partition Function +-------------------------------------------------- + +-- using local variable in args +declare @a int = 0; +declare @b int = 500; +declare @c int = 1000; +CREATE PARTITION FUNCTION IntPartitionFunction (int) +AS RANGE RIGHT FOR VALUES (@a, @b, @c); +GO + + +-- explicit schema can also be specified with paramater type +CREATE PARTITION FUNCTION BigIntPartitionFunction (sys.bigint) +AS RANGE RIGHT FOR VALUES (0, 10000, 100, 1000); +GO + +CREATE PARTITION FUNCTION SmallIntPartitionFunction (smallint) +AS RANGE RIGHT FOR VALUES (cast(32767 as bigint), -32768, 0); +GO + +-- explicit schema can also be specified with paramater type +CREATE PARTITION FUNCTION TinyIntPartitionFunction (sys.tinyint) +AS RANGE RIGHT FOR VALUES (0, cast(255 as varchar), 128); +GO + +CREATE PARTITION FUNCTION DecimalPartitionFunction (decimal(10, 5)) +AS RANGE RIGHT FOR VALUES (0.0, 300.0, 200.0, 100.0); +GO + +CREATE PARTITION FUNCTION NumericPartitionFunction (numeric(5, 2)) +AS RANGE RIGHT FOR VALUES (0.0, 30.0, 10.0, 20.0); +GO + +CREATE PARTITION FUNCTION MoneyPartitionFunction (MONEY) +AS RANGE RIGHT FOR VALUES ($2.56789, ¥4.91, $3.56789); +GO + +CREATE PARTITION FUNCTION SmallMoneyPartitionFunction (SMALLMONEY) +AS RANGE RIGHT FOR VALUES ($2.56789, ¥4.91, $3.56789); +GO + +CREATE PARTITION FUNCTION DatePartitionFunction (date) +AS RANGE RIGHT FOR VALUES ('2022-07-01', '2022-01-01','2023-01-01'); +GO + +-- should implicity cast it to input type +CREATE PARTITION FUNCTION DateTimePartitionFunction (datetime) +AS RANGE RIGHT FOR VALUES ('2022-01-01', '2022-07-01 00:00:00', '2019-01-01 00:00:00'); +GO + +CREATE PARTITION FUNCTION DateTime2PartitionFunction (datetime2(3)) +AS RANGE RIGHT FOR VALUES ('2022-01-01 00:00:00.000', '2022-07-01 00:00:00.000', '2019-01-01 00:00:00.000'); +GO + +CREATE PARTITION FUNCTION SmallDateTimePartitionFunction (smalldatetime) +AS RANGE RIGHT FOR VALUES ('2022-01-01', '2022-07-01', '2019-01-01'); +GO + +CREATE PARTITION FUNCTION CharPartitionFunction (char(5)) +AS RANGE RIGHT FOR VALUES ('A', 'F', 'K', 'P', 'U', 'Z', 'D'); +GO + +CREATE PARTITION FUNCTION VarCharPartitionFunction (varchar(10)) +AS RANGE RIGHT FOR VALUES ('Apple', 'Banana', 'Mango', 'Cherry', 'Date'); +GO + +CREATE PARTITION FUNCTION NVarCharPartitionFunction (nvarchar(10)) +AS RANGE RIGHT FOR VALUES (N'Apple', N'Banana', N'Mango', N'Cherry', N'Date'); +GO + +CREATE PARTITION FUNCTION NCharPartitionFunction (nchar(5)) +AS RANGE RIGHT FOR VALUES (N'A', N'F', N'K', N'P', N'U', N'Z', N'B'); +GO + +CREATE PARTITION FUNCTION BinaryPartitionFunction (binary(4)) +AS RANGE RIGHT FOR VALUES (0x000, 0x800, 0x400, 0xC000); +GO + +CREATE PARTITION FUNCTION VarBinaryPartitionFunction (varbinary(8)) +AS RANGE RIGHT FOR VALUES (0x0000000000000000, 0x8000000000000000, 0x4000000000000000, 0xC000000000000000); +GO + +CREATE PARTITION FUNCTION UniqueIdentifierPartitionFunction (uniqueidentifier) +AS RANGE RIGHT FOR VALUES ('00000000-0000-0000-0000-000000000000', 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF', '6F9619FF-8B86-D011-B42D-00C04FC964FF'); +GO + + +-------------------------------------------------- +--- CREATE Partition Scheme +-------------------------------------------------- + +-- without all option +-- filegroups are equal to partition that will generated by function +CREATE PARTITION SCHEME IntPartitionScheme AS +PARTITION IntPartitionFunction +TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]); +GO + +-- filgroups are more than partition that will generated by function +CREATE PARTITION SCHEME BigIntPartitionScheme AS +PARTITION BigIntPartitionFunction +TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]); +GO + +-- with all option +CREATE PARTITION SCHEME SmallIntPartitionScheme AS +PARTITION SmallIntPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME TinyIntPartitionScheme AS +PARTITION TinyIntPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DecimalPartitionScheme AS +PARTITION DecimalPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NumericPartitionScheme AS +PARTITION NumericPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME MoneyPartitionScheme AS +PARTITION MoneyPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME SmallMoneyPartitionScheme AS +PARTITION SmallMoneyPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DatePartitionScheme AS +PARTITION DatePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DateTimePartitionScheme AS +PARTITION DateTimePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DateTime2PartitionScheme AS +PARTITION DateTime2PartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME SmallDateTimePartitionScheme AS +PARTITION SmallDateTimePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME CharPartitionScheme AS +PARTITION CharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME VarCharPartitionScheme AS +PARTITION VarCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NVarCharPartitionScheme AS +PARTITION NVarCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NCharPartitionScheme AS +PARTITION NCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME BinaryPartitionScheme AS +PARTITION BinaryPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME VarBinaryPartitionScheme AS +PARTITION VarBinaryPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME UniqueIdentifierPartitionScheme AS +PARTITION UniqueIdentifierPartitionFunction +ALL TO ([PRIMARY]); +GO + +--------------------------------------------------------------------------- +--- CREATE PARTITIONED TABLES using PARTITION SCHEME for different datatypes +--------------------------------------------------------------------------- +-- int data type +CREATE TABLE partition_vu_prepare_int_table ( + Value sys.varchar(50), + Id INT PRIMARY KEY +) ON IntPartitionScheme(Id); +GO + +-- bigint data type +CREATE TABLE partition_vu_prepare_bigint_table ( + Id BIGINT PRIMARY KEY, + Value sys.varchar(50) +) ON BigIntPartitionScheme--this is comment should get ignored +(Id); +GO + +-- smallint data type +CREATE TABLE partition_vu_prepare_smallint_table ( + Id SMALLINT PRIMARY KEY, + Value sys.varchar(50) +) ON SmallIntPartitionScheme(Id); +GO + +-- tinyint data type +CREATE TABLE partition_vu_prepare_tinyint_table ( + Id TINYINT PRIMARY KEY, + Value sys.varchar(50) +) ON TinyIntPartitionScheme(Id); +GO + +-- decimal data type +CREATE TABLE partition_vu_prepare_decimal_table ( + Id DECIMAL(10, 5) PRIMARY KEY, + Value sys.varchar(50) +) ON DecimalPartitionScheme(Id); +GO + +-- numeric data type +CREATE TABLE partition_vu_prepare_numeric_table ( + Id NUMERIC(5, 2) PRIMARY KEY, + Value sys.varchar(50) +) ON NumericPartitionScheme(Id); +GO + +-- money data type +CREATE TABLE partition_vu_prepare_money_table ( + Id MONEY PRIMARY KEY, + Value sys.varchar(50) +) ON MoneyPartitionScheme(Id); +GO + +-- smallmoney data type +CREATE TABLE partition_vu_prepare_smallmoney_table ( + Id SMALLMONEY PRIMARY KEY, + Value sys.varchar(50) +) ON SmallMoneyPartitionScheme(Id); +GO + +-- date data type +CREATE TABLE partition_vu_prepare_date_table ( + Id DATE PRIMARY KEY, + Value sys.varchar(50) +) ON DatePartitionScheme(Id); +GO + +-- datetime data type +CREATE TABLE partition_vu_prepare_datetime_table ( + Id DATETIME PRIMARY KEY, + Value sys.varchar(50) +) ON DateTimePartitionScheme(Id); +GO + +-- datetime2 data type +CREATE TABLE partition_vu_prepare_datetime2_table ( + Id DATETIME2(3) PRIMARY KEY, + Value sys.varchar(50) +) ON DateTime2PartitionScheme(Id); +GO + +-- smalldatetime data type +CREATE TABLE partition_vu_prepare_smalldatetime_table ( + Id SMALLDATETIME PRIMARY KEY, + Value sys.varchar(50) +) ON SmallDateTimePartitionScheme(Id); +GO + +-- char data type +CREATE TABLE partition_vu_prepare_char_table ( + Id CHAR(5) PRIMARY KEY, + Value sys.varchar(50) +) ON CharPartitionScheme(Id); +GO + +-- varchar data type +CREATE TABLE partition_vu_prepare_varchar_table ( + Id VARCHAR(10) PRIMARY KEY, + Value sys.varchar(50) +) ON VarCharPartitionScheme(Id); +GO + +-- nvarchar data type +CREATE TABLE partition_vu_prepare_nvarchar_table ( + Id NVARCHAR(10) PRIMARY KEY, + Value sys.varchar(50) +) ON NVarCharPartitionScheme(Id); +GO + +-- nchar data type +CREATE TABLE partition_vu_prepare_nchar_table ( + Id NCHAR(5) PRIMARY KEY, + Value sys.varchar(50) +) ON NCharPartitionScheme(Id); +GO + +-- binary data type +CREATE TABLE partition_vu_prepare_binary_table ( + Id BINARY(4) PRIMARY KEY, + Value sys.varchar(50) +) ON BinaryPartitionScheme(Id); +GO + +-- varbinary data type +CREATE TABLE partition_vu_prepare_varbinary_table ( + Id VARBINARY(8) PRIMARY KEY, + Value sys.varchar(50) +) ON VarBinaryPartitionScheme(Id); +GO + +-- uniqueidentifier data type +CREATE TABLE partition_vu_prepare_uniqueidentifier_table ( + Id UNIQUEIDENTIFIER PRIMARY KEY, + Value sys.varchar(50) +) ON UniqueIdentifierPartitionScheme(Id); +GO + + +-------------------------------------------------- +--- Setup partitioned tables on subscriber +-------------------------------------------------- +-- tsql port=8199 +------------------------------------------------- +--- CREATE Partition Function +-------------------------------------------------- + +-- using local variable in args +declare @a int = 0; +declare @b int = 500; +declare @c int = 1000; +CREATE PARTITION FUNCTION IntPartitionFunction (int) +AS RANGE RIGHT FOR VALUES (@a, @b, @c); +GO + + +-- explicit schema can also be specified with paramater type +CREATE PARTITION FUNCTION BigIntPartitionFunction (sys.bigint) +AS RANGE RIGHT FOR VALUES (0, 10000, 100, 1000); +GO + +CREATE PARTITION FUNCTION SmallIntPartitionFunction (smallint) +AS RANGE RIGHT FOR VALUES (cast(32767 as bigint), -32768, 0); +GO + +-- explicit schema can also be specified with paramater type +CREATE PARTITION FUNCTION TinyIntPartitionFunction (sys.tinyint) +AS RANGE RIGHT FOR VALUES (0, cast(255 as varchar), 128); +GO + +CREATE PARTITION FUNCTION DecimalPartitionFunction (decimal(10, 5)) +AS RANGE RIGHT FOR VALUES (0.0, 300.0, 200.0, 100.0); +GO + +CREATE PARTITION FUNCTION NumericPartitionFunction (numeric(5, 2)) +AS RANGE RIGHT FOR VALUES (0.0, 30.0, 10.0, 20.0); +GO + +CREATE PARTITION FUNCTION MoneyPartitionFunction (MONEY) +AS RANGE RIGHT FOR VALUES ($2.56789, ¥4.91, $3.56789); +GO + +CREATE PARTITION FUNCTION SmallMoneyPartitionFunction (SMALLMONEY) +AS RANGE RIGHT FOR VALUES ($2.56789, ¥4.91, $3.56789); +GO + +CREATE PARTITION FUNCTION DatePartitionFunction (date) +AS RANGE RIGHT FOR VALUES ('2022-07-01', '2022-01-01','2023-01-01'); +GO + +-- should implicity cast it to input type +CREATE PARTITION FUNCTION DateTimePartitionFunction (datetime) +AS RANGE RIGHT FOR VALUES ('2022-01-01', '2022-07-01 00:00:00', '2019-01-01 00:00:00'); +GO + +CREATE PARTITION FUNCTION DateTime2PartitionFunction (datetime2(3)) +AS RANGE RIGHT FOR VALUES ('2022-01-01 00:00:00.000', '2022-07-01 00:00:00.000', '2019-01-01 00:00:00.000'); +GO + +CREATE PARTITION FUNCTION SmallDateTimePartitionFunction (smalldatetime) +AS RANGE RIGHT FOR VALUES ('2022-01-01', '2022-07-01', '2019-01-01'); +GO + +CREATE PARTITION FUNCTION CharPartitionFunction (char(5)) +AS RANGE RIGHT FOR VALUES ('A', 'F', 'K', 'P', 'U', 'Z', 'D'); +GO + +CREATE PARTITION FUNCTION VarCharPartitionFunction (varchar(10)) +AS RANGE RIGHT FOR VALUES ('Apple', 'Banana', 'Mango', 'Cherry', 'Date'); +GO + +CREATE PARTITION FUNCTION NVarCharPartitionFunction (nvarchar(10)) +AS RANGE RIGHT FOR VALUES (N'Apple', N'Banana', N'Mango', N'Cherry', N'Date'); +GO + +CREATE PARTITION FUNCTION NCharPartitionFunction (nchar(5)) +AS RANGE RIGHT FOR VALUES (N'A', N'F', N'K', N'P', N'U', N'Z', N'B'); +GO + +CREATE PARTITION FUNCTION BinaryPartitionFunction (binary(4)) +AS RANGE RIGHT FOR VALUES (0x000, 0x800, 0x400, 0xC000); +GO + +CREATE PARTITION FUNCTION VarBinaryPartitionFunction (varbinary(8)) +AS RANGE RIGHT FOR VALUES (0x0000000000000000, 0x8000000000000000, 0x4000000000000000, 0xC000000000000000); +GO + +CREATE PARTITION FUNCTION UniqueIdentifierPartitionFunction (uniqueidentifier) +AS RANGE RIGHT FOR VALUES ('00000000-0000-0000-0000-000000000000', 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF', '6F9619FF-8B86-D011-B42D-00C04FC964FF'); +GO + + +-------------------------------------------------- +--- CREATE Partition Scheme +-------------------------------------------------- + +-- without all option +-- filegroups are equal to partition that will generated by function +CREATE PARTITION SCHEME IntPartitionScheme AS +PARTITION IntPartitionFunction +TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]); +GO + +-- filgroups are more than partition that will generated by function +CREATE PARTITION SCHEME BigIntPartitionScheme AS +PARTITION BigIntPartitionFunction +TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]); +GO + +-- with all option +CREATE PARTITION SCHEME SmallIntPartitionScheme AS +PARTITION SmallIntPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME TinyIntPartitionScheme AS +PARTITION TinyIntPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DecimalPartitionScheme AS +PARTITION DecimalPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NumericPartitionScheme AS +PARTITION NumericPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME MoneyPartitionScheme AS +PARTITION MoneyPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME SmallMoneyPartitionScheme AS +PARTITION SmallMoneyPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DatePartitionScheme AS +PARTITION DatePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DateTimePartitionScheme AS +PARTITION DateTimePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DateTime2PartitionScheme AS +PARTITION DateTime2PartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME SmallDateTimePartitionScheme AS +PARTITION SmallDateTimePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME CharPartitionScheme AS +PARTITION CharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME VarCharPartitionScheme AS +PARTITION VarCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NVarCharPartitionScheme AS +PARTITION NVarCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NCharPartitionScheme AS +PARTITION NCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME BinaryPartitionScheme AS +PARTITION BinaryPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME VarBinaryPartitionScheme AS +PARTITION VarBinaryPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME UniqueIdentifierPartitionScheme AS +PARTITION UniqueIdentifierPartitionFunction +ALL TO ([PRIMARY]); +GO + +--------------------------------------------------------------------------- +--- CREATE PARTITIONED TABLES using PARTITION SCHEME for different datatypes +--------------------------------------------------------------------------- +-- int data type +CREATE TABLE partition_vu_prepare_int_table ( + Value sys.varchar(50), + Id INT PRIMARY KEY +) ON IntPartitionScheme(Id); +GO + +-- bigint data type +CREATE TABLE partition_vu_prepare_bigint_table ( + Id BIGINT PRIMARY KEY, + Value sys.varchar(50) +) ON BigIntPartitionScheme--this is comment should get ignored +(Id); +GO + +-- smallint data type +CREATE TABLE partition_vu_prepare_smallint_table ( + Id SMALLINT PRIMARY KEY, + Value sys.varchar(50) +) ON SmallIntPartitionScheme(Id); +GO + +-- tinyint data type +CREATE TABLE partition_vu_prepare_tinyint_table ( + Id TINYINT PRIMARY KEY, + Value sys.varchar(50) +) ON TinyIntPartitionScheme(Id); +GO + +-- decimal data type +CREATE TABLE partition_vu_prepare_decimal_table ( + Id DECIMAL(10, 5) PRIMARY KEY, + Value sys.varchar(50) +) ON DecimalPartitionScheme(Id); +GO + +-- numeric data type +CREATE TABLE partition_vu_prepare_numeric_table ( + Id NUMERIC(5, 2) PRIMARY KEY, + Value sys.varchar(50) +) ON NumericPartitionScheme(Id); +GO + +-- money data type +CREATE TABLE partition_vu_prepare_money_table ( + Id MONEY PRIMARY KEY, + Value sys.varchar(50) +) ON MoneyPartitionScheme(Id); +GO + +-- smallmoney data type +CREATE TABLE partition_vu_prepare_smallmoney_table ( + Id SMALLMONEY PRIMARY KEY, + Value sys.varchar(50) +) ON SmallMoneyPartitionScheme(Id); +GO + +-- date data type +CREATE TABLE partition_vu_prepare_date_table ( + Id DATE PRIMARY KEY, + Value sys.varchar(50) +) ON DatePartitionScheme(Id); +GO + +-- datetime data type +CREATE TABLE partition_vu_prepare_datetime_table ( + Id DATETIME PRIMARY KEY, + Value sys.varchar(50) +) ON DateTimePartitionScheme(Id); +GO + +-- datetime2 data type +CREATE TABLE partition_vu_prepare_datetime2_table ( + Id DATETIME2(3) PRIMARY KEY, + Value sys.varchar(50) +) ON DateTime2PartitionScheme(Id); +GO + +-- smalldatetime data type +CREATE TABLE partition_vu_prepare_smalldatetime_table ( + Id SMALLDATETIME PRIMARY KEY, + Value sys.varchar(50) +) ON SmallDateTimePartitionScheme(Id); +GO + +-- char data type +CREATE TABLE partition_vu_prepare_char_table ( + Id CHAR(5) PRIMARY KEY, + Value sys.varchar(50) +) ON CharPartitionScheme(Id); +GO + +-- varchar data type +CREATE TABLE partition_vu_prepare_varchar_table ( + Id VARCHAR(10) PRIMARY KEY, + Value sys.varchar(50) +) ON VarCharPartitionScheme(Id); +GO + +-- nvarchar data type +CREATE TABLE partition_vu_prepare_nvarchar_table ( + Id NVARCHAR(10) PRIMARY KEY, + Value sys.varchar(50) +) ON NVarCharPartitionScheme(Id); +GO + +-- nchar data type +CREATE TABLE partition_vu_prepare_nchar_table ( + Id NCHAR(5) PRIMARY KEY, + Value sys.varchar(50) +) ON NCharPartitionScheme(Id); +GO + +-- binary data type +CREATE TABLE partition_vu_prepare_binary_table ( + Id BINARY(4) PRIMARY KEY, + Value sys.varchar(50) +) ON BinaryPartitionScheme(Id); +GO + +-- varbinary data type +CREATE TABLE partition_vu_prepare_varbinary_table ( + Id VARBINARY(8) PRIMARY KEY, + Value sys.varchar(50) +) ON VarBinaryPartitionScheme(Id); +GO + +-- uniqueidentifier data type +CREATE TABLE partition_vu_prepare_uniqueidentifier_table ( + Id UNIQUEIDENTIFIER PRIMARY KEY, + Value sys.varchar(50) +) ON UniqueIdentifierPartitionScheme(Id); +GO + + +--------------------------------------------------------------------------- +-- Insert some data into the source table before publishing it +-- to verify if initial data sync works fine. +--------------------------------------------------------------------------- +-- tsql +-- Insert values into partition_vu_prepare_int_table +INSERT INTO partition_vu_prepare_int_table (Id, Value) VALUES (1, 'Value 1'); +INSERT INTO partition_vu_prepare_int_table (Id, Value) VALUES (100, 'Value 100'); +GO + +-- Insert values into partition_vu_prepare_bigint_table +INSERT INTO partition_vu_prepare_bigint_table (Id, Value) VALUES (1, 'Value 1'); +INSERT INTO partition_vu_prepare_bigint_table (Id, Value) VALUES (100, 'Value 100'); +GO + +-- Insert values into partition_vu_prepare_smallint_table +INSERT INTO partition_vu_prepare_smallint_table (Id, Value) VALUES (1, 'Value 1'); +INSERT INTO partition_vu_prepare_smallint_table (Id, Value) VALUES (-32768, 'Value -32768'); +GO + +-- Insert values into partition_vu_prepare_tinyint_table +INSERT INTO partition_vu_prepare_tinyint_table (Id, Value) VALUES (1, 'Value 1'); +INSERT INTO partition_vu_prepare_tinyint_table (Id, Value) VALUES (128, 'Value 128'); +GO + +-- Insert values into partition_vu_prepare_decimal_table +INSERT INTO partition_vu_prepare_decimal_table (Id, Value) VALUES (1.0, 'Value 1.0'); +INSERT INTO partition_vu_prepare_decimal_table (Id, Value) VALUES (100.0, 'Value 100.0'); +GO + +-- Insert values into partition_vu_prepare_numeric_table +INSERT INTO partition_vu_prepare_numeric_table (Id, Value) VALUES (1.0, 'Value 1.0'); +INSERT INTO partition_vu_prepare_numeric_table (Id, Value) VALUES (10.0, 'Value 10.0'); +GO + +-- Insert values into partition_vu_prepare_money_table +INSERT INTO partition_vu_prepare_money_table (Id, Value) VALUES (1.0, 'Value 1.0'); +INSERT INTO partition_vu_prepare_money_table (Id, Value) VALUES (2.56789, 'Value 2.56789'); +GO + +-- Insert values into partition_vu_prepare_smallmoney_table +INSERT INTO partition_vu_prepare_smallmoney_table (Id, Value) VALUES (1.0, 'Value 1.0'); +INSERT INTO partition_vu_prepare_smallmoney_table (Id, Value) VALUES (2.56789, 'Value 2.56789'); +GO + +-- Insert values into partition_vu_prepare_date_table +INSERT INTO partition_vu_prepare_date_table (Id, Value) VALUES ('2022-01-01', 'Value 2022-01-01'); +INSERT INTO partition_vu_prepare_date_table (Id, Value) VALUES ('2022-07-01', 'Value 2022-07-01'); +GO + +-- Insert values into partition_vu_prepare_datetime_table +INSERT INTO partition_vu_prepare_datetime_table (Id, Value) VALUES ('2019-01-01', 'Value 2019-01-01'); +INSERT INTO partition_vu_prepare_datetime_table (Id, Value) VALUES ('2022-01-01', 'Value 2022-01-01'); +GO + +-- Insert values into partition_vu_prepare_datetime2_table +INSERT INTO partition_vu_prepare_datetime2_table (Id, Value) VALUES ('2019-01-01 00:00:00.000', 'Value 2019-01-01 00:00:00.000'); +INSERT INTO partition_vu_prepare_datetime2_table (Id, Value) VALUES ('2022-01-01 00:00:00.000', 'Value 2022-01-01 00:00:00.000'); +GO + +-- Insert values into partition_vu_prepare_smalldatetime_table +INSERT INTO partition_vu_prepare_smalldatetime_table (Id, Value) VALUES ('2019-01-01', 'Value 2019-01-01'); +INSERT INTO partition_vu_prepare_smalldatetime_table (Id, Value) VALUES ('2022-01-01', 'Value 2022-01-01'); +GO + +-- Insert values into partition_vu_prepare_char_table +INSERT INTO partition_vu_prepare_char_table (Id, Value) VALUES ('A', 'Value A'); +INSERT INTO partition_vu_prepare_char_table (Id, Value) VALUES ('K', 'Value K'); +GO + +-- Insert values into partition_vu_prepare_varchar_table +INSERT INTO partition_vu_prepare_varchar_table (Id, Value) VALUES ('Apple', 'Value Apple'); +INSERT INTO partition_vu_prepare_varchar_table (Id, Value) VALUES ('Banana', 'Value Banana'); +GO + +-- Insert values into partition_vu_prepare_nvarchar_table +INSERT INTO partition_vu_prepare_nvarchar_table (Id, Value) VALUES (N'Apple', N'Value Apple'); +INSERT INTO partition_vu_prepare_nvarchar_table (Id, Value) VALUES (N'Banana', N'Value Banana'); +GO + +-- Insert values into partition_vu_prepare_nchar_table +INSERT INTO partition_vu_prepare_nchar_table (Id, Value) VALUES (N'A', N'Value A'); +INSERT INTO partition_vu_prepare_nchar_table (Id, Value) VALUES (N'K', N'Value K'); +GO + +-- Insert values into partition_vu_prepare_binary_table +INSERT INTO partition_vu_prepare_binary_table (Id, Value) VALUES (0x0000, 'Value 0x0000'); +INSERT INTO partition_vu_prepare_binary_table (Id, Value) VALUES (0x0400, 'Value 0x0400'); +GO + +-- Insert values into partition_vu_prepare_varbinary_table +INSERT INTO partition_vu_prepare_varbinary_table (Id, Value) VALUES (0x0000000000000000, 'Value 0x0000000000000000'); +INSERT INTO partition_vu_prepare_varbinary_table (Id, Value) VALUES (0x4000000000000000, 'Value 0x4000000000000000'); +GO + +-- Insert values into partition_vu_prepare_uniqueidentifier_table +INSERT INTO partition_vu_prepare_uniqueidentifier_table (Id, Value) VALUES ('00000000-0000-0000-0000-000000000000', 'Value 00000000-0000-0000-0000-000000000000'); +INSERT INTO partition_vu_prepare_uniqueidentifier_table (Id, Value) VALUES ('6F9619FF-8B86-D011-B42D-00C04FC964FF', 'Value 6F9619FF-8B86-D011-B42D-00C04FC964FF'); +GO + +---------------------------------------------------- +-- Should not see data yet in the subscriber table +---------------------------------------------------- +-- tsql port=8199 +SELECT * FROM partition_vu_prepare_int_table; +GO + + +---------------------------------------------------- +-- ADD source tables to publication +---------------------------------------------------- +-- psql +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_int_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_bigint_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_smallint_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_tinyint_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_decimal_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_numeric_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_money_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_smallmoney_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_date_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_datetime_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_datetime2_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_smalldatetime_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_char_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_varchar_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_nvarchar_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_nchar_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_binary_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_varbinary_table; +GO +ALTER PUBLICATION my_pub ADD TABLE master_dbo.partition_vu_prepare_uniqueidentifier_table; +GO + + +---------------------------------------------------- +-- Refresh the subscription +---------------------------------------------------- +-- psql port=5433 +ALTER SUBSCRIPTION my_sub REFRESH PUBLICATION; +GO + + +-- Wait for data to get replicated +select pg_sleep(10); +GO + + +----------------------------------------------------------- +-- Initial data should have replicated to subscriber now +----------------------------------------------------------- +-- tsql port=8199 +SELECT * FROM partition_vu_prepare_int_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_bigint_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_smallint_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_tinyint_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_decimal_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_numeric_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_money_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_smallmoney_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_date_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_datetime_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_datetime2_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_smalldatetime_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_char_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_varchar_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_nvarchar_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_nchar_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_binary_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_varbinary_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_uniqueidentifier_table order by Id; +GO + + +----------------------------------------------------------- +-- Insert more data into publisher to see if replication works +----------------------------------------------------------- +-- tsql +-- Insert values into partition_vu_prepare_int_table +INSERT INTO partition_vu_prepare_int_table (Id, Value) VALUES (10000, 'Value 10000'); +GO + +-- Insert values into partition_vu_prepare_bigint_table +INSERT INTO partition_vu_prepare_bigint_table (Id, Value) VALUES (10000, 'Value 10000'); +INSERT INTO partition_vu_prepare_bigint_table (Id, Value) VALUES (1000000000, 'Value 1000000000'); +GO + +-- Insert values into partition_vu_prepare_smallint_table +INSERT INTO partition_vu_prepare_smallint_table (Id, Value) VALUES (32767, 'Value 32767'); +GO + +-- Insert values into partition_vu_prepare_tinyint_table +INSERT INTO partition_vu_prepare_tinyint_table (Id, Value) VALUES (255, 'Value 255'); +GO + +-- Insert values into partition_vu_prepare_decimal_table +INSERT INTO partition_vu_prepare_decimal_table (Id, Value) VALUES (200.0, 'Value 200.0'); +INSERT INTO partition_vu_prepare_decimal_table (Id, Value) VALUES (300.0, 'Value 300.0'); +GO + +-- Insert values into partition_vu_prepare_numeric_table +INSERT INTO partition_vu_prepare_numeric_table (Id, Value) VALUES (20.0, 'Value 20.0'); +INSERT INTO partition_vu_prepare_numeric_table (Id, Value) VALUES (30.0, 'Value 30.0'); +GO + +-- Insert values into partition_vu_prepare_money_table +INSERT INTO partition_vu_prepare_money_table (Id, Value) VALUES (4.91, 'Value 4.91'); +GO + +-- Insert values into partition_vu_prepare_smallmoney_table +INSERT INTO partition_vu_prepare_smallmoney_table (Id, Value) VALUES (4.91, 'Value 4.91'); +GO + +-- Insert values into partition_vu_prepare_date_table +INSERT INTO partition_vu_prepare_date_table (Id, Value) VALUES ('2023-01-01', 'Value 2023-01-01'); +GO + +-- Insert values into partition_vu_prepare_datetime_table +INSERT INTO partition_vu_prepare_datetime_table (Id, Value) VALUES ('2022-07-01', 'Value 2022-07-01'); +GO + +-- Insert values into partition_vu_prepare_datetime2_table +INSERT INTO partition_vu_prepare_datetime2_table (Id, Value) VALUES ('2022-07-01 00:00:00.000', 'Value 2022-07-01 00:00:00.000'); +GO + +-- Insert values into partition_vu_prepare_smalldatetime_table +INSERT INTO partition_vu_prepare_smalldatetime_table (Id, Value) VALUES ('2022-07-01', 'Value 2022-07-01'); +GO + +-- Insert values into partition_vu_prepare_char_table +INSERT INTO partition_vu_prepare_char_table (Id, Value) VALUES ('U', 'Value U'); +INSERT INTO partition_vu_prepare_char_table (Id, Value) VALUES ('D', 'Value D'); +GO + +-- Insert values into partition_vu_prepare_varchar_table +INSERT INTO partition_vu_prepare_varchar_table (Id, Value) VALUES ('Mango', 'Value Mango'); +INSERT INTO partition_vu_prepare_varchar_table (Id, Value) VALUES ('Cherry', 'Value Cherry'); +INSERT INTO partition_vu_prepare_varchar_table (Id, Value) VALUES ('Date', 'Value Date'); +GO + +-- Insert values into partition_vu_prepare_nvarchar_table +INSERT INTO partition_vu_prepare_nvarchar_table (Id, Value) VALUES (N'Mango', N'Value Mango'); +INSERT INTO partition_vu_prepare_nvarchar_table (Id, Value) VALUES (N'Cherry', N'Value Cherry'); +INSERT INTO partition_vu_prepare_nvarchar_table (Id, Value) VALUES (N'Date', N'Value Date'); +GO + +-- Insert values into partition_vu_prepare_nchar_table +INSERT INTO partition_vu_prepare_nchar_table (Id, Value) VALUES (N'U', N'Value U'); +INSERT INTO partition_vu_prepare_nchar_table (Id, Value) VALUES (N'B', N'Value B'); +GO + +-- Insert values into partition_vu_prepare_binary_table +INSERT INTO partition_vu_prepare_binary_table (Id, Value) VALUES (0x0800, 'Value 0x0800'); +INSERT INTO partition_vu_prepare_binary_table (Id, Value) VALUES (0x0C000, 'Value 0x0C000'); +GO + +-- Insert values into partition_vu_prepare_varbinary_table +INSERT INTO partition_vu_prepare_varbinary_table (Id, Value) VALUES (0x8000000000000000, 'Value 0x8000000000000000'); +INSERT INTO partition_vu_prepare_varbinary_table (Id, Value) VALUES (0xC000000000000000, 'Value 0xC000000000000000'); +GO + +-- Insert values into partition_vu_prepare_uniqueidentifier_table +INSERT INTO partition_vu_prepare_uniqueidentifier_table (Id, Value) VALUES ('FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF', 'Value FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF'); +GO + + +-- Wait for data to get replicated +-- psql +select pg_sleep(10); +GO + +----------------------------------------------------------- +-- Validate that new data's are also replicated +----------------------------------------------------------- +-- tsql port=8199 +SELECT * FROM partition_vu_prepare_int_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_bigint_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_smallint_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_tinyint_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_decimal_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_numeric_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_money_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_smallmoney_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_date_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_datetime_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_datetime2_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_smalldatetime_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_char_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_varchar_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_nvarchar_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_nchar_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_binary_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_varbinary_table order by Id; +GO + +SELECT * FROM partition_vu_prepare_uniqueidentifier_table order by Id; +GO + +------------------- +-- Cleanup +------------------- +-- psql +-- drop tables from publication +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_int_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_bigint_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_smallint_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_tinyint_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_decimal_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_numeric_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_money_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_smallmoney_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_date_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_datetime_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_datetime2_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_smalldatetime_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_char_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_varchar_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_nvarchar_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_nchar_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_binary_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_varbinary_table; +GO +ALTER PUBLICATION my_pub DROP TABLE master_dbo.partition_vu_prepare_uniqueidentifier_table; +GO + +-- psql port=5433 +ALTER SUBSCRIPTION my_sub REFRESH PUBLICATION; +GO + + +------------------------------------------------------------------ +--- Drop partitioned tables, schemes and function on publisher +------------------------------------------------------------------ + +-- tsql +-------------------------------------------------- +--- DROP Partitioned Table +-------------------------------------------------- +DROP TABLE partition_vu_prepare_uniqueidentifier_table; +GO + +DROP TABLE partition_vu_prepare_varbinary_table; +GO + +DROP TABLE partition_vu_prepare_binary_table; +GO + +DROP TABLE partition_vu_prepare_nchar_table; +GO + +DROP TABLE partition_vu_prepare_nvarchar_table; +GO + +DROP TABLE partition_vu_prepare_varchar_table; +GO + +DROP TABLE partition_vu_prepare_char_table; +GO + +DROP TABLE partition_vu_prepare_smalldatetime_table; +GO + +DROP TABLE partition_vu_prepare_datetime2_table; +GO + +DROP TABLE partition_vu_prepare_datetime_table; +GO + +DROP TABLE partition_vu_prepare_date_table; +GO + +DROP TABLE partition_vu_prepare_smallmoney_table; +GO + +DROP TABLE partition_vu_prepare_money_table; +GO + +DROP TABLE partition_vu_prepare_numeric_table; +GO + +DROP TABLE partition_vu_prepare_decimal_table; +GO + +DROP TABLE partition_vu_prepare_tinyint_table; +GO + +DROP TABLE partition_vu_prepare_smallint_table; +GO + +DROP TABLE partition_vu_prepare_bigint_table; +GO + +DROP TABLE partition_vu_prepare_int_table; +GO + +-------------------------------------------------- +--- DROP Partition Scheme +-------------------------------------------------- +DROP PARTITION SCHEME IntPartitionScheme +GO + +DROP PARTITION SCHEME BigIntPartitionScheme +GO + +DROP PARTITION SCHEME SmallIntPartitionScheme +GO + +DROP PARTITION SCHEME TinyIntPartitionScheme +GO + +DROP PARTITION SCHEME DecimalPartitionScheme +GO + +DROP PARTITION SCHEME NumericPartitionScheme +GO + +DROP PARTITION SCHEME MoneyPartitionScheme +GO + +DROP PARTITION SCHEME SmallMoneyPartitionScheme +GO + +DROP PARTITION SCHEME DatePartitionScheme +GO + +DROP PARTITION SCHEME DateTimePartitionScheme +GO + +DROP PARTITION SCHEME DateTime2PartitionScheme +GO + +DROP PARTITION SCHEME SmallDateTimePartitionScheme +GO + +DROP PARTITION SCHEME CharPartitionScheme +GO + +DROP PARTITION SCHEME VarCharPartitionScheme +GO + +DROP PARTITION SCHEME NVarCharPartitionScheme +GO + +DROP PARTITION SCHEME NCharPartitionScheme +GO + +DROP PARTITION SCHEME BinaryPartitionScheme +GO + +DROP PARTITION SCHEME VarBinaryPartitionScheme +GO + +DROP PARTITION SCHEME UniqueIdentifierPartitionScheme +GO + +------------------------------------------- +--- DROP Partition Function +------------------------------------------- +DROP PARTITION FUNCTION IntPartitionFunction +GO + +DROP PARTITION FUNCTION BigIntPartitionFunction +GO + +DROP PARTITION FUNCTION SmallIntPartitionFunction +GO + +DROP PARTITION FUNCTION TinyIntPartitionFunction +GO + +DROP PARTITION FUNCTION DecimalPartitionFunction +GO + +DROP PARTITION FUNCTION NumericPartitionFunction +GO + +DROP PARTITION FUNCTION MoneyPartitionFunction +GO + +DROP PARTITION FUNCTION SmallMoneyPartitionFunction +GO + +DROP PARTITION FUNCTION DatePartitionFunction +GO + +DROP PARTITION FUNCTION DateTimePartitionFunction +GO + +DROP PARTITION FUNCTION DateTime2PartitionFunction +GO + +DROP PARTITION FUNCTION SmallDateTimePartitionFunction +GO + +DROP PARTITION FUNCTION CharPartitionFunction +GO + +DROP PARTITION FUNCTION VarCharPartitionFunction +GO + +DROP PARTITION FUNCTION NVarCharPartitionFunction +GO + +DROP PARTITION FUNCTION NCharPartitionFunction +GO + +DROP PARTITION FUNCTION BinaryPartitionFunction +GO + +DROP PARTITION FUNCTION VarBinaryPartitionFunction +GO + +DROP PARTITION FUNCTION UniqueIdentifierPartitionFunction +GO + + +------------------------------------------------------------------ +--- Drop partitioned tables, schemes and function on subscriber +------------------------------------------------------------------ + +-- tsql port=8199 +-------------------------------------------------- +--- DROP Partitioned Table +-------------------------------------------------- +DROP TABLE partition_vu_prepare_uniqueidentifier_table; +GO + +DROP TABLE partition_vu_prepare_varbinary_table; +GO + +DROP TABLE partition_vu_prepare_binary_table; +GO + +DROP TABLE partition_vu_prepare_nchar_table; +GO + +DROP TABLE partition_vu_prepare_nvarchar_table; +GO + +DROP TABLE partition_vu_prepare_varchar_table; +GO + +DROP TABLE partition_vu_prepare_char_table; +GO + +DROP TABLE partition_vu_prepare_smalldatetime_table; +GO + +DROP TABLE partition_vu_prepare_datetime2_table; +GO + +DROP TABLE partition_vu_prepare_datetime_table; +GO + +DROP TABLE partition_vu_prepare_date_table; +GO + +DROP TABLE partition_vu_prepare_smallmoney_table; +GO + +DROP TABLE partition_vu_prepare_money_table; +GO + +DROP TABLE partition_vu_prepare_numeric_table; +GO + +DROP TABLE partition_vu_prepare_decimal_table; +GO + +DROP TABLE partition_vu_prepare_tinyint_table; +GO + +DROP TABLE partition_vu_prepare_smallint_table; +GO + +DROP TABLE partition_vu_prepare_bigint_table; +GO + +DROP TABLE partition_vu_prepare_int_table; +GO + +-------------------------------------------------- +--- DROP Partition Scheme +-------------------------------------------------- +DROP PARTITION SCHEME IntPartitionScheme +GO + +DROP PARTITION SCHEME BigIntPartitionScheme +GO + +DROP PARTITION SCHEME SmallIntPartitionScheme +GO + +DROP PARTITION SCHEME TinyIntPartitionScheme +GO + +DROP PARTITION SCHEME DecimalPartitionScheme +GO + +DROP PARTITION SCHEME NumericPartitionScheme +GO + +DROP PARTITION SCHEME MoneyPartitionScheme +GO + +DROP PARTITION SCHEME SmallMoneyPartitionScheme +GO + +DROP PARTITION SCHEME DatePartitionScheme +GO + +DROP PARTITION SCHEME DateTimePartitionScheme +GO + +DROP PARTITION SCHEME DateTime2PartitionScheme +GO + +DROP PARTITION SCHEME SmallDateTimePartitionScheme +GO + +DROP PARTITION SCHEME CharPartitionScheme +GO + +DROP PARTITION SCHEME VarCharPartitionScheme +GO + +DROP PARTITION SCHEME NVarCharPartitionScheme +GO + +DROP PARTITION SCHEME NCharPartitionScheme +GO + +DROP PARTITION SCHEME BinaryPartitionScheme +GO + +DROP PARTITION SCHEME VarBinaryPartitionScheme +GO + +DROP PARTITION SCHEME UniqueIdentifierPartitionScheme +GO + +------------------------------------------- +--- DROP Partition Function +------------------------------------------- +DROP PARTITION FUNCTION IntPartitionFunction +GO + +DROP PARTITION FUNCTION BigIntPartitionFunction +GO + +DROP PARTITION FUNCTION SmallIntPartitionFunction +GO + +DROP PARTITION FUNCTION TinyIntPartitionFunction +GO + +DROP PARTITION FUNCTION DecimalPartitionFunction +GO + +DROP PARTITION FUNCTION NumericPartitionFunction +GO + +DROP PARTITION FUNCTION MoneyPartitionFunction +GO + +DROP PARTITION FUNCTION SmallMoneyPartitionFunction +GO + +DROP PARTITION FUNCTION DatePartitionFunction +GO + +DROP PARTITION FUNCTION DateTimePartitionFunction +GO + +DROP PARTITION FUNCTION DateTime2PartitionFunction +GO + +DROP PARTITION FUNCTION SmallDateTimePartitionFunction +GO + +DROP PARTITION FUNCTION CharPartitionFunction +GO + +DROP PARTITION FUNCTION VarCharPartitionFunction +GO + +DROP PARTITION FUNCTION NVarCharPartitionFunction +GO + +DROP PARTITION FUNCTION NCharPartitionFunction +GO + +DROP PARTITION FUNCTION BinaryPartitionFunction +GO + +DROP PARTITION FUNCTION VarBinaryPartitionFunction +GO + +DROP PARTITION FUNCTION UniqueIdentifierPartitionFunction +GO