code: private function getSelectSql()
      {
          if (self::LOCK_TRANSACTIONAL === $this->lockMode) {
              $this->beginTransaction();
  
              switch ($this->driver) {
                  case 'mysql':
                  case 'oci':
                  case 'pgsql':
                      return "SELECT $this->dataCol, $this->lifetimeCol, $this->timeCol FROM $this->table WHERE $this->idCol = :id FOR UPDATE";
                  case 'sqlsrv':
                      return "SELECT $this->dataCol, $this->lifetimeCol, $this->timeCol FROM $this->table WITH (UPDLOCK, ROWLOCK) WHERE $this->idCol = :id";
                  case 'sqlite':
                      // we already locked when starting transaction
                      break;
                  default:
                      throw new \DomainException(sprintf('Transactional locks are currently not implemented for PDO driver "%s".', $this->driver));
              }
          }
  
          return "SELECT $this->dataCol, $this->lifetimeCol, $this->timeCol FROM $this->table WHERE $this->idCol = :id";
      }
docs: Return a locking or nonlocking SQL query to read session information.
  
  @return string The SQL string
  
  @throws \DomainException When an unsupported PDO driver is used