**Describe the issue**
We have to set macro or to pass explicitly shard and replica name to create table in DatabaseReplicated

void dropTable(ContextPtr, const String & table_name, bool no_delay) override;
    void renameTable(ContextPtr context, const String & table_name, IDatabase & to_database,
                     const String & to_table_name, bool exchange, bool dictionary) override;
    void commitCreateTable(const ASTCreateQuery & query, const StoragePtr & table,
                           const String & table_metadata_tmp_path, const String & table_metadata_path,
                           ContextPtr query_context) override;
    void commitAlterTable(const StorageID & table_id,
                          const String & table_metadata_tmp_path, const String & table_metadata_path,
                          const String & statement, ContextPtr query_context) override;
    void detachTablePermanently(ContextPtr context, const String & table_name) override;
    void removeDetachedPermanentlyFlag(ContextPtr context, const String & table_name, const String & table_metadata_path, bool attach) const override;
    
    
    BlockIO tryEnqueueReplicatedDDL(const ASTPtr & query, ContextPtr query_context);
    bool hasReplicationThread() const override { return true; }
    void stopReplication() override;
    String getFullReplicaName() const;
    static std::pair<String, String> parseFullReplicaName(const String & name);
    
    ClusterPtr getCluster() const;
    void drop(ContextPtr ) override;
    void loadStoredObjects(ContextMutablePtr context, bool force_restore, bool force_attach, bool skip_startup_tables) override;