Class FragmentLeaf
java.lang.Object
io.trino.operator.table.json.execution.FragmentLeaf
- All Implemented Interfaces:
JsonTableProcessingFragment
-
Constructor Summary
ConstructorsConstructorDescriptionFragmentLeaf(IrJsonPath path, List<Column> columns, boolean errorOnError, Object[] newRow, ConnectorSession session, Metadata metadata, TypeManager typeManager, FunctionManager functionManager) -
Method Summary
Modifier and TypeMethodDescriptionint[]Returns an array containing indexes of columns produced by the fragment within all columns produced by json_table.booleangetRow()Tries to produce output values for all columns included in the Fragment, and stores them in corresponding positions in `newRow`.voidPrepares the Fragment to produce rows for the new JSON item.voidresetRoot(com.fasterxml.jackson.databind.JsonNode item, Page input, int position, Object[] pathParameters) FragmentLeaf can be the root Fragment.
-
Constructor Details
-
FragmentLeaf
public FragmentLeaf(IrJsonPath path, List<Column> columns, boolean errorOnError, Object[] newRow, ConnectorSession session, Metadata metadata, TypeManager typeManager, FunctionManager functionManager)
-
-
Method Details
-
reset
Description copied from interface:JsonTableProcessingFragmentPrepares the Fragment to produce rows for the new JSON item. Note: This method must be called for each new JSON item. Due to nesting, there might be multiple JSON items to process for a single position in the input page. Therefore, input and position may not change for subsequent calls.- Specified by:
resetin interfaceJsonTableProcessingFragment- Parameters:
item- the new JSON iteminput- the input Page currently processed by json_table functionposition- the currently processed position in the input page
-
resetRoot
public void resetRoot(com.fasterxml.jackson.databind.JsonNode item, Page input, int position, Object[] pathParameters) FragmentLeaf can be the root Fragment. The root fragment is the only fragment that may have path parameters. Prepares the root Fragment to produce rows for the new JSON item and a set of path parameters.- Specified by:
resetRootin interfaceJsonTableProcessingFragment- Parameters:
item- the new JSON iteminput- the input Page currently processed by json_table functionposition- the currently processed position in the input pagepathParameters- JSON path parameters for the top-level JSON path
-
getRow
public boolean getRow()Description copied from interface:JsonTableProcessingFragmentTries to produce output values for all columns included in the Fragment, and stores them in corresponding positions in `newRow`. Note: According to OUTER or UNION semantics, some values might be null-padded instead of computed. Note: a single JSON item might result in multiple output rows. To fully process a JSON item, the caller must: - reset the Fragment with the JSON item - call getRow() and collect output rows as long as `true` is returned If `false` is returned, there is no output row available, and the JSON item is fully processed- Specified by:
getRowin interfaceJsonTableProcessingFragment- Returns:
- true if row was produced, false if row was not produced (Fragment is finished)
-
getOutputLayout
public int[] getOutputLayout()Description copied from interface:JsonTableProcessingFragmentReturns an array containing indexes of columns produced by the fragment within all columns produced by json_table.- Specified by:
getOutputLayoutin interfaceJsonTableProcessingFragment
-