def sort_typeinfer(sort_node, typeinferer): # input and output arrays have the same type for in_key, out_key in zip(sort_node.key_arrs, sort_node.out_key_arrs): typeinferer.constraints.append(typeinfer.Propagate( dst=out_key.name, src=in_key.name, loc=sort_node.loc)) for col_name, col_var in sort_node.df_in_vars.items(): out_col_var = sort_node.df_out_vars[col_name] typeinferer.constraints.append(typeinfer.Propagate( dst=out_col_var.name, src=col_var.name, loc=sort_node.loc)) return
def join_typeinfer(join_node, typeinferer): # TODO: consider keys with same name, cols with suffix for col_name, col_var in (list(join_node.left_vars.items()) + list(join_node.right_vars.items())): out_col_var = join_node.df_out_vars[col_name] typeinferer.constraints.append(typeinfer.Propagate(dst=out_col_var.name, src=col_var.name, loc=join_node.loc)) return
def filter_typeinfer(filter_node, typeinferer): for col_name, col_var in filter_node.df_in_vars.items(): out_col_var = filter_node.df_out_vars[col_name] typeinferer.constraints.append( typeinfer.Propagate(dst=out_col_var.name, src=col_var.name, loc=filter_node.loc)) return