XiaoMi / soar

SQL Optimizer And Rewriter
Apache License 2.0
8.67k stars 1.32k forks source link

可以把 BaseDir 设置成执行当前的目录吗? #93

Closed Hawken94 closed 5 years ago

Hawken94 commented 5 years ago

目前 BaseDir 是 soar 执行文件所在的目录,希望能改为执行 soar 命令所在的目录。

martianzhang commented 5 years ago

建议再详细描述一下需求。可以把你想要执行的命令方式及执行结果写一下。

Hawken94 commented 5 years ago

@martianzhang 抱歉,描述的不够清楚。

GOPATH: ~/workspace/Go/Development/ 我有一个项目 project,需要查询 sql 优化,在 project 下新建了 soar.yaml 配置文件,在源码中加入打印 BaseDir 路径的代码,然后 go install: image

  1. 在 project 下执行 soar -print-config命令,显示:
    fixme, dir: /Users/hawken/workspace/Go/Development/bin
    online-dsn:
    addr: ""
    schema: information_schema
    user: ""
    password: '********'
    charset: utf8mb4
    disable: true
    test-dsn:
    addr: ""
    schema: information_schema
    user: ""
    password: '********'
    charset: utf8mb4
    disable: true
    allow-online-as-test: false
    drop-test-temporary: true
    cleanup-test-database: false
    only-syntax-check: false
    sampling-statistic-target: 100
    sampling: false
    profiling: false
    trace: false
    explain: true
    conn-time-out: 3
    query-time-out: 30
    delimiter: ;
    log-level: 3
    log-output: /dev/stderr
    report-type: markdown
    report-css: ""
    report-javascript: ""
    report-title: SQL优化分析报告
    markdown-extensions: 94
    markdown-html-flags: 0
    ignore-rules:
    - COL.011
    rewrite-rules:
    - delimiter
    - orderbynull
    - groupbyconst
    - dmlorderby
    - having
    - star2columns
    - insertcolumns
    - distinctstar
    blacklist: ""
    max-join-table-count: 5
    max-group-by-cols-count: 5
    max-distinct-count: 5
    max-index-cols-count: 5
    max-total-rows: 9999999
    max-query-cost: 9999
    spaghetti-query-length: 2048
    allow-drop-index: false
    max-in-count: 10
    max-index-bytes-percolumn: 767
    max-index-bytes: 3072
    table-allow-charsets:
    - utf8
    - utf8mb4
    table-allow-engines:
    - innodb
    max-index-count: 10
    max-column-count: 40
    index-prefix: idx_
    unique-key-prefix: uk_
    max-subquery-depth: 5
    max-varchar-length: 1024
    explain-sql-report-type: pretty
    explain-type: extended
    explain-format: traditional
    explain-warn-select-type:
    - ""
    explain-warn-access-type:
    - ALL
    explain-max-keys: 3
    explain-min-keys: 0
    explain-max-rows: 10000
    explain-warn-extra:
    - Using temporary
    - Using filesort
    explain-max-filtered: 100
    explain-warn-scalability:
    - O(n)
    show-warnings: false
    show-last-query-cost: false
    query: ""
    list-heuristic-rules: false
    list-rewrite-rules: false
    list-test-sqls: false
    list-report-types: false
    verbose: false
    dry-run: true
    max-pretty-sql-length: 1024

    期待的结果:

    fixme, dir: /Users/hawken/workspace/Go/Development/src/project
    # 线上环境配置
    online-dsn:
    addr: localhost:3306
    schema: test
    user: hawken
    password: 123456
    disable: false
  2. 说明配置没有加载,因为 soar 调用的是 soar 可执行文件所在目录下的 soar.yaml,而不是我执行 soar 命令时所处的路径(比如,此时期待的是/Users/hawken/workspace/Go/Development/src/project/soar.yaml)

配置文件会因为数据库不同而不同,不应该写死。所以建议将调用配置文件的路径改成执行 soar 操作时所处的路径。 而且,希望能将配置文件名改成 .soar.yaml 感觉这样合理一些 ps. 我给你的 gmail 发邮件说明了。

martianzhang commented 5 years ago

如线下沟通配置文件每位同学的需求不同,您这个需求可以通过alias方式实现

alias soar="soar -config=$(pwd)/soar.yaml"