text: #pragma once
  #if !defined(ARCADIA_BUILD)
  #include "config_core.h"
  #endif
  
  #if USE_LIBPQXX
  #include <TableFunctions/ITableFunction.h>
  #include <Storages/PostgreSQL/PostgreSQLPoolWithFailover.h>
  
  
  namespace DB
  {
  
  class TableFunctionPostgreSQL : public ITableFunction
  {
  public:
      static constexpr auto name = "postgresql";
      std::string getName() const override { return name; }
  
  private:
      StoragePtr executeImpl(
              const ASTPtr & ast_function, ContextPtr context,
              const std::string & table_name, ColumnsDescription cached_columns) const override;
  
      const char * getStorageTypeName() const override { return "PostgreSQL"; }
  
      ColumnsDescription getActualTableStructure(ContextPtr context) const override;
      void parseArguments(const ASTPtr & ast_function, ContextPtr context) override;
  
      String connection_str;
      String remote_table_name, remote_table_schema;
      postgres::PoolWithFailoverPtr connection_pool;
  };
  
  }
  
  #endif
  