code: public function upsert($table, $insertColumns, $updateColumns, &$params)
      {
          $insertColumns = $this->normalizeTableRowData($table, $insertColumns);
          if (!is_bool($updateColumns)) {
              $updateColumns = $this->normalizeTableRowData($table, $updateColumns);
          }
          if (version_compare($this->db->getServerVersion(), '9.5', '<')) {
              return $this->oldUpsert($table, $insertColumns, $updateColumns, $params);
          }
  
          return $this->newUpsert($table, $insertColumns, $updateColumns, $params);
      }
docs: {@inheritdoc}
  @see https://www.postgresql.org/docs/9.5/static/sql-insert.html#SQL-ON-CONFLICT
  @see https://stackoverflow.com/questions/1109061/insert-on-duplicate-update-in-postgresql/8702291#8702291