Instead of List<ColumnDef> use List<PColumn> and then create the PColumn list in SelectFromClauseVisitor.createTableRef, since you'll have a MetaDataClient that you can use to call metaDataClient.newColumn once you make it public