| 3030 | self._query_info = self._init_for_join() |
| 3031 | |
| 3032 | def _init_for_omit_join(self): |
| 3033 | pk_to_fk = dict( |
| 3034 | self.parent_property._join_condition.local_remote_pairs |
| 3035 | ) |
| 3036 | pk_to_fk.update( |
| 3037 | (equiv, pk_to_fk[k]) |
| 3038 | for k in list(pk_to_fk) |
| 3039 | for equiv in self.parent._equivalent_columns.get(k, ()) |
| 3040 | ) |
| 3041 | |
| 3042 | pk_cols = fk_cols = [ |
| 3043 | pk_to_fk[col] for col in self.parent.primary_key if col in pk_to_fk |
| 3044 | ] |
| 3045 | if len(fk_cols) > 1: |
| 3046 | in_expr = sql.tuple_(*fk_cols) |
| 3047 | zero_idx = False |
| 3048 | else: |
| 3049 | in_expr = fk_cols[0] |
| 3050 | zero_idx = True |
| 3051 | |
| 3052 | return self.query_info( |
| 3053 | False, False, in_expr, pk_cols, zero_idx, len(pk_cols), None |
| 3054 | ) |
| 3055 | |
| 3056 | def _init_for_omit_join_m2o(self): |
| 3057 | pk_cols = self.mapper.primary_key |