diff --git a/payment/src/main/resources/org/killbill/billing/payment/ddl.sql b/payment/src/main/resources/org/killbill/billing/payment/ddl.sql
index 9d9496e..e240187 100644
--- a/payment/src/main/resources/org/killbill/billing/payment/ddl.sql
+++ b/payment/src/main/resources/org/killbill/billing/payment/ddl.sql
@@ -14,7 +14,7 @@ CREATE TABLE payment_attempts (
amount numeric(15,9),
currency char(3),
plugin_name varchar(1024) NOT NULL,
- plugin_properties blob(8194),
+ plugin_properties mediumblob,
created_by varchar(50) NOT NULL,
created_date datetime NOT NULL,
updated_by varchar(50) NOT NULL,
@@ -45,7 +45,7 @@ CREATE TABLE payment_attempt_history (
amount numeric(15,9),
currency char(3),
plugin_name varchar(1024) NOT NULL,
- plugin_properties blob(8194),
+ plugin_properties mediumblob,
change_type char(6) NOT NULL,
created_by varchar(50) NOT NULL,
created_date datetime NOT NULL,
diff --git a/util/src/main/resources/org/killbill/billing/util/ddl-postgresql.sql b/util/src/main/resources/org/killbill/billing/util/ddl-postgresql.sql
index 8d2c5e0..4306a96 100644
--- a/util/src/main/resources/org/killbill/billing/util/ddl-postgresql.sql
+++ b/util/src/main/resources/org/killbill/billing/util/ddl-postgresql.sql
@@ -1,8 +1,14 @@
/* We cannot use timestamp in MySQL because of the implicit TimeZone conversions it does behind the scenes */
+DROP DOMAIN IF EXISTS datetime CASCADE;
CREATE DOMAIN datetime AS timestamp without time zone;
/* TEXT in MySQL is smaller then MEDIUMTEXT */
+DROP DOMAIN IF EXISTS mediumtext CASCADE;
CREATE DOMAIN mediumtext AS text;
+/* PostgreSQL uses BYTEA to manage all BLOB types */
+DROP DOMAIN IF EXISTS mediumblob CASCADE;
+CREATE DOMAIN mediumblob AS bytea;
+CREATE OR REPLACE LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION last_insert_id() RETURNS BIGINT AS $$
DECLARE
result BIGINT;