datafusion_expr::logical_plan::display

Struct PgJsonVisitor

Source
pub struct PgJsonVisitor<'a, 'b> { /* private fields */ }
Expand description

Formats plans to display as postgresql plan json format.

There are already many existing visualizer for this format, for example dalibo. Unfortunately, there is no formal spec for this format, but it is widely used in the PostgreSQL community.

Here is an example of the format:

[
    {
        "Plan": {
            "Node Type": "Sort",
            "Output": [
                "question_1.id",
                "question_1.title",
                "question_1.text",
                "question_1.file",
                "question_1.type",
                "question_1.source",
                "question_1.exam_id"
            ],
            "Sort Key": [
                "question_1.id"
            ],
            "Plans": [
                {
                    "Node Type": "Seq Scan",
                    "Parent Relationship": "Left",
                    "Relation Name": "question",
                    "Schema": "public",
                    "Alias": "question_1",
                    "Output": [
                       "question_1.id",
                        "question_1.title",
                       "question_1.text",
                        "question_1.file",
                        "question_1.type",
                        "question_1.source",
                        "question_1.exam_id"
                    ],
                    "Filter": "(question_1.exam_id = 1)"
                }
            ]
        }
    }
]

Implementations§

Source§

impl<'a, 'b> PgJsonVisitor<'a, 'b>

Source

pub fn new(f: &'a mut Formatter<'b>) -> Self

Source

pub fn with_schema(&mut self, with_schema: bool)

Sets a flag which controls if the output schema is displayed

Trait Implementations§

Source§

impl<'n, 'a, 'b> TreeNodeVisitor<'n> for PgJsonVisitor<'a, 'b>

Source§

type Node = LogicalPlan

The node type which is visitable.
Source§

fn f_down(&mut self, node: &'n LogicalPlan) -> Result<TreeNodeRecursion>

Invoked while traversing down the tree, before any children are visited. Default implementation continues the recursion.
Source§

fn f_up(&mut self, _node: &Self::Node) -> Result<TreeNodeRecursion>

Invoked while traversing up the tree after children are visited. Default implementation continues the recursion.

Auto Trait Implementations§

§

impl<'a, 'b> Freeze for PgJsonVisitor<'a, 'b>

§

impl<'a, 'b> !RefUnwindSafe for PgJsonVisitor<'a, 'b>

§

impl<'a, 'b> !Send for PgJsonVisitor<'a, 'b>

§

impl<'a, 'b> !Sync for PgJsonVisitor<'a, 'b>

§

impl<'a, 'b> Unpin for PgJsonVisitor<'a, 'b>

§

impl<'a, 'b> !UnwindSafe for PgJsonVisitor<'a, 'b>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.