function get_primary_key($table_name = null)
 {
     // let's see what the parent can do
     $primary_key = parent::get_primary_key($table_name);
     if ($primary_key !== FALSE) {
         return $primary_key;
     }
     // set default value for table_name if not set.
     if (!isset($table_name)) {
         $table_name = $this->table_name;
     }
     // postgre need this
     if ($this->subdriver == 'pgsql') {
         $SQL = "SELECT\n                  pg_attribute.attname\n                FROM pg_index, pg_class, pg_attribute\n                WHERE\n                  pg_class.oid = '" . $table_name . "'::regclass AND\n                  indrelid = pg_class.oid AND\n                  pg_attribute.attrelid = pg_class.oid AND\n                  pg_attribute.attnum = any(pg_index.indkey);";
         $query = $this->db->query($SQL);
         $row = $query->row();
         $primary_key = $row->attname;
     }
     return $primary_key;
 }