The above method:
<pre><code>
protected TableRef createTableRef(String alias, String schemaName, String tableName,List<ColumnDef> dyn_columns) throws SQLException 
</code></pre>

should be change to:
<pre><code>
protected TableRef createTableRef(String alias, String schemaName, String tableName,List<PColumn> dyn_columns) throws SQLException 
</code></pre>

and the List<PColumn> should be created in <code>SelectFromClauseVisitor.visit(NamedTableNode namedTableNode) throws SQLException</code> where you already have a reference to a MetaDataClient.