/**
  * @param \Doctrine\DBAL\Connection $conn
  *
  * @throws \Doctrine\DBAL\Sharding\ShardingException
  */
 public function __construct(Connection $conn)
 {
     $this->conn = $conn;
     $params = $conn->getParams();
     if (!isset($params['sharding']['federationName'])) {
         throw ShardingException::missingDefaultFederationName();
     }
     if (!isset($params['sharding']['distributionKey'])) {
         throw ShardingException::missingDefaultDistributionKey();
     }
     if (!isset($params['sharding']['distributionType'])) {
         throw ShardingException::missingDistributionType();
     }
     $this->federationName = $params['sharding']['federationName'];
     $this->distributionKey = $params['sharding']['distributionKey'];
     $this->distributionType = $params['sharding']['distributionType'];
     $this->filteringEnabled = isset($params['sharding']['filteringEnabled']) ? (bool) $params['sharding']['filteringEnabled'] : false;
 }