| @@ 128-161 (lines=34) @@ | ||
| 125 | * @return \PommProject\Foundation\ConvertedResultIterator|null |
|
| 126 | * @deprecated |
|
| 127 | */ |
|
| 128 | public function getTableFieldInformation($oid) |
|
| 129 | { |
|
| 130 | $sql = <<<SQL |
|
| 131 | select |
|
| 132 | att.attname as "name", |
|
| 133 | case |
|
| 134 | when name.nspname = 'pg_catalog' then typ.typname |
|
| 135 | else format('%s.%s', name.nspname, typ.typname) |
|
| 136 | end as "type", |
|
| 137 | def.adsrc as "default", |
|
| 138 | att.attnotnull as "is_notnull", |
|
| 139 | dsc.description as "comment", |
|
| 140 | att.attnum as "position", |
|
| 141 | att.attnum = any(ind.indkey) as "is_primary" |
|
| 142 | from |
|
| 143 | pg_catalog.pg_attribute att |
|
| 144 | join pg_catalog.pg_type typ on att.atttypid = typ.oid |
|
| 145 | join pg_catalog.pg_class cla on att.attrelid = cla.oid |
|
| 146 | left join pg_catalog.pg_description dsc on cla.oid = dsc.objoid and att.attnum = dsc.objsubid |
|
| 147 | left join pg_catalog.pg_attrdef def on att.attrelid = def.adrelid and att.attnum = def.adnum |
|
| 148 | left join pg_catalog.pg_index ind on cla.oid = ind.indrelid and ind.indisprimary |
|
| 149 | left join pg_catalog.pg_namespace name on typ.typnamespace = name.oid |
|
| 150 | where |
|
| 151 | {condition} |
|
| 152 | order by |
|
| 153 | att.attnum |
|
| 154 | SQL; |
|
| 155 | $where = Where::create('att.attrelid = $*', [$oid]) |
|
| 156 | ->andWhere('att.attnum > 0') |
|
| 157 | ->andWhere('not att.attisdropped') |
|
| 158 | ; |
|
| 159 | ||
| 160 | return $this->executeSql($sql, $where); |
|
| 161 | } |
|
| 162 | ||
| 163 | /** |
|
| 164 | * getSchemaOid |
|
| @@ 144-179 (lines=36) @@ | ||
| 141 | * @param Where $where |
|
| 142 | * @return ConvertedResultIterator |
|
| 143 | */ |
|
| 144 | protected function getTableFieldInformationWhere(Where $where) |
|
| 145 | { |
|
| 146 | $sql = <<<SQL |
|
| 147 | select |
|
| 148 | att.attname as "name", |
|
| 149 | case |
|
| 150 | when name.nspname = 'pg_catalog' then typ.typname |
|
| 151 | else format('%s.%s', name.nspname, typ.typname) |
|
| 152 | end as "type", |
|
| 153 | def.adsrc as "default", |
|
| 154 | att.attnotnull as "is_notnull", |
|
| 155 | dsc.description as "comment", |
|
| 156 | att.attnum as "position", |
|
| 157 | att.attnum = any(ind.indkey) as "is_primary" |
|
| 158 | from |
|
| 159 | pg_catalog.pg_attribute att |
|
| 160 | join pg_catalog.pg_type typ on att.atttypid = typ.oid |
|
| 161 | join pg_catalog.pg_class cla on att.attrelid = cla.oid |
|
| 162 | join pg_catalog.pg_namespace clns on cla.relnamespace = clns.oid |
|
| 163 | left join pg_catalog.pg_description dsc on cla.oid = dsc.objoid and att.attnum = dsc.objsubid |
|
| 164 | left join pg_catalog.pg_attrdef def on att.attrelid = def.adrelid and att.attnum = def.adnum |
|
| 165 | left join pg_catalog.pg_index ind on cla.oid = ind.indrelid and ind.indisprimary |
|
| 166 | left join pg_catalog.pg_namespace name on typ.typnamespace = name.oid |
|
| 167 | where |
|
| 168 | {condition} |
|
| 169 | order by |
|
| 170 | att.attnum |
|
| 171 | SQL; |
|
| 172 | ||
| 173 | $where = $where |
|
| 174 | ->andWhere('att.attnum > 0') |
|
| 175 | ->andWhere('not att.attisdropped') |
|
| 176 | ; |
|
| 177 | ||
| 178 | return $this->executeSql($sql, $where); |
|
| 179 | } |
|
| 180 | ||
| 181 | /** |
|
| 182 | * getTableFieldInformation |
|