Fix json_to_jsonb migrations and prevent \u0000 error
parent
e1182fb69b
commit
3d8f637e55
|
@ -17,7 +17,7 @@ class Migration(migrations.Migration):
|
||||||
ALTER TABLE "{table_name}"
|
ALTER TABLE "{table_name}"
|
||||||
ALTER COLUMN "{column_name}"
|
ALTER COLUMN "{column_name}"
|
||||||
TYPE jsonb
|
TYPE jsonb
|
||||||
USING to_json("{column_name}"::text)::jsonb;
|
USING regexp_replace("{column_name}"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""".format(
|
""".format(
|
||||||
table_name="custom_attributes_epiccustomattributesvalues",
|
table_name="custom_attributes_epiccustomattributesvalues",
|
||||||
column_name="attributes_values",
|
column_name="attributes_values",
|
||||||
|
@ -29,7 +29,7 @@ class Migration(migrations.Migration):
|
||||||
ALTER TABLE "{table_name}"
|
ALTER TABLE "{table_name}"
|
||||||
ALTER COLUMN "{column_name}"
|
ALTER COLUMN "{column_name}"
|
||||||
TYPE jsonb
|
TYPE jsonb
|
||||||
USING to_json("{column_name}"::text)::jsonb;
|
USING regexp_replace("{column_name}"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""".format(
|
""".format(
|
||||||
table_name="custom_attributes_userstorycustomattributesvalues",
|
table_name="custom_attributes_userstorycustomattributesvalues",
|
||||||
column_name="attributes_values",
|
column_name="attributes_values",
|
||||||
|
@ -41,7 +41,7 @@ class Migration(migrations.Migration):
|
||||||
ALTER TABLE "{table_name}"
|
ALTER TABLE "{table_name}"
|
||||||
ALTER COLUMN "{column_name}"
|
ALTER COLUMN "{column_name}"
|
||||||
TYPE jsonb
|
TYPE jsonb
|
||||||
USING to_json("{column_name}"::text)::jsonb;
|
USING regexp_replace("{column_name}"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""".format(
|
""".format(
|
||||||
table_name="custom_attributes_taskcustomattributesvalues",
|
table_name="custom_attributes_taskcustomattributesvalues",
|
||||||
column_name="attributes_values",
|
column_name="attributes_values",
|
||||||
|
@ -53,7 +53,7 @@ class Migration(migrations.Migration):
|
||||||
ALTER TABLE "{table_name}"
|
ALTER TABLE "{table_name}"
|
||||||
ALTER COLUMN "{column_name}"
|
ALTER COLUMN "{column_name}"
|
||||||
TYPE jsonb
|
TYPE jsonb
|
||||||
USING to_json("{column_name}"::text)::jsonb;
|
USING regexp_replace("{column_name}"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""".format(
|
""".format(
|
||||||
table_name="custom_attributes_issuecustomattributesvalues",
|
table_name="custom_attributes_issuecustomattributesvalues",
|
||||||
column_name="attributes_values",
|
column_name="attributes_values",
|
||||||
|
|
|
@ -16,13 +16,33 @@ class Migration(migrations.Migration):
|
||||||
migrations.RunSQL(
|
migrations.RunSQL(
|
||||||
"""
|
"""
|
||||||
ALTER TABLE "history_historyentry"
|
ALTER TABLE "history_historyentry"
|
||||||
ALTER COLUMN "delete_comment_user" TYPE jsonb USING to_json("delete_comment_user"::text)::jsonb,
|
ALTER COLUMN "delete_comment_user"
|
||||||
ALTER COLUMN "comment_versions" TYPE jsonb USING to_json("comment_versions"::text)::jsonb,
|
TYPE jsonb
|
||||||
ALTER COLUMN "values_diff_cache" TYPE jsonb USING to_json("values_diff_cache"::text)::jsonb,
|
USING regexp_replace("delete_comment_user"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
ALTER COLUMN "user" TYPE jsonb USING to_json("user"::text)::jsonb,
|
|
||||||
ALTER COLUMN "diff" TYPE jsonb USING to_json("diff"::text)::jsonb,
|
ALTER COLUMN "comment_versions"
|
||||||
ALTER COLUMN "snapshot" TYPE jsonb USING to_json("snapshot"::text)::jsonb,
|
TYPE jsonb
|
||||||
ALTER COLUMN "values" TYPE jsonb USING to_json("values"::text)::jsonb;
|
USING regexp_replace("comment_versions"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "values_diff_cache"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("values_diff_cache"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "user"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("user"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "diff"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("diff"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "snapshot"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("snapshot"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "values"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("values"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""",
|
""",
|
||||||
reverse_sql=migrations.RunSQL.noop
|
reverse_sql=migrations.RunSQL.noop
|
||||||
),
|
),
|
||||||
|
|
|
@ -16,23 +16,54 @@ class Migration(migrations.Migration):
|
||||||
migrations.RunSQL(
|
migrations.RunSQL(
|
||||||
"""
|
"""
|
||||||
ALTER TABLE "projects_projectmodulesconfig"
|
ALTER TABLE "projects_projectmodulesconfig"
|
||||||
ALTER COLUMN "config" TYPE jsonb USING to_json("config"::text)::jsonb;
|
ALTER COLUMN "config"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("config"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""",
|
""",
|
||||||
reverse_sql=migrations.RunSQL.noop
|
reverse_sql=migrations.RunSQL.noop
|
||||||
),
|
),
|
||||||
migrations.RunSQL(
|
migrations.RunSQL(
|
||||||
"""
|
"""
|
||||||
ALTER TABLE "projects_projecttemplate"
|
ALTER TABLE "projects_projecttemplate"
|
||||||
ALTER COLUMN "roles" TYPE jsonb USING to_json("roles"::text)::jsonb,
|
ALTER COLUMN "roles"
|
||||||
ALTER COLUMN "default_options" TYPE jsonb USING to_json("default_options"::text)::jsonb,
|
TYPE jsonb
|
||||||
ALTER COLUMN "epic_statuses" TYPE jsonb USING to_json("epic_statuses"::text)::jsonb,
|
USING regexp_replace("roles"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
ALTER COLUMN "us_statuses" TYPE jsonb USING to_json("us_statuses"::text)::jsonb,
|
|
||||||
ALTER COLUMN "points" TYPE jsonb USING to_json("points"::text)::jsonb,
|
ALTER COLUMN "default_options"
|
||||||
ALTER COLUMN "task_statuses" TYPE jsonb USING to_json("task_statuses"::text)::jsonb,
|
TYPE jsonb
|
||||||
ALTER COLUMN "issue_statuses" TYPE jsonb USING to_json("issue_statuses"::text)::jsonb,
|
USING regexp_replace("default_options"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
ALTER COLUMN "issue_types" TYPE jsonb USING to_json("issue_types"::text)::jsonb,
|
|
||||||
ALTER COLUMN "priorities" TYPE jsonb USING to_json("priorities"::text)::jsonb,
|
ALTER COLUMN "epic_statuses"
|
||||||
ALTER COLUMN "severities" TYPE jsonb USING to_json("severities"::text)::jsonb;
|
TYPE jsonb
|
||||||
|
USING regexp_replace("epic_statuses"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "us_statuses"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("us_statuses"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "points"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("points"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "task_statuses"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("task_statuses"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "issue_statuses"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("issue_statuses"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "issue_types"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("issue_types"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "priorities"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("priorities"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "severities"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("severities"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""",
|
""",
|
||||||
reverse_sql=migrations.RunSQL.noop
|
reverse_sql=migrations.RunSQL.noop
|
||||||
),
|
),
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Migration(migrations.Migration):
|
||||||
ALTER TABLE "{table_name}"
|
ALTER TABLE "{table_name}"
|
||||||
ALTER COLUMN "{column_name}"
|
ALTER COLUMN "{column_name}"
|
||||||
TYPE jsonb
|
TYPE jsonb
|
||||||
USING to_json("{column_name}"::text)::jsonb;
|
USING regexp_replace("{column_name}"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""".format(
|
""".format(
|
||||||
table_name="timeline_timeline",
|
table_name="timeline_timeline",
|
||||||
column_name="data",
|
column_name="data",
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Migration(migrations.Migration):
|
||||||
ALTER TABLE "{table_name}"
|
ALTER TABLE "{table_name}"
|
||||||
ALTER COLUMN "{column_name}"
|
ALTER COLUMN "{column_name}"
|
||||||
TYPE jsonb
|
TYPE jsonb
|
||||||
USING to_json("{column_name}"::text)::jsonb;
|
USING regexp_replace("{column_name}"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""".format(
|
""".format(
|
||||||
table_name="users_authdata",
|
table_name="users_authdata",
|
||||||
column_name="extra",
|
column_name="extra",
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Migration(migrations.Migration):
|
||||||
ALTER TABLE "{table_name}"
|
ALTER TABLE "{table_name}"
|
||||||
ALTER COLUMN "{column_name}"
|
ALTER COLUMN "{column_name}"
|
||||||
TYPE jsonb
|
TYPE jsonb
|
||||||
USING to_json("{column_name}"::text)::jsonb;
|
USING regexp_replace("{column_name}"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""".format(
|
""".format(
|
||||||
table_name="userstorage_storageentry",
|
table_name="userstorage_storageentry",
|
||||||
column_name="value",
|
column_name="value",
|
||||||
|
|
|
@ -16,9 +16,17 @@ class Migration(migrations.Migration):
|
||||||
migrations.RunSQL(
|
migrations.RunSQL(
|
||||||
"""
|
"""
|
||||||
ALTER TABLE "webhooks_webhooklog"
|
ALTER TABLE "webhooks_webhooklog"
|
||||||
ALTER COLUMN "request_headers" TYPE jsonb USING to_json("request_headers"::text)::jsonb,
|
ALTER COLUMN "request_headers"
|
||||||
ALTER COLUMN "request_data" TYPE jsonb USING to_json("request_data"::text)::jsonb,
|
TYPE jsonb
|
||||||
ALTER COLUMN "response_headers" TYPE jsonb USING to_json("response_headers"::text)::jsonb;
|
USING regexp_replace("request_headers"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "request_data"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("request_data"::text, '\\u0000', '\\\\u0000', 'g')::jsonb,
|
||||||
|
|
||||||
|
ALTER COLUMN "response_headers"
|
||||||
|
TYPE jsonb
|
||||||
|
USING regexp_replace("response_headers"::text, '\\u0000', '\\\\u0000', 'g')::jsonb;
|
||||||
""",
|
""",
|
||||||
reverse_sql=migrations.RunSQL.noop
|
reverse_sql=migrations.RunSQL.noop
|
||||||
),
|
),
|
||||||
|
|
Loading…
Reference in New Issue