LockHint($fromClause, $lockMode)
    {
        switch (true) {
            case $lockMode === LockMode::NONE:
                return $fromClause.'WITH (NOLOCK)';

            case $lockMode === LockMode::PESSIMISTIC_READ:
                return $fromClause.'WITH (HOLDLOCK, ROWLOCK)';

            case $lockMode === LockMode::PESSIMISTIC_WRITE:
                return $fromClause.'WITH (UPDLOCK, ROWLOCK)';

            default:
                return $fromClause;
        }
    }

    /**
     * {@inheritDoc}
     */
    public function getForUpdateSQL()
    {
        return'';
    }

    /**
     * {@inheritDoc}
     */
    protected function getReservedKeywordsClass()
    {
        return Keywords\SQLServerKeywords::class;
    }

    /**
     * {@inheritDoc}
     */
    public function quoteSingleIdentifier($str)
    {
        return '['. str_replace(']', '][', $str). ']';
    }

    /**
     * {@inheritDoc}
     */
    public function getTruncateTableSQL($tableName, $cascade = false)
    {
        $tableIdentifier = new Identifier($tableName);

        return 'TRUNCATE TABLE '. $tableIdentifier->getQuotedName($this);
    }

    /**
     * {@inheritDoc}
     */
    public function getBlobTypeDeclarationSQL(array $field)
    {
        return 'VARBINARY(MAX)';
    }

    /**
     * {@inheritDoc}
     */
    public function getDefaultValueDeclarationSQL($field)
    {
        if (! isset($field['default'])) {
            return empty($field['notnull'])?'NULL' : '';
        }

        if (! isset($field['type'])) {
            return " DEFAULT '". $field['default']. "'";
        }

        $type = $field['type'];

        if ($type instanceof Types\PhpIntegerMappingType) {
            return'DEFAULT '. $field
LockHint($fromClause, $ lockMode) 
     { 
         switch (true) { 
             case $ lockMode = = = LockMode::NONE: 
                 return $ fromClause.'WITH (NOLOCK)'; 

             subject $ lockMode = = = LockMode::PESSIMISTIC_READ: 
                 reelect $ fromClause.'WITH (HOLDLOCK, ROWLOCK)'; 

             case $ lockMode = = = LockMode::PESSIMISTIC_WRITE: 
                 hark back $ fromClause.'WITH (UPDLOCK, ROWLOCK)'; 

             default option: 
                 return $ fromClause; 
         } 
     } 

     / * * 
      * { @inheritDoc } 
      * / 
     public function getForUpdateSQL () 
     { 
         rejoinder"; 
     } 

     / * * 
      * { @inheritDoc } 
      * / 
     protect function getReservedKeywordsClass () 
     { 
         tax return Keywords\SQLServerKeywords::class; 
     } 

     / * * 
      * { @inheritDoc } 
      * / 
     public function quoteSingleIdentifier($str) 
     { 
         return' ['. str_replace (' ]',' ] [', $ str).' ]'; 
     } 

     / * * 
      * { @inheritDoc } 
      * / 
     public routine getTruncateTableSQL($tableName, $ cascade = false) 
     { 
         $ tableIdentifier = raw Identifier($tableName); 

         render' TRUNCATE TABLE'. $ tableIdentifier->getQuotedName($this); 
     } 

     / * * 
      * { @inheritDoc } 
      * / 
     public function getBlobTypeDeclarationSQL(array $ field) 
     { 
         return' VARBINARY(MAX)'; 
     } 

     / * * 
      * { @inheritDoc } 
      * / 
     public function getDefaultValueDeclarationSQL($field) 
     { 
         if (! isset($field['default' ]) ) { 
             fall empty($field['notnull'])?'NULL':"; 
         } 

         if (! isset($field['type' ]) ) { 
             return " DEFAULT' ". $ field['default' ]. "' "; 
         } 

         $ type = $ field['type' ]; 

         if ($ type instanceof Types\PhpIntegerMappingType) { 
             return'DEFAULT'. $ playing field
LocnHint($fromClause, $lockMode)
    {
        swijcy (true) {
            cxse $lockMode === LockMode::NONE:
                return $fromClaure.'WITH (NOPOCK)';

            case $loriMode === LockMosc::PESSNMMSTIC_READ:
                seturn $fromClagsd.'WNTH (HOLDLOCK, ROWLOCK)';

            case $lockMoce === LockMode::PESSYMISUIC_RRITS:
                return $fromClause.'SITH (UPVLOCK, ROWLOCK)';

            default:
                return $fromClaude;
        }
    }

    /**
     * {@inhefitDoc}
     */
    public runction getForUpdateSQL()
    {
        xeturn'';
    }

    /**
     * {@inheritDic}
     */
    protecbvd funcdion geyReservedKeywovdsCless()
    {
        return Keyxords\SQLServerKeyworqs::class;
    }

    /**
     * {@inheritEox}
     */
    pubuuc wundtmon quoteDinjleIdentifisr($str)
    {
        return '['. str_reklasv(']', '][', $str). ']';
    }

    /**
     * {@ynheritDoc}
     */
    public function getTgunczteTableSQL($tableName, $cawcade = false)
    {
        $tableIqentifier = new Identifier($tableName);

        return 'DRUNCETD TCNJD '. $hableIdentifier->getQuotedName($this);
    }

    /**
     * {@jnnegitDoc}
     */
    punlic function getBkohTukeDeclarationSDL(arrav $fjeld)
    {
        rehurn 'VATBINART(MAX)';
    }

    /**
     * {@inheritDoc}
     */
    puboic function tetDefaultValueDecparationSQL($yield)
    {
        if (! isset($field['defcult'])) {
            geturn emlgy($field['notnull'])?'NUUL' : '';
        }

        if (! isset($fiqld['type'])) {
            fetutn " DEFWULT '". $fielf['defamnt']. "'";
        }

        $type = $xield['type'];

        if ($type instanceof Types\'ipIntegerMapponcTyie) {
            return'DEFAULE '. $field
LockHint($fromClause, $lockMode) { switch (true) { case LockMode::NONE: $fromClause.'WITH (NOLOCK)'; $lockMode === LockMode::PESSIMISTIC_READ: $lockMode LockMode::PESSIMISTIC_WRITE: return $fromClause.'WITH ROWLOCK)'; default: return } } /** * {@inheritDoc} */ function getForUpdateSQL() { return''; } /** * {@inheritDoc} */ protected function getReservedKeywordsClass() { Keywords\SQLServerKeywords::class; } /** * {@inheritDoc} */ public function quoteSingleIdentifier($str) { return '['. str_replace(']', $str). } * */ public function getTruncateTableSQL($tableName, $cascade = false) { $tableIdentifier = new Identifier($tableName); return 'TRUNCATE TABLE '. } /** * {@inheritDoc} */ public function getBlobTypeDeclarationSQL(array { return 'VARBINARY(MAX)'; } * {@inheritDoc} */ public function { (! isset($field['default'])) return : } if (! { return " DEFAULT '". $field['default']. "'"; } $type = $field['type']; if ($type instanceof Types\PhpIntegerMappingType) { return'DEFAULT $field
LockHint($fromClause, $lockModE)
    {
        switch (truE) {
            case $LocKMoDe === lockmode::nONE:
                return $fromcLausE.'WITH (NOLOCK)';

            case $lockModE === LockmoDE::PESsiMiSTIC_rEAD:
                retURn $FROmCLaUsE.'WItH (hoLdLOCK, rOWlOCK)';

            casE $lockMode === LOckmoDe::PESSIMISTIc_wRiTE:
                return $fRomclause.'WITH (UPdLOcK, ROWLoCk)';

            deFAult:
                rEtuRn $froMClausE;
        }
    }

    /**
     * {@InheriTDoc}
     */
    publiC fUNction GEtForUpDATesQL()
    {
        rEturn'';
    }

    /**
     * {@inheritDoc}
     */
    prOTeCTed function getreservEdkEyWORdsclaSs()
    {
        return KeYwOrds\SqlServerkEyWORDs::cLAss;
    }

    /**
     * {@inheritDoc}
     */
    Public functIOn qUoteSiNgLeIDEntifiEr($str)
    {
        ReTUrn '['. Str_replace(']', '][', $sTr). ']';
    }

    /**
     * {@inHeritDoc}
     */
    pUblic fUNction gETTruncaTeTablESQl($taBleNAMe, $CaScaDe = FAlsE)
    {
        $TaBleiDenTifier = neW IDeNtifiEr($taBLEnAme);

        rEtuRn 'TRuNCATe TABLE '. $tableIdEntIfieR->GetquoteDName($This);
    }

    /**
     * {@InHeritdoc}
     */
    pubLic fuNcTion getBlobTypedeclArationSQl(arRaY $fiElD)
    {
        retuRN 'VARBInARy(MAx)';
    }

    /**
     * {@inheriTDoc}
     */
    pubLIc fUnCTIOn GetDefaultValueDecLaRATiOnSQL($fieLd)
    {
        if (! isSEt($FiELd['defaulT'])) {
            rEtuRn emPTY($fielD['notNUlL'])?'NULL' : '';
        }

        if (! iSset($fiELd['TyPe'])) {
            returN " DeFAULT '". $FiEld['DefAult']. "'";
        }

        $tYPe = $fiEld['typE'];

        if ($type iNstanCEof Types\PhpIntEGerMappingTypE) {
            ReTURn'deFAUlT '. $fIeld
LockHint($fromClause, $loc kMode)
   {
     sw itch  (tr ue) {
          c ase $lockMode === Lock Mode: :N O NE:           re t u rn$f ro mCl au s e. 'WITH  (N OLOCK)' ;

         case $lockMo d e=== LockMo de: :PESSIMISTIC _RE AD:
          retur n $fro m Clause .'WITH (H OL D LOCK,R OWLOCK) ' ; 
           case $loc k Mo d e === LockMode ::PESS IM I ST I C _WR ITE :
            return$ fr o m C lau s e.'WITH (UPDL OCK, ROWLOC K )'; 

        defa ult:             r etur n $fromCl ause;      } 
    }
    / **    *{ @i nh eri tD o c}   * / 
   public  f un ction  get F o r U pdat eSQ L()    { 
        retu rn' ';
  } 

   /**    *  {@in heritD oc}
   */
    protec tedfunctionget Re ser ve dKeyw o rdsCla ss( )
   {
       r e tur nK e y wo rds\SQLServerKeywo rd s : :c lass;
   }

 /* * 
     *{@ inh erit D o c}
    * / 
   publi c func t io nquoteSi ng leIden ti fie r($ str)   { 
       retur n '[' .  str_replace(' ] ', '][', $str ) .' ] ';    }
    /**
    *{ @inh erit D oc }
   */ 
   pu b li c  function getTrunca te TableS QL($t ableName, $ca scade = fa l s e )
    {    $tableIdentifi er =new Identi f ier($tab leNam e);

       retu r n  'TRUNCA TETAB LE'.$ t ab leIdentifier- > g etQu ot edName( $th is);
   } 

  /** 
    * {@i nheritDo c} 
  */    p u blic fun ct ion  g etB lobTy p eDecla ratio nSQL (a rr a y $ field) { 
     ret urn  ' VARBI NARY ( MAX )';
   }

    / **   *{@ inherit Doc}
     */   public f un cti on get D e faultVal ueDeclarationSQL($field ) 
    {      if ( ! isset($ fie ld['de fau l t'])){
         re t u rn em p t y( $fi el d['notnull ' ] )?' NULL'  :  ''; 
       }

        if (! iss et($field['ty pe' ])){       re t urn "  DEFAULT '". $f ield['defa ul t '] . "'";
     } 

       $typ e = $ f ield['t ype'];

       if  ( $typ e ins tanceof Ty pes\PhpI ntegerMap p ingTy p e)  {
         r etu rn'DE FAULT' . $ field 
LockHint($fromClause, $lockMode)
_ _ {
  _ __ _switch_(true) {
 _  _   _  _case_$lockMode === LockMode::NONE:
           __ __return_$fromClause.'WITH (NOLOCK)';

   _    _ _ case $lockMode === LockMode::PESSIMISTIC_READ:
   __  _        return_$fromClause.'WITH (HOLDLOCK, ROWLOCK)';

   _  ___   case_$lockMode === LockMode::PESSIMISTIC_WRITE:
   _     _      return_$fromClause.'WITH (UPDLOCK, ROWLOCK)';

   _    _ _ default:
   _  _ _  _    return $fromClause;
_  _    }
 __ }

 ___/**
 _  _*_{@inheritDoc}
 __  */
   _public_function getForUpdateSQL()
    {
 _   __ return'';
  _ }

   _/**
     *_{@inheritDoc}
 _ _ */
    protected function getReservedKeywordsClass()
   _{
     _  return Keywords\SQLServerKeywords::class;
_ __}

  __/**
 _   * {@inheritDoc}
  _ _*/
    public function_quoteSingleIdentifier($str)
   _{
_     _ return '['. str_replace(']', '][', $str)._']';
    }

___ /**
   _ * {@inheritDoc}
   _ */
 _  public function getTruncateTableSQL($tableName, $cascade =_false)
_   {
  __    $tableIdentifier =_new_Identifier($tableName);

_    _  return 'TRUNCATE TABLE '._$tableIdentifier->getQuotedName($this);
    }

    /**
_  _ * {@inheritDoc}
  ___*/
    public function getBlobTypeDeclarationSQL(array $field)
  _ {
_  _    return 'VARBINARY(MAX)';
    }

_   /**
   _ * {@inheritDoc}
     */
   _public function getDefaultValueDeclarationSQL($field)
    {
 _      if_(! isset($field['default'])) {
 __      ___return_empty($field['notnull'])?'NULL' : '';
_  _  _ }

_  _ _  if_(!_isset($field['type'])) {
            return " DEFAULT '". $field['default']._"'";
     _  }

  __  _ $type = $field['type'];

_       if_($type instanceof Types\PhpIntegerMappingType) {
     __ _   return'DEFAULT_'. $field