Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace "magic" values with constants at DB2Platform #5996

Merged
merged 1 commit into from Apr 11, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
40 changes: 31 additions & 9 deletions src/Platforms/DB2Platform.php
Expand Up @@ -25,6 +25,25 @@

class DB2Platform extends AbstractPlatform
{
/** @see https://www.ibm.com/docs/en/db2/11.5?topic=views-syscatcolumns */
private const SYSCAT_COLUMNS_GENERATED_DEFAULT = 'D';

/** @see https://www.ibm.com/docs/en/db2/11.5?topic=views-syscatindexes */
private const SYSCAT_INDEXES_UNIQUERULE_PERMITS_DUPLICATES = 'D';
private const SYSCAT_INDEXES_UNIQUERULE_IMPLEMENTS_PRIMARY_KEY = 'P';

/** @see https://www.ibm.com/docs/en/db2/11.5?topic=views-syscattabconst */
private const SYSCAT_TABCONST_TYPE_PRIMARY_KEY = 'P';

/** @see https://www.ibm.com/docs/en/db2/11.5?topic=views-syscatreferences */
private const SYSCAT_REFERENCES_UPDATERULE_RESTRICT = 'R';
private const SYSCAT_REFERENCES_DELETERULE_CASCADE = 'C';
private const SYSCAT_REFERENCES_DELETERULE_SET_NULL = 'N';
private const SYSCAT_REFERENCES_DELETERULE_RESTRICT = 'R';

/** @see https://www.ibm.com/docs/en/db2-for-zos/11?topic=tables-systables */
private const SYSIBM_SYSTABLES_TYPE_TABLE = 'T';

/**
* {@inheritdoc}
*
Expand Down Expand Up @@ -362,14 +381,14 @@
c.remarks AS comment,
k.colseq,
CASE
WHEN c.generated = 'D' THEN 1
WHEN c.generated = '" . self::SYSCAT_COLUMNS_GENERATED_DEFAULT . "' THEN 1
ELSE 0
END AS autoincrement
FROM syscat.columns c
LEFT JOIN (syscat.keycoluse k JOIN syscat.tabconst tc
ON (k.tabschema = tc.tabschema
AND k.tabname = tc.tabname
AND tc.type = 'P'))
AND tc.type = '" . self::SYSCAT_TABCONST_TYPE_PRIMARY_KEY . "'))
ON (c.tabschema = k.tabschema
AND c.tabname = k.tabname
AND c.colname = k.colname)
Expand All @@ -391,7 +410,8 @@
*/
public function getListTablesSQL()
{
return "SELECT NAME FROM SYSIBM.SYSTABLES WHERE TYPE = 'T' AND CREATOR = CURRENT_USER";
return "SELECT NAME FROM SYSIBM.SYSTABLES WHERE TYPE = '" . self::SYSIBM_SYSTABLES_TYPE_TABLE . "'"
. ' AND CREATOR = CURRENT_USER';

Check warning on line 414 in src/Platforms/DB2Platform.php

View check run for this annotation

Codecov / codecov/patch

src/Platforms/DB2Platform.php#L413-L414

Added lines #L413 - L414 were not covered by tests
}

/**
Expand All @@ -416,11 +436,13 @@
return "SELECT idx.INDNAME AS key_name,
idxcol.COLNAME AS column_name,
CASE
WHEN idx.UNIQUERULE = 'P' THEN 1
WHEN idx.UNIQUERULE = '" . self::SYSCAT_INDEXES_UNIQUERULE_IMPLEMENTS_PRIMARY_KEY . "'
THEN 1
ELSE 0
END AS primary,
CASE
WHEN idx.UNIQUERULE = 'D' THEN 1
WHEN idx.UNIQUERULE = '" . self::SYSCAT_INDEXES_UNIQUERULE_PERMITS_DUPLICATES . "'
THEN 1
ELSE 0
END AS non_unique
FROM SYSCAT.INDEXES AS idx
Expand All @@ -444,13 +466,13 @@
pkcol.COLNAME AS foreign_column,
fk.CONSTNAME AS index_name,
CASE
WHEN fk.UPDATERULE = 'R' THEN 'RESTRICT'
WHEN fk.UPDATERULE = '" . self::SYSCAT_REFERENCES_UPDATERULE_RESTRICT . "' THEN 'RESTRICT'
ELSE NULL
END AS on_update,
CASE
WHEN fk.DELETERULE = 'C' THEN 'CASCADE'
WHEN fk.DELETERULE = 'N' THEN 'SET NULL'
WHEN fk.DELETERULE = 'R' THEN 'RESTRICT'
WHEN fk.DELETERULE = '" . self::SYSCAT_REFERENCES_DELETERULE_CASCADE . "' THEN 'CASCADE'
WHEN fk.DELETERULE = '" . self::SYSCAT_REFERENCES_DELETERULE_SET_NULL . "' THEN 'SET NULL'
WHEN fk.DELETERULE = '" . self::SYSCAT_REFERENCES_DELETERULE_RESTRICT . "' THEN 'RESTRICT'
ELSE NULL
END AS on_delete
FROM SYSCAT.REFERENCES AS fk
Expand Down