Increase pypi required_python field size to 255
What does this MR do?
Some clients are unable to upload pypi packages due to their required_python
setting be over 50 characters. This MR increases the limit and updates specs.
Migrations
Up
== 20200901214416 ChangePypiPythonVersionType: migrating ======================
-- column_exists?(:packages_pypi_metadata, :package_id)
-> 0.0021s
-- transaction_open?()
-> 0.0000s
-- columns(:packages_pypi_metadata)
-> 0.0014s
-- add_column(:packages_pypi_metadata, "required_python_for_type_change", :text, {:limit=>50, :precision=>nil, :scale=>nil})
-> 0.0080s
-- transaction_open?()
-> 0.0000s
-- exec_query("SELECT COUNT(*) AS count FROM \"packages_pypi_metadata\"")
-> 0.0009s
-- transaction_open?()
-> 0.0000s
-- execute("ALTER TABLE packages_pypi_metadata\nADD CONSTRAINT check_0d9aed55b2\nCHECK ( required_python_for_type_change IS NOT NULL )\nNOT VALID;\n")
-> 0.0009s
-- execute("ALTER TABLE packages_pypi_metadata VALIDATE CONSTRAINT check_0d9aed55b2;")
-> 0.0016s
-- indexes(:packages_pypi_metadata)
-> 0.0018s
-- foreign_keys(:packages_pypi_metadata)
-> 0.0033s
-- quote_table_name(:packages_pypi_metadata)
-> 0.0000s
-- quote_column_name(:required_python)
-> 0.0000s
-- quote_column_name("required_python_for_type_change")
-> 0.0000s
-- execute("CREATE OR REPLACE FUNCTION trigger_d5eb03a59792()\nRETURNS trigger AS\n$BODY$\nBEGIN\n NEW.\"required_python_for_type_change\" := NEW.\"required_python\";\n RETURN NEW;\nEND;\n$BODY$\nLANGUAGE 'plpgsql'\nVOLATILE\n")
-> 0.0055s
-- execute("DROP TRIGGER IF EXISTS trigger_d5eb03a59792\nON \"packages_pypi_metadata\"\n")
-> 0.0007s
-- execute("CREATE TRIGGER trigger_d5eb03a59792\nBEFORE INSERT OR UPDATE\nON \"packages_pypi_metadata\"\nFOR EACH ROW\nEXECUTE FUNCTION trigger_d5eb03a59792()\n")
-> 0.0016s
== 20200901214416 ChangePypiPythonVersionType: migrated (0.0573s) =============
== 20200909194014 ChangePypiPythonVersionTypeCleanup: migrating ===============
-- transaction()
-- execute("DROP TRIGGER IF EXISTS trigger_d5eb03a59792 ON packages_pypi_metadata")
-> 0.0007s
-- execute("DROP FUNCTION IF EXISTS trigger_d5eb03a59792()")
-> 0.0004s
-- remove_column(:packages_pypi_metadata, :required_python)
-> 0.0009s
-- rename_column(:packages_pypi_metadata, "required_python_for_type_change", :required_python)
-> 0.0059s
-> 0.0106s
== 20200909194014 ChangePypiPythonVersionTypeCleanup: migrated (0.0107s) ======
== 20200909194524 IncreasePypiVersionSize: migrating ==========================
-- transaction_open?()
-> 0.0000s
-- execute("ALTER TABLE packages_pypi_metadata\nADD CONSTRAINT check_379019d5da\nCHECK ( char_length(required_python) <= 255 )\nNOT VALID;\n")
-> 0.0008s
-- execute("ALTER TABLE packages_pypi_metadata VALIDATE CONSTRAINT check_379019d5da;")
-> 0.0013s
== 20200909194524 IncreasePypiVersionSize: migrated (0.0077s) =================
Down
== 20200909194524 IncreasePypiVersionSize: reverting ==========================
-- execute("ALTER TABLE packages_pypi_metadata\nDROP CONSTRAINT IF EXISTS check_379019d5da\n")
-> 0.0013s
== 20200909194524 IncreasePypiVersionSize: reverted (0.0072s) =================
== 20200909194014 ChangePypiPythonVersionTypeCleanup: reverting ===============
-- execute("UPDATE packages_pypi_metadata SET required_python = substring(required_python from 1 for 50)")
-> 0.0010s
-- column_exists?(:packages_pypi_metadata, :package_id)
-> 0.0022s
-- transaction_open?()
-> 0.0000s
-- columns(:packages_pypi_metadata)
-> 0.0011s
-- add_column(:packages_pypi_metadata, "required_python_for_type_change", "varchar(50)", {:limit=>nil, :precision=>nil, :scale=>nil})
-> 0.0023s
-- transaction_open?()
-> 0.0000s
-- exec_query("SELECT COUNT(*) AS count FROM \"packages_pypi_metadata\"")
-> 0.0007s
-- indexes(:packages_pypi_metadata)
-> 0.0016s
-- foreign_keys(:packages_pypi_metadata)
-> 0.0034s
-- quote_table_name(:packages_pypi_metadata)
-> 0.0000s
-- quote_column_name(:required_python)
-> 0.0000s
-- quote_column_name("required_python_for_type_change")
-> 0.0000s
-- execute("CREATE OR REPLACE FUNCTION trigger_d5eb03a59792()\nRETURNS trigger AS\n$BODY$\nBEGIN\n NEW.\"required_python_for_type_change\" := NEW.\"required_python\";\n RETURN NEW;\nEND;\n$BODY$\nLANGUAGE 'plpgsql'\nVOLATILE\n")
-> 0.0031s
-- execute("DROP TRIGGER IF EXISTS trigger_d5eb03a59792\nON \"packages_pypi_metadata\"\n")
-> 0.0003s
-- execute("CREATE TRIGGER trigger_d5eb03a59792\nBEFORE INSERT OR UPDATE\nON \"packages_pypi_metadata\"\nFOR EACH ROW\nEXECUTE FUNCTION trigger_d5eb03a59792()\n")
-> 0.0021s
== 20200909194014 ChangePypiPythonVersionTypeCleanup: reverted (0.0213s) ======
== 20200901214416 ChangePypiPythonVersionType: reverting ======================
-- transaction()
-- execute("DROP TRIGGER IF EXISTS trigger_d5eb03a59792 ON packages_pypi_metadata")
-> 0.0008s
-- execute("DROP FUNCTION IF EXISTS trigger_d5eb03a59792()")
-> 0.0003s
-- remove_column(:packages_pypi_metadata, :required_python)
-> 0.0006s
-- rename_column(:packages_pypi_metadata, "required_python_for_type_change", :required_python)
-> 0.0022s
-> 0.0075s
-- change_column_null(:packages_pypi_metadata, :required_python, false)
-> 0.0015s
== 20200901214416 ChangePypiPythonVersionType: reverted (0.0092s) =============
Screenshots
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entry -
Documentation (if required) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
-
Label as security and @ mention @gitlab-com/gl-security/appsec
-
The MR includes necessary changes to maintain consistency between UI, API, email, or other methods -
Security reports checked/validated by a reviewer from the AppSec team
Closes #241492 (closed)
Edited by Giorgenes Gelatti