# Changes made in PG13: few importent functions have been changed in PG13 compare to PG12 and PG11. One of the importence note is `RangeTblEntry` that has been changed to `ParsedNamesplaceItem` as following ```c struct ParseNamespaceItem { RangeTblEntry *p_rte; /* The relation's rangetable entry */ int p_rtindex; /* The relation's index in the rangetable */ /* array of same length as p_rte->eref->colnames: */ ParseNamespaceColumn *p_nscolumns; /* per-column data */ bool p_rel_visible; /* Relation name is visible? */ bool p_cols_visible; /* Column names visible as unqualified refs? */ bool p_lateral_only; /* Is only visible to LATERAL expressions? */ bool p_lateral_ok; /* If so, does join type allow use? */ }; ``` This change has also affected the other structures. One of them is `ParseNamespaceColumn` that has been introduced in PG13 as well and has been extensivly used. Following is it's defination. ```c struct ParseNamespaceColumn { Index p_varno; /* rangetable index */ AttrNumber p_varattno; /* attribute number of the column */ Oid p_vartype; /* pg_type OID */ int32 p_vartypmod; /* type modifier value */ Oid p_varcollid; /* OID of collation, or InvalidOid */ Index p_varnosyn; /* rangetable index of syntactic referent */ AttrNumber p_varattnosyn; /* attribute number of syntactic referent */ }; ``` This parse namespace item already exists in PG11 and we may think replace the existing functions as well. In the `cypter_items.c` and in function `ExpandAllTables` ```c ParseNamespaceItem *nsitem = (ParseNamespaceItem *) lfirst(l); ``` Another change is ```c RTERangeTablePosn(pstate, rte, NULL); ```` ```c rtindex = nsitem->p_rtindex; ``` Similarly `scanRTEForColumn` becomes `scanNSItemForColumn`.