# `Selecto.Advanced.LateralJoin.Spec`

Specification for a LATERAL join operation.

# `correlation_ref`

```elixir
@type correlation_ref() :: {:ref, String.t()}
```

# `join_type`

```elixir
@type join_type() :: :left | :inner | :right | :full
```

# `json_table_column`

```elixir
@type json_table_column() :: %{
  :name =&gt; String.t(),
  optional(:path) =&gt; String.t(),
  optional(:type) =&gt; atom(),
  optional(:for_ordinality) =&gt; boolean()
}
```

# `subquery_builder`

```elixir
@type subquery_builder() :: (Selecto.t() -&gt; Selecto.t())
```

# `t`

```elixir
@type t() :: %Selecto.Advanced.LateralJoin.Spec{
  alias: String.t(),
  correlation_refs: [correlation_ref()],
  id: String.t(),
  join_type: join_type(),
  subquery_builder: subquery_builder() | nil,
  table_function: table_function() | nil,
  validated: boolean()
}
```

# `table_function`

```elixir
@type table_function() ::
  {:unnest, String.t()}
  | {:function, atom(), [term()]}
  | {:udf_table, atom() | String.t(), [term()]}
  | {:json_each, String.t(), String.t() | nil}
  | {:json_tree, String.t(), String.t() | nil}
  | {:json_table, String.t(), String.t(), [json_table_column()]}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
