How to Modify Pr

Step 1: 克隆项目

Step 2: 添加新的远程仓库 为了修改他人 Fork 的仓库,你需要将其添加到自己的远程仓库列表中

$ git remote add sirmin https://github.com/SirMin/shardingsphere.git

现在,当你执行 git remote -v 指令时,就可以看到他人 Fork 的仓库,出现在你的远程仓库列表中:

% git remote -v
origin	https://github.com/tuichenchuxin/shardingsphere.git (fetch)
origin	https://github.com/tuichenchuxin/shardingsphere.git (push)
sirmin	https://github.com/SirMin/shardingsphere.git (fetch)
sirmin	https://github.com/SirMin/shardingsphere.git (push)
upstream	https://github.com/apache/shardingsphere.git (fetch)
upstream	https://github.com/apache/shardingsphere.git (push)

Step 3: 拉取新的远程仓库

mac docker 安装 oracle 11g

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
docker run --privileged --restart=always --name oracle_11g -p 1521:1521 -d registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
docker exec -it 容器ID /bin/bash
source /home/oracle/.bash_profile
sqlplus nologconnect as sysdba
1
2
3
4
create user oracle identified by oracle#123;
alter user system identified by system;
alter user system identified by 123456;
grant connect,resource,dba to oracle;

参考:https://baijiahao.baidu.com/s?id=1709232831349390844&wfr=spider&for=pc

Freemarker 的使用

Freemarker

freemarker 是一款开源的模版引擎,可以基于模版方便的生成结果。 https://freemarker.apache.org/

Freemarker 的使用

编写 ftl 模版

以生成 postgres 查询的 sql 语句为例 编写 delete.ftl 文件,${} 中的字段是参数

1
DROP TABLE IF EXISTS ${schema}.${name};

当然实际使用中的模版可能复杂的多,以部分创建表模版为例 我们可以在模版中使用 import 引入其它模版 使用 assign 设置变量 使用 if, list 等 使用 ?? 判断是否为空,使用 !false 如果为空,默认 false

<#import "../../macro/constraints.ftl" as CONSTRAINTS>
<#assign with_clause = false>
<#if fillfactor!false || parallel_workers!false || toast_tuple_target!false || (autovacuum_custom!false && add_vacuum_settings_in_sql!false) || autovacuum_enabled == 't' || autovacuum_enabled == 'f' || (toast_autovacuum!false && add_vacuum_settings_in_sql!false) || toast_autovacuum_enabled == 't' || toast_autovacuum_enabled == 'f' >
    <#assign with_clause = true>
</#if>
<#list columns as c >

其它模版使用可以参考 https://freemarker.apache.org/docs/dgui_template.html

How To Debug PgAdmin4

下载源码

https://github.com/postgres/pgadmin4

安装环境

brew install node
brew install yarn
cd runtime
yarn install
node_modules/nw/nwjs/nwjs.app/Contents/MacOS/nwjs .
sudo mkdir "/var/log/pgadmin"
sudo chmod a+wrx "/var/log/pgadmin"
sudo mkdir "/var/lib/pgadmin"
sudo chmod a+wrx "/var/lib/pgadmin"
pip install --upgrade pip 
pip install psycopg2-binary
make install-node

最后运行 pgAdmin4.py 过程中会有一些问题,参考 https://github.com/postgres/pgadmin4 readme. 和 stack overflow

PgAmdin4 展示 DDL 语句逻辑分析

PgAmdin4 展示 DDL 语句

通过 PgAdmin4 可以获取 table 的 DDL 语句

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- Table: public.t_order_0

-- DROP TABLE IF EXISTS public.t_order_0;

CREATE TABLE IF NOT EXISTS public.t_order_0
(
   order_id integer NOT NULL,
   user_id integer NOT NULL,
   status character varying(45) COLLATE pg_catalog."default",
   CONSTRAINT t_order_0_pkey PRIMARY KEY (order_id)
)

TABLESPACE pg_default;

ALTER TABLE IF EXISTS public.t_order_0
   OWNER to postgres;

COMMENT ON TABLE public.t_order_0
   IS 'haha';

COMMENT ON COLUMN public.t_order_0.order_id
   IS 'haha';

PgAdmin4 是如何展示对应的 DDL 语句的呢

https://github.com/postgres/pgadmin4 翻阅源码发现 DDL 语句的展示,主要是通过以下步骤来获取 SQL 语句的。