Skip to content

Commit

Permalink
Replace "magic" values with constants at DB2Platform
Browse files Browse the repository at this point in the history
  • Loading branch information
phansys committed Apr 10, 2023
1 parent 36850b6 commit ef7b89d
Showing 1 changed file with 31 additions and 9 deletions.
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 @@ public function getListTableColumnsSQL($table, $database = null)
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 getListTableColumnsSQL($table, $database = null)
*/
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 @@ public function getListTableIndexesSQL($table, $database = null)
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 @@ public function getListTableForeignKeysSQL($table)
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

0 comments on commit ef7b89d

Please sign in to comment.