/**
  * @return Table[]
  */
 private function readTables()
 {
     $pdo = PDOS::getInstance();
     //Getting all fields of all tables from selected schema
     $query = $pdo->prepare("\n        SELECT\n          table_name,\n          column_name,\n          column_default,\n          data_type,\n          pg_get_serial_sequence(table_name, column_name) AS sequence_name\n        FROM\n          information_schema.columns\n        WHERE\n          table_schema = '" . DBSCHEMA . "'\n          AND table_name in (SELECT table_name\n            FROM information_schema.tables\n            WHERE table_schema= '" . DBSCHEMA . "'\n            AND table_type='BASE TABLE'\n          )\n        ORDER BY\n          table_name");
     $query->execute();
     $fields = $query->fetchAll();
     /** @var Table[] $tables */
     $tables = array();
     foreach ($fields as $f) {
         //Creating table if it doesn't exist yet
         if (!array_key_exists($f['table_name'], $tables)) {
             $tables[$f['table_name']] = new Table($f['table_name']);
         }
         $table =& $tables[$f['table_name']];
         $field = new Field($f['column_name']);
         $field->setDefaultValue(is_null($f['sequence_name']) ? $f['column_default'] : null);
         $field->setType($f['data_type']);
         if (!is_null($f['sequence_name'])) {
             $array = explode(DBSCHEMA . '.', $f['sequence_name']);
             $field->setSequence($array[1]);
         }
         $table->addField($field);
     }
     return $tables;
 }