Skip to content

Upgrade to Graphviz v3.11.0 #13852

Closed
Closed
@TCOTC

Description

@TCOTC

在思源里:

Image

https://viz-js.com/

Image

https://dreampuf.github.io/GraphvizOnline/

Image

digraph SQLExecutionFlow {
    rankdir=LR; 
    node [fontname="Arial", fontsize=12];
    edge [fontname="Arial", fontsize=10];

    node [shape=box, style=filled, color=lightblue];
    SQLStatement [label="SQL Statement"];
    ParseTree [label="Parse Tree"];
    QueryTree [label="Query Tree"];
    PlanTree [label="Plan Tree"];
    ExecutionResult [label="Execution Result"];

    node [shape=ellipse, style=filled, color=lightgreen];
    Parser [label="Parser"];
    Analyzer [label="Analyzer"];
    Planner [label="Planner"];
    Executor [label="Executor"];

  
    SQLStatement -> Parser [label="输入"];
    Parser -> ParseTree [label="生成"];
    ParseTree -> Analyzer [label="解析"];
    Analyzer -> QueryTree [label="优化"];
    QueryTree -> Planner [label="转换"];
    Planner -> PlanTree [label="生成"];
    PlanTree -> Executor [label="执行"];
    Executor -> ExecutionResult [label="输出"];


    {rank=same; SQLStatement; ParseTree; QueryTree; PlanTree; ExecutionResult}
    {rank=same; Parser; Analyzer; Planner; Executor}
}

Activity

changed the title [-]Graphviz 问题[/-] [+]Update Graphviz[/+] on Jan 31, 2025
TCOTC

TCOTC commented on Feb 23, 2025

@TCOTC
ContributorAuthor

用户反馈:Graphviz 块前后有大量空白 - 链滴

Image

digraph log_flow {
    rankdir=TB;
    node [shape=rectangle, style="rounded", fontname="Microsoft YaHei"];
    edge [fontname="Microsoft YaHei"];

    // 日志文件结构
    subgraph cluster_structure {
        label="日志文件结构";
        labelloc=t;
        node [shape=box]

        XChecksum [label="四字节全局校验和\n(XChecksum)", width=2.5];
        Log1 [label="日志1\n[4字节长度][4字节校验和][数据]", width=3];
        Log2 [label="日志2\n[4字节长度][4字节校验和][数据]", width=3];
        LogN [label="...\n日志N", width=1.5];
        BadTail [label="残缺尾部\n(可能不存在)", style=dashed];

        XChecksum -> Log1 -> Log2 -> LogN -> BadTail [style=invis];
    }

    // 读取流程
    subgraph cluster_read {
        label="读取日志流程 (internNext)";
        labelloc=b;
        node [shape=ellipse]

        Start读 [label="读取位置定位到\n当前position"];
        读Size [label="读取4字节\n日志长度(size)"];
        检查空间 [label="position + 长度 + 8字节\n是否超过文件大小?", shape=diamond];
        ReturnNull1 [label="返回空"];
        读完整日志 [label="读取校验和+数据\n(8字节+size长度)"];
        计算校验和 [label="用数据部分\n重新计算校验和"];
        比对校验和 [label="计算值\n是否等于\n存储值?", shape=diamond];
        ReturnNull2 [label="返回空"];
        移动指针 [label="position += 日志总长度"];
        返回数据 [label="返回数据部分"];

        Start读 -> 读Size -> 检查空间;
        检查空间 -> ReturnNull1 [label="是"];
        检查空间 -> 读完整日志 [label="否"];
        读完整日志 -> 计算校验和 -> 比对校验和;
        比对校验和 -> ReturnNull2 [label="不一致"];
        比对校验和 -> 移动指针 [label="一致"];
        移动指针 -> 返回数据;
    }

    // 校验和修复流程
    subgraph cluster_recovery {
        label="启动时校验文件完整性";
        node [shape=ellipse]

        Start校验 [label="初始化xCheck=0"];
        循环读取 [label="调用internNext()\n读取下一条日志"];
        是否空日志 [label="日志为空?", shape=diamond];
        更新全局校验和 [label="xCheck = calChecksum\n(xCheck, log)"];
        最终校验 [label="xCheck 是否等于\n文件头的XChecksum?", shape=diamond];
        Panic [label="抛出异常"];
        截断文件 [label="截断文件到\n最后有效position"];
        重置指针 [label="文件指针归零"];

        Start校验 -> 循环读取;
        循环读取 -> 是否空日志;
        是否空日志 -> 更新全局校验和 [label="否"];
        更新全局校验和 -> 循环读取;
        是否空日志 -> 最终校验 [label="是"];
        最终校验 -> Panic [label="校验失败"];
        最终校验 -> 截断文件 [label="校验成功"];
        截断文件 -> 重置指针;
    }

    // 写入流程
    subgraph cluster_write {
        label="写入日志流程";
        node [shape=ellipse]

        Start写 [label="准备待写入数据"];
        包装日志 [label="添加长度头\n计算校验和\n拼接日志段"];
        追加写入 [label="定位到文件末尾\n写入日志内容"];
        内存更新校验 [label="更新内存中的\n全局校验和(xChecksum)"];
        写回文件头 [label="将新校验和\n写回文件开头"];
        强制刷盘 [label="强制同步到磁盘"];

        Start写 -> 包装日志 -> 追加写入 -> 内存更新校验 -> 写回文件头 -> 强制刷盘;
    }

    // 跨子图连接关系
    edge [style=dotted, dir=none];
    循环读取 -> internNext [label="调用", fontsize=8];
    内存更新校验 -> updateXChecksum [label="调用", fontsize=8];
}
added a commit that references this issue on Feb 24, 2025
changed the title [-]Update Graphviz[/-] [+]Upgrade to Graphviz v3.11.0[/+] on Feb 24, 2025
added a commit that references this issue on Feb 24, 2025
added this to the 3.1.23 milestone on Feb 24, 2025
added a commit that references this issue on Feb 25, 2025
added a commit that references this issue on Feb 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

    Development

    No branches or pull requests

      Participants

      @88250@Vanessa219@TCOTC

      Issue actions

        Upgrade to Graphviz v3.11.0 · Issue #13852 · siyuan-note/siyuan