Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
888a053231 | ||
|
|
3660d19535 | ||
|
|
660ecf2113 | ||
|
|
71c18fb4a7 | ||
|
|
9b071d7287 | ||
|
|
846aa3718c | ||
|
|
0c17c82ddc | ||
|
|
5fe93608de | ||
|
|
797927aee5 | ||
|
|
e9363232a9 | ||
|
|
9c7bdd0765 | ||
|
|
14ccd2619e | ||
|
|
a0c71a668e | ||
|
|
db1ab34f76 | ||
|
|
f02e9be500 | ||
|
|
4beb7e4670 | ||
|
|
8c4fb7f9f9 | ||
|
|
8c5805279d | ||
|
|
c33927f55b | ||
|
|
94564e406b | ||
|
|
7b9b8cdd07 | ||
|
|
0b4bb3ea3f | ||
|
|
6de0f371b2 | ||
|
|
0649bcdb96 | ||
|
|
2a34eda5bc | ||
|
|
ba60f0ae63 | ||
|
|
9939d335e0 | ||
|
|
50f95f0fcb | ||
|
|
cc8ce7e153 | ||
|
|
b458e69528 | ||
|
|
f6961bce49 | ||
|
|
922f06c7d2 | ||
|
|
255550e981 | ||
|
|
5a868bde90 | ||
|
|
4fa95c58af | ||
|
|
ed9bf2f249 | ||
|
|
458dec3571 | ||
|
|
8dcc30a05d | ||
|
|
51e90a9827 | ||
|
|
4751795087 | ||
|
|
cc4deed6eb | ||
|
|
04977b593e | ||
|
|
0ff9ecfe67 | ||
|
|
7aa3f85caf | ||
|
|
2ae0d36109 | ||
|
|
658bb585d1 | ||
|
|
f81433ae2f | ||
|
|
60d149864b | ||
|
|
9e370d3cb6 | ||
|
|
04fa05c1e6 | ||
|
|
77dc9d77ec | ||
|
|
8ad45be9c8 | ||
|
|
2918e16734 | ||
|
|
06300e76a0 | ||
|
|
397be4e70e | ||
|
|
0223e8a026 | ||
|
|
89e84eb913 | ||
|
|
879ae40cbb | ||
|
|
c88c8f612e | ||
|
|
24f0597dc8 | ||
|
|
303f6a2dd8 | ||
|
|
8afe14ec36 | ||
|
|
25415b888a | ||
|
|
c720a33b44 | ||
|
|
f9b9bc9d40 | ||
|
|
39684cdf48 | ||
|
|
4c5702dd47 | ||
|
|
6bc4341383 | ||
|
|
5b17cad8a4 | ||
|
|
4dd5cdd9ea | ||
|
|
833504f1be | ||
|
|
94a7687d2d | ||
|
|
1a8dcd8bcc | ||
|
|
937d34ea2d | ||
|
|
ec3e6414e7 | ||
|
|
d2bdd25160 | ||
|
|
8383c1220b | ||
|
|
2e14bd95dd | ||
|
|
fff6a48185 | ||
|
|
3b1a6ce481 | ||
|
|
3379c39865 | ||
|
|
bf47924444 | ||
|
|
5627944f87 | ||
|
|
f8e570faea | ||
|
|
92dd7c7962 | ||
|
|
c7d2106462 | ||
|
|
291a55ec5a | ||
|
|
10f99d07e3 | ||
|
|
ed9dcf6ebf | ||
|
|
148705994d | ||
|
|
679c39f944 | ||
|
|
2dc9d71d02 | ||
|
|
27406b5627 | ||
|
|
5c494ecbf6 | ||
|
|
0d11dbc173 | ||
|
|
533aed122f | ||
|
|
3e1921dcd9 | ||
|
|
d96e86345e | ||
|
|
ae6dc4ba18 | ||
|
|
25f0d853c8 | ||
|
|
142a55b864 | ||
|
|
3b801fc6ba | ||
|
|
aad2dfd725 | ||
|
|
af888027a4 | ||
|
|
86a8b165ab | ||
|
|
bdbca57332 | ||
|
|
dda6d0e3a8 | ||
|
|
411d718fa7 | ||
|
|
d17616eda8 | ||
|
|
c6a6d46283 | ||
|
|
4330a688aa | ||
|
|
96e6528243 | ||
|
|
ba9ff51aaa | ||
|
|
4eb899c92c | ||
|
|
6469b69565 | ||
|
|
208541cc48 | ||
|
|
9923eefcab | ||
|
|
32d194691e | ||
|
|
d336c1e786 | ||
|
|
7f230d05fa | ||
|
|
fcb3db7f54 | ||
|
|
2f211dc04c | ||
|
|
a11d289bd9 | ||
|
|
a50a553b0a | ||
|
|
e7eaef0dc0 | ||
|
|
849c679fc6 | ||
|
|
f43c781e98 | ||
|
|
119a99375d | ||
|
|
ff0fc9e7eb | ||
|
|
aec3ea117f | ||
|
|
ddc371adf7 | ||
|
|
0fad04de85 | ||
|
|
1f7194924f | ||
|
|
d78a7cc3bf | ||
|
|
657529280e | ||
|
|
d55ffe405b | ||
|
|
4eb184739a | ||
|
|
d57acce354 | ||
|
|
dc61039e93 | ||
|
|
9b29bc2033 | ||
|
|
504775de80 | ||
|
|
044355c5e0 | ||
|
|
85366aa128 | ||
|
|
6f4f28def7 | ||
|
|
fb9ce563fb | ||
|
|
3b36dd3964 | ||
|
|
bee80fe943 | ||
|
|
ccfbd2c457 | ||
|
|
1518b0828d | ||
|
|
93206710f7 | ||
|
|
2b0d44a33f | ||
|
|
fffc3cc242 | ||
|
|
adbb249604 | ||
|
|
64a232bc85 | ||
|
|
435752b83c | ||
|
|
30a8903374 | ||
|
|
24485fe964 | ||
|
|
13badc62c3 | ||
|
|
cf53953d9a | ||
|
|
d112dc3b96 | ||
|
|
b70d4c9857 | ||
|
|
3294e74197 | ||
|
|
79e490c5fa | ||
|
|
e4edcf2253 | ||
|
|
4ddb16f47a | ||
|
|
a3a0537277 | ||
|
|
9a76ed80bb | ||
|
|
872d5ac0b3 | ||
|
|
d59fcf3459 | ||
|
|
d8a078af53 | ||
|
|
9bb96360dd | ||
|
|
2228575564 | ||
|
|
5dd0de9e0f | ||
|
|
aa3dc389e4 | ||
|
|
92bb092718 | ||
|
|
3598840203 | ||
|
|
792441ab95 | ||
|
|
2c626d1181 | ||
|
|
278e812293 | ||
|
|
1d51a1a943 | ||
|
|
bf649420b7 | ||
|
|
1c93f93a6a | ||
|
|
3ba887001a | ||
|
|
257654849b | ||
|
|
d7f462c22c | ||
|
|
6296016b67 | ||
|
|
e3472103bb | ||
|
|
990b4f5e54 | ||
|
|
74b1a3bcc4 | ||
|
|
01c2d12b51 | ||
|
|
e5cf456fae | ||
|
|
da55da4d32 | ||
|
|
b301bdcecd | ||
|
|
23bd3359c1 | ||
|
|
0bc4edbab5 | ||
|
|
34aa360830 | ||
|
|
7e39fc8477 | ||
|
|
8f74b2e6d4 | ||
|
|
c8cb744ffd | ||
|
|
b3aa78c0a5 | ||
|
|
78e3b67eb1 | ||
|
|
c8bd75c9a8 | ||
|
|
a0e6da0772 | ||
|
|
8ca765478f | ||
|
|
f49c967bfd | ||
|
|
0a539c32d9 | ||
|
|
395ff36322 | ||
|
|
00a44a5d76 | ||
|
|
3ecdc57a59 | ||
|
|
08b0f6fe7b | ||
|
|
6d18741f1a | ||
|
|
dc47bf48f7 | ||
|
|
5b231ddd3f | ||
|
|
3e48c21fe5 | ||
|
|
4cc74c13f7 | ||
|
|
2cf5d39a01 | ||
|
|
f4112c9a0a | ||
|
|
6f69120af5 | ||
|
|
cf6d7f3b89 | ||
|
|
b78fc884e3 | ||
|
|
caafc6bb1b | ||
|
|
e9e52905cc | ||
|
|
cae00a1dc6 | ||
|
|
5dd63ca16b | ||
|
|
97c90f1e69 | ||
|
|
bcd48a92b9 | ||
|
|
6d0d387f53 | ||
|
|
3995ba9a95 | ||
|
|
4bb6b72377 | ||
|
|
080fcc1cfb | ||
|
|
93e2f23a48 | ||
|
|
965a27db39 | ||
|
|
7b377ff3da | ||
|
|
2dedb6e69a | ||
|
|
b15f15960f | ||
|
|
50f78bf210 | ||
|
|
0842f36f16 | ||
|
|
5002419611 | ||
|
|
f2756a3dcf | ||
|
|
2715932464 | ||
|
|
b366d210dc | ||
|
|
fbbc12a0a3 | ||
|
|
9039080214 | ||
|
|
f52584eef8 | ||
|
|
5abd9e3c5b | ||
|
|
3e05f7a14f | ||
|
|
9464e44887 | ||
|
|
18c73d00ce | ||
|
|
aa33a99b0d | ||
|
|
6000cc0fb4 | ||
|
|
ef1b69bd5a | ||
|
|
5103c47fdf | ||
|
|
b539740d8e | ||
|
|
0cb6738343 | ||
|
|
eee9989dde | ||
|
|
596b14a0f4 | ||
|
|
a46d4c22d8 | ||
|
|
c47c79c3dc | ||
|
|
c45502dc01 | ||
|
|
5edab2f621 | ||
|
|
8f39f8a6bc | ||
|
|
26ea03f421 | ||
|
|
63e3ad8d33 | ||
|
|
31d1dbc697 | ||
|
|
0cac007970 | ||
|
|
93605c0baa | ||
|
|
3d1cd444b0 | ||
|
|
a500939532 | ||
|
|
3dab883d88 | ||
|
|
7c36eaba90 | ||
|
|
e0ba1dd68e | ||
|
|
90be555ec8 | ||
|
|
402ddafa2a | ||
|
|
74c8b2d0a1 | ||
|
|
bef374d023 | ||
|
|
a9d56402a1 | ||
|
|
62e2d18b02 | ||
|
|
3b184dbeee | ||
|
|
71920c2903 | ||
|
|
d30fd5d67e | ||
|
|
d26aa0a8de | ||
|
|
f63f8f7342 | ||
|
|
1301e5d2ff | ||
|
|
cc0377fb59 | ||
|
|
79de352636 | ||
|
|
965a6ad886 | ||
|
|
c6551145a3 | ||
|
|
04583fe8f0 | ||
|
|
a1d2308dc9 | ||
|
|
52daa56a04 | ||
|
|
19532f534f | ||
|
|
7462a6a91f | ||
|
|
c3da32f0f7 | ||
|
|
01e8d0c7e9 | ||
|
|
30f032b7d8 | ||
|
|
a9bf4c23bc | ||
|
|
a5e9315b89 | ||
|
|
cf123a3290 | ||
|
|
44434948e2 | ||
|
|
a2ea57fc2e | ||
|
|
5dd07d5d4b | ||
|
|
491fbe8a36 | ||
|
|
63397a003a | ||
|
|
10669d60a6 | ||
|
|
1457f08343 | ||
|
|
dc801e362e | ||
|
|
55a332be5b | ||
|
|
51bd866a3a | ||
|
|
d5a909f14c | ||
|
|
5129905307 | ||
|
|
6f5c69a4c8 | ||
|
|
dd51290d06 | ||
|
|
d46bce2d7b | ||
|
|
e50d839ac0 | ||
|
|
d26888c65c | ||
|
|
2ef67a5fa2 | ||
|
|
c6406dbaa4 | ||
|
|
f55fcf7baf | ||
|
|
71719db3ab | ||
|
|
086fa9bf87 | ||
|
|
dc7873c2b2 | ||
|
|
56040aa116 | ||
|
|
9c8df1ad3b | ||
|
|
e7db3510e1 | ||
|
|
0132ce2001 | ||
|
|
70e4435b04 | ||
|
|
ec3b508ba6 | ||
|
|
7885ed7f87 | ||
|
|
d1b25c99cc | ||
|
|
c7909958da | ||
|
|
8c153be335 | ||
|
|
65860fc12c | ||
|
|
fc04e2eb1a | ||
|
|
d481507569 | ||
|
|
6d01a247db | ||
|
|
27779370d8 | ||
|
|
482549b951 | ||
|
|
f06668aed9 | ||
|
|
4129d38410 | ||
|
|
c03b55042c | ||
|
|
f22aa1597f | ||
|
|
467e496599 | ||
|
|
7b85a09603 | ||
|
|
57f88cf5af | ||
|
|
d6b2379fbe | ||
|
|
39c2f397f7 | ||
|
|
63ee81202b | ||
|
|
14dec7e5ed | ||
|
|
5e472ec42a | ||
|
|
60c56b3285 | ||
|
|
f251fdfdb1 | ||
|
|
09d2b7eeb0 | ||
|
|
e374edc692 | ||
|
|
1d397395f7 | ||
|
|
ed52a44b17 | ||
|
|
06fb5a45c1 | ||
|
|
d1805c5640 | ||
|
|
c04b9198c8 | ||
|
|
ec63acc4c5 | ||
|
|
f906326003 | ||
|
|
39b6f40482 | ||
|
|
e6f6a90d2f | ||
|
|
d80cc6f8f9 | ||
|
|
38ebb43bac | ||
|
|
48b4a8d448 | ||
|
|
d9b3f950ad | ||
|
|
986ba41ba9 | ||
|
|
08379d6ae0 | ||
|
|
7251c1f628 | ||
|
|
061450c8d7 | ||
|
|
b62212b8e5 | ||
|
|
282a956f4f | ||
|
|
00dbe58125 | ||
|
|
abdcd983f6 | ||
|
|
c7a6056ee3 | ||
|
|
55c5e86fe0 | ||
|
|
8d55e9a445 | ||
|
|
c1da777fba | ||
|
|
9e35c32ef2 | ||
|
|
37a164cccb | ||
|
|
c20d035f1b | ||
|
|
9a44fee646 | ||
|
|
0a14db01be | ||
|
|
53a994ba1e | ||
|
|
91ad54d17b | ||
|
|
ea5ee74205 | ||
|
|
5f22b4e2d2 | ||
|
|
758bbc7272 | ||
|
|
618e03b65f | ||
|
|
e9b97d61f8 | ||
|
|
83377d4a50 | ||
|
|
c03d21899b | ||
|
|
d03a0cdce6 | ||
|
|
f3567518d3 | ||
|
|
b30520adc0 | ||
|
|
c6af61afd3 | ||
|
|
04024c7f61 | ||
|
|
9e6ab295df | ||
|
|
5c9acc1c3d | ||
|
|
c75bba03c2 | ||
|
|
93bbadb994 | ||
|
|
42ff67c845 | ||
|
|
5376d88444 | ||
|
|
f733d124bd | ||
|
|
7ff3c4bbeb | ||
|
|
e5590797c0 | ||
|
|
8576a5e7e6 | ||
|
|
3e66b6f7be | ||
|
|
2fd2a144f1 | ||
|
|
500a5c7101 | ||
|
|
5498682934 | ||
|
|
cdeb18fcbb | ||
|
|
0de635cc4c | ||
|
|
e09af0a0e9 | ||
|
|
ade57d4ec4 | ||
|
|
fc41c795f1 | ||
|
|
7caaf2de82 | ||
|
|
09bc544e83 | ||
|
|
42a47126aa | ||
|
|
db87df8f82 | ||
|
|
15c212a2df | ||
|
|
68627ab44e | ||
|
|
800fdce316 | ||
|
|
a5557b466c | ||
|
|
cad6025ce9 | ||
|
|
f8b894d52b | ||
|
|
9d0ec04667 | ||
|
|
24b4d35565 | ||
|
|
0c8571de9e | ||
|
|
2075dd5270 | ||
|
|
7d0241008b | ||
|
|
ecb652c7c5 | ||
|
|
9b5f0f0f63 | ||
|
|
1eb7c9d3e2 | ||
|
|
a4c5e5683c | ||
|
|
d53a34b8df | ||
|
|
8a4a3814ab | ||
|
|
6aaf47ddb4 | ||
|
|
4d078ab747 | ||
|
|
96de08212a | ||
|
|
2dd27d20c1 | ||
|
|
86c2769221 | ||
|
|
1316a3d7d8 | ||
|
|
9f866b0b27 | ||
|
|
829d6323b8 | ||
|
|
559c6cfa65 | ||
|
|
1f7fbb91f7 | ||
|
|
3b9359945e | ||
|
|
99b822e472 | ||
|
|
b2ec3a5acc | ||
|
|
9eec4f5b8c | ||
|
|
6db0cc5c5d | ||
|
|
a197c85f3a | ||
|
|
aa0a1f676d | ||
|
|
5963593fed | ||
|
|
e0e99ddbb5 | ||
|
|
85510b961f | ||
|
|
bf229c0d79 | ||
|
|
33dcb36db5 | ||
|
|
8a4eb4f8ad | ||
|
|
62eb330423 | ||
|
|
e73d8f4532 | ||
|
|
79aeb5204c | ||
|
|
de48d4ecda | ||
|
|
0d204d0554 | ||
|
|
37bdd22e24 | ||
|
|
2a43d1c939 | ||
|
|
c4f7a18ec5 | ||
|
|
fdc38f75f8 | ||
|
|
56d5cab13e | ||
|
|
bec47845be | ||
|
|
6dc5807192 | ||
|
|
ea085cd009 | ||
|
|
6fdb82dd76 | ||
|
|
a3e1a3672c | ||
|
|
8046c238d8 | ||
|
|
82730da392 | ||
|
|
fe2332f606 | ||
|
|
d26b63fdf5 | ||
|
|
770a0f27af | ||
|
|
ced002a6ad | ||
|
|
3aad58751a | ||
|
|
61a420c9fc | ||
|
|
8c662424b2 | ||
|
|
13ade4c0b2 | ||
|
|
1195f14327 | ||
|
|
65a35ab23d | ||
|
|
b31c8f78c5 | ||
|
|
82e6b57d04 | ||
|
|
1e4e00886a | ||
|
|
0fd7d0dedb | ||
|
|
0ebf78ca61 | ||
|
|
60c8e5fe05 | ||
|
|
1d68074a59 | ||
|
|
8723896da0 | ||
|
|
e4f17e5a6c | ||
|
|
454ba52c88 | ||
|
|
d5c0fac885 | ||
|
|
3f7683854b | ||
|
|
385148cf6e | ||
|
|
f207818afa | ||
|
|
1280cf5108 | ||
|
|
a5714903ac | ||
|
|
dd0c0cd3e1 | ||
|
|
51d3fe54f3 | ||
|
|
7c2b773ad1 | ||
|
|
f3a87de967 | ||
|
|
536191cef6 | ||
|
|
43d70de5bb | ||
|
|
6fab59a13c | ||
|
|
03f18d5242 | ||
|
|
66cddab4a4 | ||
|
|
3e9169b282 | ||
|
|
77fa10304b | ||
|
|
68bd329da9 | ||
|
|
14e40cedca | ||
|
|
6382f31f9a | ||
|
|
44496a300e | ||
|
|
08d250e5ef | ||
|
|
f07eabedbe | ||
|
|
5df2c7686c | ||
|
|
7946ee78f6 | ||
|
|
335a39bc75 | ||
|
|
d50a7dbd1a | ||
|
|
6714bb114c | ||
|
|
cda498f779 | ||
|
|
67c18cb082 | ||
|
|
22fd919220 | ||
|
|
1e0e9c4f7d | ||
|
|
814250aade | ||
|
|
2e072baf72 | ||
|
|
7f22d6135a | ||
|
|
331fd76b42 | ||
|
|
1259d72643 | ||
|
|
cab1bc3cb4 | ||
|
|
4cd331f0ca | ||
|
|
e4e2761fe3 | ||
|
|
45653180ed | ||
|
|
68e559c613 | ||
|
|
c2ef9d06ca | ||
|
|
db5943bd8f | ||
|
|
b6f64c4ba4 | ||
|
|
a3e43e4e97 | ||
|
|
0a2db9bc59 | ||
|
|
12b263c20b | ||
|
|
4a4d4569ae | ||
|
|
3286b4e32f | ||
|
|
63f2c7fe00 | ||
|
|
7504f6216a | ||
|
|
58715daf10 | ||
|
|
1ad8736d72 | ||
|
|
79ec042e0d | ||
|
|
7c74b7cdb7 | ||
|
|
e8826863e0 | ||
|
|
4f79deac0b | ||
|
|
695166bde5 | ||
|
|
9ce0e77e61 | ||
|
|
0b911bf58c | ||
|
|
15ca0ba1b6 | ||
|
|
c6183c9d03 | ||
|
|
dfd896db10 | ||
|
|
ac8f8fb0b0 | ||
|
|
d6ae6b2773 | ||
|
|
a42f789ff0 | ||
|
|
5d8ec6e5b0 | ||
|
|
e711a1bbc6 | ||
|
|
b6e1223e88 | ||
|
|
28921be00f | ||
|
|
4e8f29f328 | ||
|
|
126e1fb53d | ||
|
|
ebf4963758 | ||
|
|
eece396b30 | ||
|
|
abcb5f8830 | ||
|
|
ebb4c9994f | ||
|
|
971eee32ea | ||
|
|
af84d6b1e0 | ||
|
|
2cb69f09b9 | ||
|
|
0403079a4b | ||
|
|
97984eb3ec | ||
|
|
c46fd30446 | ||
|
|
ff8a301f6a | ||
|
|
27bd28ee97 | ||
|
|
fb4d25d907 | ||
|
|
ca6f52e7c7 | ||
|
|
3bdeb9ace1 | ||
|
|
f64b59e735 | ||
|
|
5d78f4a89f | ||
|
|
695f870ce1 | ||
|
|
593b111fdf | ||
|
|
82efd188c4 | ||
|
|
9df7275429 | ||
|
|
829876c2e0 | ||
|
|
41ba6bd1f4 | ||
|
|
aa282711f8 | ||
|
|
5a501603ac | ||
|
|
e7f8cb4ea3 | ||
|
|
78d9aa5b76 | ||
|
|
038029eb2d | ||
|
|
a14cc1bd77 | ||
|
|
33389fc48e | ||
|
|
d468c16ca2 | ||
|
|
fcf7cf5eb2 | ||
|
|
b08e90ea88 | ||
|
|
75dc42cf24 | ||
|
|
ec3d142ad9 | ||
|
|
280f0b0038 | ||
|
|
7307c52250 | ||
|
|
e8cb962890 | ||
|
|
934f17c65e | ||
|
|
55f36912f9 | ||
|
|
7b1ad5fa67 | ||
|
|
7d8a915ee0 | ||
|
|
8b4df8beb1 | ||
|
|
f98a74b526 | ||
|
|
8a0eae2bb0 | ||
|
|
18f47a59c5 | ||
|
|
31b1af2f84 | ||
|
|
4c56e49c66 | ||
|
|
2de2c30545 | ||
|
|
51897dc804 | ||
|
|
bbef00a151 | ||
|
|
627aa5d695 | ||
|
|
0d8b3c4389 | ||
|
|
8031c35160 | ||
|
|
8cf14222ff | ||
|
|
10b15b3986 | ||
|
|
73fefb8603 | ||
|
|
af6c1a24cf | ||
|
|
cfca6f6218 | ||
|
|
c001b7b50a | ||
|
|
bd259cda42 | ||
|
|
75be0bc22d | ||
|
|
1305d9910b | ||
|
|
6a850fff10 | ||
|
|
6b9f002366 | ||
|
|
0eb8d6c8d6 | ||
|
|
8a2a5fda1d | ||
|
|
a2b35b35f3 | ||
|
|
f250f5de5e | ||
|
|
fa60ab0f6a | ||
|
|
1d3e0a4455 | ||
|
|
82c5febde6 | ||
|
|
0914ec24ad | ||
|
|
57d757d4de | ||
|
|
7edaac1da7 | ||
|
|
9ab451e163 | ||
|
|
213be44e29 | ||
|
|
cb597d0acb | ||
|
|
badc6f33bf | ||
|
|
a5993549b8 | ||
|
|
13b44fffc7 | ||
|
|
fc1a1610a3 | ||
|
|
47eca9a19c | ||
|
|
f635df6ccf | ||
|
|
b2669930f5 | ||
|
|
f25cde8c5f | ||
|
|
797bdb8696 | ||
|
|
c80be9b3a3 | ||
|
|
84e2b844e0 | ||
|
|
be534be674 | ||
|
|
846d0eafe6 | ||
|
|
cd179a3e9f | ||
|
|
2d10e95311 | ||
|
|
f9af74529c | ||
|
|
8c9ab2afd9 | ||
|
|
708a570ba0 | ||
|
|
074db05f7a | ||
|
|
73b437c0f5 | ||
|
|
df5dced926 | ||
|
|
1590df8dfd | ||
|
|
5ee33cf162 | ||
|
|
7a25da9b06 | ||
|
|
d7faa85338 | ||
|
|
cf2328d2cd | ||
|
|
4e52a8664c | ||
|
|
7bae1eb663 | ||
|
|
4791897578 | ||
|
|
1cbdb435df | ||
|
|
b59495603a | ||
|
|
58f86a3c32 | ||
|
|
adcf089357 | ||
|
|
636821f2ac | ||
|
|
b983b094a3 | ||
|
|
53077b6c04 | ||
|
|
a0ddfad655 | ||
|
|
39f92ffae4 | ||
|
|
84a5467a5e | ||
|
|
35d6277f00 | ||
|
|
85290d4e61 | ||
|
|
48a26e8979 | ||
|
|
53a8cac7f8 | ||
|
|
96128f6a15 | ||
|
|
e2a80b2465 | ||
|
|
6dd91c8277 | ||
|
|
83ade5dcc2 | ||
|
|
5c257fe1b9 | ||
|
|
740a50680e | ||
|
|
706eec0d5b | ||
|
|
f63190dc93 | ||
|
|
58bb14253e | ||
|
|
eb7c3ef361 | ||
|
|
2c37ff2893 | ||
|
|
a30a722e11 | ||
|
|
650a15beec | ||
|
|
2fc65589c8 | ||
|
|
bf7f8cdd73 | ||
|
|
ae76ea3585 | ||
|
|
0b46bdf901 | ||
|
|
b02e210c68 | ||
|
|
e6d2334753 | ||
|
|
9f4ce1e7d1 | ||
|
|
efd0dd2ac0 | ||
|
|
b90a390d5c | ||
|
|
2f495006ea | ||
|
|
dd09986f71 | ||
|
|
41873de29e | ||
|
|
92c9e59c1f | ||
|
|
d5101b7568 | ||
|
|
e7888c5265 | ||
|
|
ebeb768a53 | ||
|
|
228156d0b6 | ||
|
|
1607875a08 | ||
|
|
707d0372ba | ||
|
|
1317e5a921 | ||
|
|
1e00611792 | ||
|
|
22b7ae6cdc | ||
|
|
684818def1 | ||
|
|
5ee0328063 | ||
|
|
ab98e5f6bb | ||
|
|
84a8a522e3 | ||
|
|
133a59c71b | ||
|
|
168aaa227a | ||
|
|
74e776ba21 | ||
|
|
90eff9a596 | ||
|
|
cd86ce08cf | ||
|
|
7e20bf5b75 | ||
|
|
98f6b1ff12 | ||
|
|
a410b15e30 | ||
|
|
72a3ed9068 | ||
|
|
1be0ff13db | ||
|
|
1216f075ce | ||
|
|
99e1f005fc | ||
|
|
bf69b16f1f | ||
|
|
36df6d5c8a | ||
|
|
a9974b418c | ||
|
|
de6fbe7725 | ||
|
|
172edaa227 | ||
|
|
bac50e10f0 | ||
|
|
b9c7e7e9af | ||
|
|
8c461ffb86 | ||
|
|
1934a75eee | ||
|
|
90cdeeff0a | ||
|
|
6d45dd4491 | ||
|
|
b22bfdf74b | ||
|
|
6dab60d9e4 | ||
|
|
657bf08fb8 | ||
|
|
ff1d9e20d1 | ||
|
|
d03553be7a | ||
|
|
5dc52446f3 | ||
|
|
eb517e6df8 | ||
|
|
621d66fb57 | ||
|
|
964d211260 | ||
|
|
c83d997f2f | ||
|
|
7a9a45b065 | ||
|
|
700ecaef4a | ||
|
|
19c8fcd775 | ||
|
|
bcd6f3f429 | ||
|
|
92e531db02 | ||
|
|
f81c546069 | ||
|
|
68f41dd5c6 | ||
|
|
1be9dd4033 | ||
|
|
0c6776b713 | ||
|
|
9cd8492ec1 | ||
|
|
6df5d14a60 | ||
|
|
91881ad6d3 | ||
|
|
e011ad02a5 | ||
|
|
fdf5d12196 | ||
|
|
8af25ba0c1 | ||
|
|
2ba4f79a46 | ||
|
|
185e0f61e2 | ||
|
|
e84f4cd35b | ||
|
|
eef20dc5a9 | ||
|
|
0b65dcd4ef | ||
|
|
ba58b140d4 | ||
|
|
a0cd6c6a88 | ||
|
|
776e092a89 | ||
|
|
fe6e21a08b | ||
|
|
4e2fd404c0 | ||
|
|
ae9d324f8f | ||
|
|
6f8fb6f49d | ||
|
|
52d6017ce5 | ||
|
|
9e58717321 | ||
|
|
c3a334f8df | ||
|
|
72a4f93e4f | ||
|
|
09e13b2f37 | ||
|
|
60078c37a3 | ||
|
|
1cf9ced260 | ||
|
|
50cf6489b9 | ||
|
|
621a48c642 | ||
|
|
c841c82220 | ||
|
|
22b89265d6 | ||
|
|
e2c20b5022 | ||
|
|
2dd7de73b9 | ||
|
|
bd227e03bd | ||
|
|
413202899f | ||
|
|
bd2a484c2f | ||
|
|
5e8a75cdf9 | ||
|
|
d8ed75dbfd | ||
|
|
4392b83a98 | ||
|
|
256d1e55c8 | ||
|
|
c2dcfdb96f | ||
|
|
46c7562ed2 | ||
|
|
42018e69a5 | ||
|
|
56c6fc6b72 | ||
|
|
c0a6ff3029 | ||
|
|
79f3db5ea5 | ||
|
|
b5327cbe17 | ||
|
|
217e9ed0b1 | ||
|
|
82c7a94023 | ||
|
|
1a1b63f92a | ||
|
|
6810fa6ce6 | ||
|
|
8876c4241f | ||
|
|
190574b3af | ||
|
|
fac1857579 | ||
|
|
acedd38899 | ||
|
|
e3bf110f1f | ||
|
|
638d597061 | ||
|
|
588aa88144 | ||
|
|
c918407eb3 | ||
|
|
f87c981974 | ||
|
|
360ec29963 | ||
|
|
657b0f82ec | ||
|
|
2813d82996 | ||
|
|
b13dd2abc2 | ||
|
|
a5a5503821 | ||
|
|
cd2f48aeb1 | ||
|
|
88e515093c | ||
|
|
9ef5a53790 | ||
|
|
da530824d6 | ||
|
|
ea693396b8 | ||
|
|
f4cba74bf6 | ||
|
|
8b68ea6465 | ||
|
|
69046a9429 | ||
|
|
f3f8c1b7e8 | ||
|
|
042888f5d7 | ||
|
|
ec197c68b8 | ||
|
|
026c0d2389 | ||
|
|
032583e280 | ||
|
|
57b3771450 | ||
|
|
4dbfdd8740 | ||
|
|
f23fe38e0b | ||
|
|
321366489d | ||
|
|
6d5b1673e6 | ||
|
|
8be65ceb7b | ||
|
|
a8384a8826 | ||
|
|
9645bb3911 | ||
|
|
847059b717 | ||
|
|
08c776e308 | ||
|
|
716ef2f0db | ||
|
|
c5d5fbdafd | ||
|
|
9a8d520abd | ||
|
|
296befc881 | ||
|
|
00d3aaa1fd | ||
|
|
64399901ad | ||
|
|
0aba9703cd | ||
|
|
f8192b82b8 | ||
|
|
040e988323 | ||
|
|
849cd65bb7 | ||
|
|
382a35c25e | ||
|
|
0c22b78cf9 | ||
|
|
7d1a08f22f | ||
|
|
bce53e02e5 | ||
|
|
606b5287be | ||
|
|
b278265005 | ||
|
|
f9d881ffa6 | ||
|
|
6fcc4ae6a2 | ||
|
|
67d3f14c3d | ||
|
|
947dbf6d0a | ||
|
|
173cfb72b2 | ||
|
|
2e61eb0990 | ||
|
|
3417186df7 | ||
|
|
772c6ecd84 | ||
|
|
efe7f1de6a | ||
|
|
b51eef12b7 | ||
|
|
6cb71c9ae4 | ||
|
|
2e098c487a | ||
|
|
e592dfde2a | ||
|
|
7168499521 | ||
|
|
f5f79a516a | ||
|
|
44dc78f4df | ||
|
|
25c3142586 | ||
|
|
a44424d5fa | ||
|
|
bb4777578a | ||
|
|
2f4cae35bd | ||
|
|
a9bfa8a71d | ||
|
|
9e3f5f53cc | ||
|
|
8b354aec1d | ||
|
|
6101e72552 | ||
|
|
898c7b27df | ||
|
|
4d7fc8be52 | ||
|
|
f819841430 | ||
|
|
5d008f0525 | ||
|
|
b0d4200aa0 | ||
|
|
167bbe100e | ||
|
|
4e7422ed4b | ||
|
|
867b2a5149 | ||
|
|
2cc8f5f272 | ||
|
|
9be0fef470 | ||
|
|
b4759e776e | ||
|
|
1d8dfc110e | ||
|
|
6ed615a1fc | ||
|
|
7d12dc3b80 | ||
|
|
72a102aac8 | ||
|
|
17883fbd84 | ||
|
|
7a7782a350 | ||
|
|
b649094d36 | ||
|
|
8c45dea975 | ||
|
|
509c696aa3 | ||
|
|
866db40f48 | ||
|
|
9169d3d4bf | ||
|
|
f1e48b719d | ||
|
|
081bebaf80 | ||
|
|
1fe840fcac | ||
|
|
6cccb5da31 | ||
|
|
6c3f0a4606 | ||
|
|
d736f4266c | ||
|
|
33c88ceb68 | ||
|
|
a1f8e010b7 | ||
|
|
d924a7fb8d | ||
|
|
95905cfd5b | ||
|
|
c0122a72c8 | ||
|
|
ff838e43df | ||
|
|
c6d7a0a8da | ||
|
|
485c654c6e | ||
|
|
265bf61adf | ||
|
|
0bcabd59d3 | ||
|
|
6bda0d4891 | ||
|
|
97ddab93af | ||
|
|
6322674d98 | ||
|
|
f8fb78be11 | ||
|
|
15c37b620e | ||
|
|
28eb2c0b4b | ||
|
|
535c7eeef8 | ||
|
|
f0ecc95ca9 | ||
|
|
0e63914ab3 | ||
|
|
9b64acb3d2 | ||
|
|
0ab5e0d4ef | ||
|
|
4cb0f87dfd | ||
|
|
fa64e8b38f | ||
|
|
fb6cca415d | ||
|
|
b757d26933 | ||
|
|
9f64f5b8db | ||
|
|
a0aa185518 | ||
|
|
1f53baee8f | ||
|
|
6a79d0a195 | ||
|
|
8fd5efaa84 | ||
|
|
53cdc80df2 | ||
|
|
38d4728333 | ||
|
|
b0cd028ff8 | ||
|
|
100f59f78b | ||
|
|
23ea201325 | ||
|
|
441cc57bb8 | ||
|
|
a361fd94ff | ||
|
|
acb0eb2141 | ||
|
|
315d1a40a4 | ||
|
|
92dd13e72a | ||
|
|
0d39e791c9 | ||
|
|
53760dbf59 | ||
|
|
dd6f6cf1af | ||
|
|
5e96f0fd61 | ||
|
|
98d703645c | ||
|
|
cead7b0a6f | ||
|
|
139d9e21da | ||
|
|
d81bd595aa | ||
|
|
ed211a2bbb | ||
|
|
e21911b1c6 | ||
|
|
d3d1eb3355 | ||
|
|
d8381918a7 | ||
|
|
e9af0c3226 | ||
|
|
e5012ea9c6 | ||
|
|
306269af5d | ||
|
|
6563067892 | ||
|
|
8bae604129 | ||
|
|
f451f89d38 | ||
|
|
61413c1902 | ||
|
|
f88ca891fa | ||
|
|
445e89576b | ||
|
|
1a1734cf5c | ||
|
|
a0f7d0d50f | ||
|
|
c4dc839d7c | ||
|
|
f5c1cd9df8 | ||
|
|
177653370a | ||
|
|
6bf522da0f | ||
|
|
922603975f | ||
|
|
7284f98c79 | ||
|
|
8bbc6ecdb8 | ||
|
|
7cbde91140 | ||
|
|
5bdff56b8d | ||
|
|
96ce010635 | ||
|
|
47fcf87ae4 | ||
|
|
1257ec9969 | ||
|
|
cda7d7de90 | ||
|
|
e7981c7f11 | ||
|
|
ba87cbecfd | ||
|
|
bf6b963c45 | ||
|
|
9f8acfc51d | ||
|
|
8cf316b853 | ||
|
|
55817f685f | ||
|
|
35d585251a | ||
|
|
242dd48cbd | ||
|
|
30134800f3 | ||
|
|
e517fdf6bc | ||
|
|
b00ea3cd99 | ||
|
|
c0b6c8726e | ||
|
|
52c550e3fe | ||
|
|
57e72ce598 | ||
|
|
ba3deb5b9b | ||
|
|
fb0022923a | ||
|
|
ccaea82341 | ||
|
|
1a143c9e2c | ||
|
|
23d15bde8b | ||
|
|
49c55b41a2 | ||
|
|
4f822c8021 | ||
|
|
c3801165a5 | ||
|
|
fdf58f2d85 | ||
|
|
9a3b3530a6 | ||
|
|
b280c91013 | ||
|
|
95f6a63c70 | ||
|
|
96965797f6 | ||
|
|
7b5d96c5a6 | ||
|
|
00e2480b7b | ||
|
|
f98e3fa1fd | ||
|
|
81d8ea56f8 | ||
|
|
654dc0e2d7 | ||
|
|
b4e4b9d498 | ||
|
|
52af8d3e49 | ||
|
|
546806c40c | ||
|
|
ca7e93cc2c | ||
|
|
4ee76ba8c9 | ||
|
|
5d7ec14076 | ||
|
|
88f033e2a8 | ||
|
|
2e878a3fb2 | ||
|
|
c6e7ce03cc | ||
|
|
c45fb47b08 | ||
|
|
d39fe78239 | ||
|
|
0399d0be15 | ||
|
|
19237fe247 | ||
|
|
729c370125 | ||
|
|
636c224bd0 | ||
|
|
ab25238f17 | ||
|
|
b9ffbf73e0 | ||
|
|
23cad47f8d | ||
|
|
5fd308aafc | ||
|
|
88bee071e5 | ||
|
|
1fcb1f0228 | ||
|
|
9544ce1d18 | ||
|
|
8cf15ea17c | ||
|
|
bc10fa5c03 | ||
|
|
1d5f5a2067 | ||
|
|
70a7c42be1 | ||
|
|
d0e6090761 | ||
|
|
87ba177ff3 | ||
|
|
0511554db9 | ||
|
|
026292f07b | ||
|
|
18d507780d | ||
|
|
3aedae1436 | ||
|
|
9cbb9a3d24 | ||
|
|
b173fda116 | ||
|
|
d9ccef94a2 | ||
|
|
eff63931f2 | ||
|
|
3ec676194b | ||
|
|
8030bc708b | ||
|
|
fd78faf0cc | ||
|
|
bfcdcdc4f1 | ||
|
|
a75273a714 | ||
|
|
c9cc5257c7 | ||
|
|
3b4fa40253 | ||
|
|
9ee896aac4 | ||
|
|
01cb1839f8 | ||
|
|
1eb07608e9 | ||
|
|
8e16e000c3 | ||
|
|
64d7c2c62d | ||
|
|
e028ebc152 | ||
|
|
30051f3257 | ||
|
|
c4a52687b6 | ||
|
|
a06c13623d | ||
|
|
b303693ae8 | ||
|
|
6b012193e3 | ||
|
|
cd6ff48cc0 | ||
|
|
dbdea181a9 | ||
|
|
721a5da895 | ||
|
|
8578acd915 | ||
|
|
f3c95d9643 | ||
|
|
5c5b61c4db | ||
|
|
760e38293c | ||
|
|
dcfef154ce | ||
|
|
10b2e91e29 | ||
|
|
4f415f9768 | ||
|
|
93b5bc6bf8 | ||
|
|
60c2d0e23b | ||
|
|
c44710c9d7 | ||
|
|
37e034b3ef | ||
|
|
adb8fdb096 | ||
|
|
22cdb86aab | ||
|
|
576dc55615 | ||
|
|
f8fa1cf6d6 | ||
|
|
3bb9f0ba8c | ||
|
|
91eb60a363 | ||
|
|
4457a6a6a1 | ||
|
|
6f8cde67a6 | ||
|
|
391db5131d | ||
|
|
62a61b403e | ||
|
|
e8f108154d | ||
|
|
ccd84b7c2a | ||
|
|
522f3458f6 | ||
|
|
7efed95ac3 | ||
|
|
754cd223c1 | ||
|
|
a0b7dcca64 | ||
|
|
8876183981 | ||
|
|
feb3093c6d | ||
|
|
6f96f67655 | ||
|
|
3be2221948 |
No files matched your search
@@ -0,0 +1,186 @@
|
||||
language: en-US
|
||||
tone_instructions: ''
|
||||
early_access: false
|
||||
enable_free_tier: true
|
||||
reviews:
|
||||
profile: chill
|
||||
request_changes_workflow: false
|
||||
high_level_summary: true
|
||||
high_level_summary_placeholder: '@coderabbitai summary'
|
||||
high_level_summary_in_walkthrough: false
|
||||
auto_title_placeholder: '@coderabbitai'
|
||||
auto_title_instructions: ''
|
||||
review_status: true
|
||||
commit_status: true
|
||||
fail_commit_status: false
|
||||
collapse_walkthrough: false
|
||||
changed_files_summary: true
|
||||
sequence_diagrams: true
|
||||
estimate_code_review_effort: true
|
||||
assess_linked_issues: true
|
||||
related_issues: true
|
||||
related_prs: true
|
||||
suggested_labels: true
|
||||
labeling_instructions: []
|
||||
auto_apply_labels: false
|
||||
suggested_reviewers: true
|
||||
auto_assign_reviewers: false
|
||||
in_progress_fortune: true
|
||||
poem: false
|
||||
path_filters: []
|
||||
path_instructions: []
|
||||
abort_on_close: true
|
||||
disable_cache: false
|
||||
auto_review:
|
||||
enabled: true
|
||||
auto_incremental_review: true
|
||||
ignore_title_keywords: []
|
||||
labels: []
|
||||
drafts: false
|
||||
base_branches: []
|
||||
ignore_usernames: []
|
||||
finishing_touches:
|
||||
docstrings:
|
||||
enabled: true
|
||||
unit_tests:
|
||||
enabled: true
|
||||
pre_merge_checks:
|
||||
docstrings:
|
||||
mode: warning
|
||||
threshold: 80
|
||||
title:
|
||||
mode: warning
|
||||
requirements: ''
|
||||
description:
|
||||
mode: warning
|
||||
issue_assessment:
|
||||
mode: warning
|
||||
custom_checks: []
|
||||
tools:
|
||||
ast-grep:
|
||||
rule_dirs: []
|
||||
util_dirs: []
|
||||
essential_rules: true
|
||||
packages: []
|
||||
shellcheck:
|
||||
enabled: true
|
||||
ruff:
|
||||
enabled: true
|
||||
markdownlint:
|
||||
enabled: true
|
||||
github-checks:
|
||||
enabled: true
|
||||
timeout_ms: 900000
|
||||
languagetool:
|
||||
enabled: true
|
||||
enabled_rules: []
|
||||
disabled_rules: []
|
||||
enabled_categories: []
|
||||
disabled_categories: []
|
||||
enabled_only: false
|
||||
level: default
|
||||
biome:
|
||||
enabled: true
|
||||
hadolint:
|
||||
enabled: true
|
||||
swiftlint:
|
||||
enabled: true
|
||||
phpstan:
|
||||
enabled: true
|
||||
level: default
|
||||
phpmd:
|
||||
enabled: true
|
||||
phpcs:
|
||||
enabled: true
|
||||
golangci-lint:
|
||||
enabled: true
|
||||
yamllint:
|
||||
enabled: true
|
||||
gitleaks:
|
||||
enabled: true
|
||||
checkov:
|
||||
enabled: true
|
||||
detekt:
|
||||
enabled: true
|
||||
eslint:
|
||||
enabled: true
|
||||
flake8:
|
||||
enabled: true
|
||||
rubocop:
|
||||
enabled: true
|
||||
buf:
|
||||
enabled: true
|
||||
regal:
|
||||
enabled: true
|
||||
actionlint:
|
||||
enabled: true
|
||||
pmd:
|
||||
enabled: true
|
||||
clang:
|
||||
enabled: true
|
||||
cppcheck:
|
||||
enabled: true
|
||||
semgrep:
|
||||
enabled: true
|
||||
circleci:
|
||||
enabled: true
|
||||
clippy:
|
||||
enabled: true
|
||||
sqlfluff:
|
||||
enabled: true
|
||||
prismaLint:
|
||||
enabled: true
|
||||
pylint:
|
||||
enabled: true
|
||||
oxc:
|
||||
enabled: true
|
||||
shopifyThemeCheck:
|
||||
enabled: true
|
||||
luacheck:
|
||||
enabled: true
|
||||
brakeman:
|
||||
enabled: true
|
||||
dotenvLint:
|
||||
enabled: true
|
||||
htmlhint:
|
||||
enabled: true
|
||||
checkmake:
|
||||
enabled: true
|
||||
osvScanner:
|
||||
enabled: true
|
||||
chat:
|
||||
art: true
|
||||
auto_reply: true
|
||||
integrations:
|
||||
jira:
|
||||
usage: auto
|
||||
linear:
|
||||
usage: auto
|
||||
knowledge_base:
|
||||
opt_out: false
|
||||
web_search:
|
||||
enabled: true
|
||||
code_guidelines:
|
||||
enabled: true
|
||||
filePatterns: []
|
||||
learnings:
|
||||
scope: auto
|
||||
issues:
|
||||
scope: auto
|
||||
jira:
|
||||
usage: auto
|
||||
project_keys: []
|
||||
linear:
|
||||
usage: auto
|
||||
team_keys: []
|
||||
pull_requests:
|
||||
scope: auto
|
||||
mcp:
|
||||
usage: auto
|
||||
disabled_servers: []
|
||||
code_generation:
|
||||
docstrings:
|
||||
language: en-US
|
||||
path_instructions: []
|
||||
unit_tests:
|
||||
path_instructions: []
|
||||
@@ -1,5 +1,5 @@
|
||||
.git
|
||||
web/node_modules
|
||||
web/config_*.py
|
||||
web/*.log
|
||||
web/regression
|
||||
web/**/tests/
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Auto detect text files and normalize end of lines to LF (\n)
|
||||
* text=auto eol=lf
|
||||
@@ -34,7 +34,7 @@ If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. Windows 10, OSX monterey]
|
||||
- Version: [e.g. 6.15]
|
||||
- pgAdmin version: [e.g. 6.15]
|
||||
- Mode: [e.g Desktop or Server]
|
||||
- Browser (if running in server mode): [e.g. chrome, safari]
|
||||
- Package type: [e.g. RPM, DEB, Python, Container, etc.]
|
||||
|
||||
@@ -3,7 +3,7 @@ updates:
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
@@ -12,7 +12,7 @@ updates:
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
@@ -21,7 +21,7 @@ updates:
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/tools"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
@@ -30,7 +30,7 @@ updates:
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/web/regression"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
@@ -39,7 +39,7 @@ updates:
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/runtime"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
@@ -48,7 +48,7 @@ updates:
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/web"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
|
||||
@@ -14,10 +14,15 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
build-container:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 2
|
||||
|
||||
- name: Build the container
|
||||
run: docker build .
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: false
|
||||
context: .
|
||||
@@ -14,7 +14,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
build-docs:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -14,7 +14,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
check-javascript-style:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -22,7 +22,7 @@ jobs:
|
||||
- name: Upgrade yarn
|
||||
run: |
|
||||
yarn set version berry
|
||||
yarn set version 3
|
||||
yarn set version 4
|
||||
|
||||
- name: Install Node modules
|
||||
run: |
|
||||
|
||||
@@ -14,7 +14,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
build-python-package:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -14,7 +14,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
check-python-style:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -14,7 +14,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
build-tarball:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -14,7 +14,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
check-translations:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -21,23 +21,26 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
pgver: [12, 13, 14, 15, 16]
|
||||
pgver: [14, 15, 16, 17, 18]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup the EDB APT repo on Linux
|
||||
run: |
|
||||
sudo su -c 'echo "deb [arch=amd64] https://apt.enterprisedb.com/$(lsb_release -cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list'
|
||||
sudo su -c 'echo "machine apt.enterprisedb.com login ${{ secrets.EDB_REPO_USERNAME }} password ${{ secrets.EDB_REPO_PASSWORD }}" > /etc/apt/auth.conf.d/edb.conf'
|
||||
sudo wget -q -O - https://apt.enterprisedb.com/edb-deb.gpg.key | sudo apt-key add -
|
||||
curl -1sLf 'https://downloads.enterprisedb.com/${{ secrets.CLOUDSMITH_TOKEN }}/enterprise/setup.deb.sh' | sudo -E bash
|
||||
|
||||
- name: Install platform dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev edb-as${{ matrix.pgver }}-server edb-as${{ matrix.pgver }}-server-pldebugger edb-as${{ matrix.pgver }}-pgagent
|
||||
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev edb-as${{ matrix.pgver }}-server edb-as${{ matrix.pgver }}-server-pldebugger
|
||||
|
||||
- name: Install pgagent on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver <= 16 }}
|
||||
run: |
|
||||
sudo apt install -y edb-as${{ matrix.pgver }}-pgagent
|
||||
|
||||
- name: Create the tablespace directory
|
||||
run: |
|
||||
@@ -58,7 +61,9 @@ jobs:
|
||||
sleep 2
|
||||
done
|
||||
|
||||
psql -U enterprisedb -d postgres -p 58${{ matrix.pgver }} -c 'CREATE EXTENSION IF NOT EXISTS pgagent;'
|
||||
- name: Create pgagent extension on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver <= 16 }}
|
||||
run: psql -U enterprisedb -d postgres -p 58${{ matrix.pgver }} -c 'CREATE EXTENSION IF NOT EXISTS pgagent;'
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: make install-python-testing
|
||||
@@ -139,7 +144,7 @@ jobs:
|
||||
- name: Upgrade yarn
|
||||
run: |
|
||||
yarn set version berry
|
||||
yarn set version 3
|
||||
yarn set version 4
|
||||
|
||||
- name: Build the JS bundle
|
||||
run: |
|
||||
|
||||
@@ -20,9 +20,9 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
pgver: [12, 13, 14, 15, 16]
|
||||
pgver: [14, 15, 16, 17, 18]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -32,6 +32,18 @@ jobs:
|
||||
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
|
||||
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
||||
|
||||
- name: Uninstall PostgreSQL if already present
|
||||
run: |
|
||||
if [ -n "$(ls /etc/postgresql/*/*/postgresql.conf 2>/dev/null)" ]; then
|
||||
# Extract the major version from pg_config
|
||||
installed_pg_version=$( pg_config --version | cut -d ' ' -f 2 | cut -d '.' -f 1 )
|
||||
echo "Installed PostgreSQL version: $installed_pg_version"
|
||||
if [ $installed_pg_version != ${{ matrix.pgver }} ]; then
|
||||
sudo pg_dropcluster $installed_pg_version main --stop
|
||||
sudo apt-get -y remove "postgresql-${installed_pg_version}"
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: Install platform dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
@@ -119,7 +131,7 @@ jobs:
|
||||
"comment": "PostgreSQL ${{ matrix.pgver }} Server",
|
||||
"db_username": "postgres",
|
||||
"host": "/var/run/postgresql",
|
||||
"db_password": "postgres",
|
||||
"db_password": "",
|
||||
"db_port": 59${{ matrix.pgver }},
|
||||
"maintenance_db": "postgres",
|
||||
"sslmode": "prefer",
|
||||
@@ -142,7 +154,7 @@ jobs:
|
||||
- name: Upgrade yarn
|
||||
run: |
|
||||
yarn set version berry
|
||||
yarn set version 3
|
||||
yarn set version 4
|
||||
|
||||
- name: Build the JS bundle
|
||||
run: |
|
||||
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [macos-latest, ubuntu-latest, windows-latest]
|
||||
os: [macos-latest, ubuntu-22.04, windows-latest]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
- name: Upgrade yarn
|
||||
run: |
|
||||
yarn set version berry
|
||||
yarn set version 3
|
||||
yarn set version 4
|
||||
|
||||
- name: Install Node modules
|
||||
run: |
|
||||
|
||||
@@ -32,25 +32,44 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-22.04, windows-latest]
|
||||
pgver: [12, 13, 14, 15, 16]
|
||||
pgver: [14, 15, 16, 17, 18]
|
||||
postgisver: [34]
|
||||
exclude:
|
||||
- pgver: 18
|
||||
postgisver: 34
|
||||
include:
|
||||
- os: ubuntu-22.04
|
||||
pgver: 18
|
||||
postgisver: 36
|
||||
- os: windows-latest
|
||||
pgver: 18
|
||||
postgisver: 36
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Update python version
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
|
||||
- name: Setup the EDB APT repo on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' }}
|
||||
run: |
|
||||
sudo su -c 'echo "deb [arch=amd64] https://apt.enterprisedb.com/$(lsb_release -cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list'
|
||||
sudo su -c 'echo "machine apt.enterprisedb.com login ${{ secrets.EDB_REPO_USERNAME }} password ${{ secrets.EDB_REPO_PASSWORD }}" > /etc/apt/auth.conf.d/edb.conf'
|
||||
sudo wget -q -O - https://apt.enterprisedb.com/edb-deb.gpg.key | sudo apt-key add -
|
||||
curl -1sLf 'https://downloads.enterprisedb.com/${{ secrets.CLOUDSMITH_TOKEN }}/enterprise/setup.deb.sh' | sudo -E bash
|
||||
|
||||
- name: Install platform dependencies on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' }}
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev edb-as${{ matrix.pgver }}-server edb-as${{ matrix.pgver }}-server-pldebugger edb-as${{ matrix.pgver }}-pgagent
|
||||
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev edb-as${{ matrix.pgver }}-server edb-as${{ matrix.pgver }}-server-pldebugger edb-as${{ matrix.pgver }}-postgis${{ matrix.postgisver }}
|
||||
|
||||
- name: Install pgagent on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver <= 16 }}
|
||||
run: |
|
||||
sudo apt install -y edb-as${{ matrix.pgver }}-pgagent
|
||||
|
||||
- name: Install platform dependencies on Windows
|
||||
if: ${{ matrix.os == 'windows-latest' }}
|
||||
@@ -65,6 +84,14 @@ jobs:
|
||||
IF %ERRORLEVEL% EQU 3010 cmd /c "exit /b 0"
|
||||
shell: cmd
|
||||
|
||||
- name: Add pg_config path to PATH
|
||||
shell: pwsh
|
||||
run: |
|
||||
$pgPath = "C:\\EPAS\\${{ matrix.pgver }}\\bin"
|
||||
Write-Output $pgPath
|
||||
Add-Content -Path $env:GITHUB_PATH -Value $pgPath
|
||||
pg_config --version
|
||||
|
||||
- name: Create the tablespace directory on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' }}
|
||||
run: |
|
||||
@@ -79,7 +106,7 @@ jobs:
|
||||
shell: cmd
|
||||
|
||||
- name: Add edb_job_scheduler into config file.
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver == 16 }}
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver >= 16 }}
|
||||
run: |
|
||||
sudo sed -i "s/shared_preload_libraries = '/shared_preload_libraries = '\$libdir\/edb_job_scheduler,/g" /etc/edb-as/${{ matrix.pgver }}/main/postgresql.conf
|
||||
sudo su -c "echo \"edb_job_scheduler.database_list = 'test_dbms_job_scheduler'\" >> /etc/edb-as/${{ matrix.pgver }}/main/postgresql.conf"
|
||||
@@ -98,8 +125,14 @@ jobs:
|
||||
>&2 echo "EPAS is unavailable - sleeping for 2 seconds"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
psql -U enterprisedb -d postgres -p 58${{ matrix.pgver }} -c 'CREATE EXTENSION IF NOT EXISTS pgagent;'
|
||||
|
||||
- name: Create pgagent extension on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver <= 16 }}
|
||||
run: psql -U enterprisedb -d postgres -p 58${{ matrix.pgver }} -c 'CREATE EXTENSION IF NOT EXISTS pgagent;'
|
||||
|
||||
- name: Create postgis extension on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' }}
|
||||
run: psql -U enterprisedb -d postgres -p 58${{ matrix.pgver }} -c 'CREATE EXTENSION IF NOT EXISTS postgis;'
|
||||
|
||||
- name: Install Python dependencies on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' }}
|
||||
|
||||
@@ -20,25 +20,43 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [macos-latest, ubuntu-latest, windows-latest]
|
||||
pgver: [12, 13, 14, 15, 16]
|
||||
os: [macos-latest, ubuntu-22.04, windows-latest]
|
||||
pgver: [14, 15, 16, 17, 18]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Update python version
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
|
||||
- name: Setup the PGDG APT repo on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-latest' }}
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' }}
|
||||
run: |
|
||||
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
|
||||
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
||||
|
||||
- name: Uninstall PostgreSQL if already present on linux
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' }}
|
||||
run: |
|
||||
if [ -n "$(ls /etc/postgresql/*/*/postgresql.conf 2>/dev/null)" ]; then
|
||||
# Extract the major version from pg_config
|
||||
installed_pg_version=$( pg_config --version | cut -d ' ' -f 2 | cut -d '.' -f 1 )
|
||||
echo "Installed PostgreSQL version: $installed_pg_version"
|
||||
if [ $installed_pg_version != ${{ matrix.pgver }} ]; then
|
||||
sudo pg_dropcluster $installed_pg_version main --stop
|
||||
sudo apt-get -y remove "postgresql-${installed_pg_version}"
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: Install platform dependencies on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-latest' }}
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' }}
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev postgresql-${{ matrix.pgver }} postgresql-${{ matrix.pgver }}-pldebugger pgagent
|
||||
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev postgresql-${{ matrix.pgver }} postgresql-${{ matrix.pgver }}-pldebugger pgagent postgresql-${{ matrix.pgver }}-postgis-3
|
||||
|
||||
- name: Install platform dependencies on macOS
|
||||
if: ${{ matrix.os == 'macos-latest' }}
|
||||
@@ -46,7 +64,8 @@ jobs:
|
||||
brew install postgresql@${{ matrix.pgver }}
|
||||
echo "/opt/homebrew/opt/postgresql@${{ matrix.pgver }}/bin" >> $GITHUB_PATH
|
||||
|
||||
- name: Uninstall PostgreSQL if already present
|
||||
|
||||
- name: Uninstall PostgreSQL if already present on windows
|
||||
if: ${{ matrix.os == 'windows-latest' }}
|
||||
run: |
|
||||
if exist "C:\Program Files\PostgreSQL\{{ matrix.pgver }}\uninstall-postgresql.exe" (
|
||||
@@ -60,15 +79,23 @@ jobs:
|
||||
run: |
|
||||
FOR /f "delims=" %%F IN ('python tools\get_sb_package.py "https://www.postgresql.org/applications-v2.xml" "postgresql_${{ matrix.pgver }}" "windows-x64"') DO SET INSTALLER_EXE=%%F
|
||||
ECHO Running %INSTALLER_EXE%...
|
||||
%INSTALLER_EXE% --prefix C:\PostgreSQL\${{ matrix.pgver }} --datadir C:\PostgreSQL\${{ matrix.pgver }}\data --serverport 59${{ matrix.pgver }} --superpassword postgres --install_runtimes 0 --mode unattended --unattendedmodeui none --disable-components pgAdmin,stackbuilder --enable-components server,commandlinetools"
|
||||
%INSTALLER_EXE% --prefix C:\PostgreSQL_custom\${{ matrix.pgver }} --datadir C:\PostgreSQL_custom\${{ matrix.pgver }}\data --serverport 59${{ matrix.pgver }} --superpassword postgres --install_runtimes 0 --mode unattended --unattendedmodeui none --disable-components pgAdmin,stackbuilder --enable-components server,commandlinetools"
|
||||
choco install -y mitkerberos
|
||||
|
||||
|
||||
REM Ignore error 3010 (reboot required)
|
||||
IF %ERRORLEVEL% EQU 3010 cmd /c "exit /b 0"
|
||||
shell: cmd
|
||||
|
||||
- name: Add pg_config path to PATH
|
||||
shell: pwsh
|
||||
run: |
|
||||
$pgPath = "C:\\PostgreSQL_custom\\${{ matrix.pgver }}\\bin"
|
||||
Write-Output $pgPath
|
||||
Add-Content -Path $env:GITHUB_PATH -Value $pgPath
|
||||
pg_config --version
|
||||
|
||||
- name: Create the tablespace directory on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-latest' }}
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' }}
|
||||
run: |
|
||||
sudo mkdir -p /var/lib/postgresql/tablespaces/${{ matrix.pgver }}
|
||||
sudo chown postgres:postgres /var/lib/postgresql/tablespaces/${{ matrix.pgver }}
|
||||
@@ -86,20 +113,21 @@ jobs:
|
||||
shell: cmd
|
||||
|
||||
- name: Start PostgreSQL on Linux
|
||||
if: ${{ matrix.os == 'ubuntu-latest' }}
|
||||
if: ${{ matrix.os == 'ubuntu-22.04' }}
|
||||
run: |
|
||||
sudo su -c "echo local all all trust > /etc/postgresql/${{ matrix.pgver }}/main/pg_hba.conf"
|
||||
sudo sed -i "s/port = 543[0-9]/port = 59${{ matrix.pgver }}/g" /etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf
|
||||
sudo sed -i "s/#shared_preload_libraries = ''/shared_preload_libraries = '\$libdir\/plugin_debugger'/g" /etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf
|
||||
sudo su - postgres -c "/usr/lib/postgresql/${{ matrix.pgver }}/bin/postgres -D /var/lib/postgresql/${{ matrix.pgver }}/main -c config_file=/etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf &"
|
||||
|
||||
|
||||
until sudo runuser -l postgres -c "pg_isready -p 59${{ matrix.pgver }}" 2>/dev/null; do
|
||||
>&2 echo "Postgres is unavailable - sleeping for 2 seconds"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
|
||||
psql -U postgres -p 59${{ matrix.pgver }} -c 'CREATE EXTENSION pgagent;'
|
||||
psql -U postgres -p 59${{ matrix.pgver }} -c 'CREATE EXTENSION pldbgapi;'
|
||||
psql -U postgres -p 59${{ matrix.pgver }} -c 'CREATE EXTENSION postgis;'
|
||||
|
||||
- name: Start PostgreSQL on macOS
|
||||
if: ${{ matrix.os == 'macos-latest' }}
|
||||
@@ -107,16 +135,16 @@ jobs:
|
||||
echo local all all trust > /opt/homebrew/var/postgresql@${{ matrix.pgver }}/pg_hba.conf
|
||||
sed -i '' "s/#port = 543[0-9]/port = 59${{ matrix.pgver }}/g" /opt/homebrew/var/postgresql@${{ matrix.pgver }}/postgresql.conf
|
||||
brew services restart postgresql@${{ matrix.pgver }}
|
||||
|
||||
|
||||
until /opt/homebrew/opt/postgresql@${{ matrix.pgver }}/bin/pg_isready -p 59${{ matrix.pgver }} 2>/dev/null; do
|
||||
>&2 echo "Postgres is unavailable - sleeping for 2 seconds"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
|
||||
psql postgres -p 59${{ matrix.pgver }} -c 'CREATE ROLE postgres SUPERUSER LOGIN;'
|
||||
|
||||
- name: Install Python dependencies on Linux and macOS
|
||||
if: ${{ matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest' }}
|
||||
if: ${{ matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' }}
|
||||
run: make install-python-testing
|
||||
|
||||
- name: Install Python dependencies on Windows
|
||||
@@ -131,25 +159,25 @@ jobs:
|
||||
shell: cmd
|
||||
|
||||
- name: Create the test configuration on Linux and macOS
|
||||
if: ${{ matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest' }}
|
||||
if: ${{ matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' }}
|
||||
run: |
|
||||
cat <<EOF > web/config_local.py
|
||||
from config import *
|
||||
|
||||
|
||||
# Debug mode
|
||||
DEBUG = True
|
||||
|
||||
|
||||
# App mode
|
||||
SERVER_MODE = False
|
||||
|
||||
|
||||
# Log
|
||||
CONSOLE_LOG_LEVEL = DEBUG
|
||||
FILE_LOG_LEVEL = DEBUG
|
||||
|
||||
|
||||
DEFAULT_SERVER = '127.0.0.1'
|
||||
|
||||
|
||||
UPGRADE_CHECK_ENABLED = False
|
||||
|
||||
|
||||
LOG_FILE = "$(pwd)/var/pgadmin4.log"
|
||||
SESSION_DB_PATH = "$(pwd)/var/sessions"
|
||||
STORAGE_DIR = "$(pwd)/var/storage"
|
||||
@@ -157,7 +185,7 @@ jobs:
|
||||
TEST_SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
|
||||
AZURE_CREDENTIAL_CACHE_DIR = "$(pwd)/var/azurecredentialcache"
|
||||
EOF
|
||||
|
||||
|
||||
cat <<EOF > web/regression/test_config.json
|
||||
{
|
||||
"pgAdmin4_login_credentials": {
|
||||
@@ -181,7 +209,7 @@ jobs:
|
||||
"name": "PostgreSQL ${{ matrix.pgver }}",
|
||||
"comment": "PostgreSQL ${{ matrix.pgver }} Server",
|
||||
"db_username": "postgres",
|
||||
"host": "${{ matrix.os == 'macos-latest' && '/tmp' || matrix.os == 'ubuntu-latest' && '/var/run/postgresql' || '127.0.0.1' }}",
|
||||
"host": "${{ matrix.os == 'macos-latest' && '/tmp' || matrix.os == 'ubuntu-22.04' && '/var/run/postgresql' || '127.0.0.1' }}",
|
||||
"db_password": "postgres",
|
||||
"db_port": 59${{ matrix.pgver }},
|
||||
"maintenance_db": "postgres",
|
||||
@@ -206,7 +234,7 @@ jobs:
|
||||
if: ${{ matrix.os == 'windows-latest' }}
|
||||
run: |
|
||||
FOR /f "delims=" %%D IN ('python -c "import os; print(os.getcwd().replace('\\', '\\\\'))"') DO SET WORKING_DIR=%%D
|
||||
|
||||
|
||||
> web\config_local.py (
|
||||
@echo.from config import *
|
||||
@echo.
|
||||
@@ -231,7 +259,7 @@ jobs:
|
||||
@echo.TEST_SQLITE_PATH = "%WORKING_DIR%\\var\\test_pgadmin4.db"
|
||||
@echo.AZURE_CREDENTIAL_CACHE_DIR = "%WORKING_DIR%\\var\\azurecredentialcache"
|
||||
)
|
||||
|
||||
|
||||
> web\regression\test_config.json (
|
||||
@echo.{
|
||||
@echo. "pgAdmin4_login_credentials": {
|
||||
@@ -278,7 +306,7 @@ jobs:
|
||||
shell: cmd
|
||||
|
||||
- name: Run the tests on Linux and macOS
|
||||
if: ${{ matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest' }}
|
||||
if: ${{ matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' }}
|
||||
run: |
|
||||
. venv/bin/activate
|
||||
make check-python
|
||||
|
||||
@@ -0,0 +1,204 @@
|
||||
name: Run Python tests in server mode (data isolation)
|
||||
|
||||
# This workflow runs the data-isolation tests with SERVER_MODE=True.
|
||||
# The main run-python-tests-pg.yml workflow runs everything with
|
||||
# SERVER_MODE=False, so any test that gates itself on `config.SERVER_MODE`
|
||||
# (notably web/pgadmin/browser/server_groups/tests/test_sg_data_isolation.py
|
||||
# and web/pgadmin/browser/server_groups/servers/tests/test_server_data_isolation.py)
|
||||
# skips itself in CI. That gap allowed the admin-bypass regression in
|
||||
# 9a76ed8 to ship; this workflow exists so regressions to the centralized
|
||||
# access-control helpers in web/pgadmin/utils/server_access.py are caught.
|
||||
#
|
||||
# Scope is intentionally narrow: one OS, one PG version, only the
|
||||
# data-isolation modules. Keep it cheap to run on every PR.
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
pull_request:
|
||||
branches: [ "master" ]
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
run-python-tests-server-mode:
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
env:
|
||||
PG_VER: 18
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
# We don't run any authenticated git operations after checkout
|
||||
# (no push, no submodule fetch, no comment back to the PR), so
|
||||
# persisting the token in the local git config only widens the
|
||||
# blast radius of an unrelated step compromise.
|
||||
persist-credentials: false
|
||||
|
||||
- name: Update python version
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
|
||||
- name: Setup the PGDG APT repo
|
||||
# apt-key is deprecated on Ubuntu 24.04+; install the key into
|
||||
# /etc/apt/keyrings/ and reference it via signed-by= in the
|
||||
# sources.list entry instead.
|
||||
run: |
|
||||
sudo install -d -m 0755 /etc/apt/keyrings
|
||||
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc \
|
||||
| sudo gpg --dearmor -o /etc/apt/keyrings/pgdg.gpg
|
||||
sudo sh -c 'echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
|
||||
|
||||
- name: Uninstall PostgreSQL if already present
|
||||
run: |
|
||||
if [ -n "$(ls /etc/postgresql/*/*/postgresql.conf 2>/dev/null)" ]; then
|
||||
installed_pg_version=$( pg_config --version | cut -d ' ' -f 2 | cut -d '.' -f 1 )
|
||||
echo "Installed PostgreSQL version: $installed_pg_version"
|
||||
if [ $installed_pg_version != ${PG_VER} ]; then
|
||||
sudo pg_dropcluster $installed_pg_version main --stop
|
||||
sudo apt-get -y remove "postgresql-${installed_pg_version}"
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: Install platform dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev postgresql-${PG_VER}
|
||||
|
||||
- name: Start PostgreSQL
|
||||
run: |
|
||||
sudo su -c "echo local all all trust > /etc/postgresql/${PG_VER}/main/pg_hba.conf"
|
||||
sudo sed -i "s/port = 543[0-9]/port = 59${PG_VER}/g" /etc/postgresql/${PG_VER}/main/postgresql.conf
|
||||
sudo su - postgres -c "/usr/lib/postgresql/${PG_VER}/bin/postgres -D /var/lib/postgresql/${PG_VER}/main -c config_file=/etc/postgresql/${PG_VER}/main/postgresql.conf &"
|
||||
|
||||
# Bounded readiness wait: 60 attempts × 2s = 120s cap. If PG
|
||||
# never becomes ready, fail fast with logs rather than hanging
|
||||
# until the job timeout.
|
||||
for attempt in $(seq 1 60); do
|
||||
if sudo runuser -l postgres -c "pg_isready -p 59${PG_VER}" 2>/dev/null; then
|
||||
break
|
||||
fi
|
||||
>&2 echo "Postgres is unavailable (attempt ${attempt}/60) - sleeping for 2 seconds"
|
||||
sleep 2
|
||||
if [ "$attempt" -eq 60 ]; then
|
||||
>&2 echo "Postgres failed to become ready within 120 seconds"
|
||||
sudo tail -n 200 /var/log/postgresql/postgresql-${PG_VER}-main.log || true
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: make install-python-testing
|
||||
|
||||
- name: Create the test configuration (SERVER_MODE=True)
|
||||
run: |
|
||||
mkdir -p var
|
||||
cat <<EOF > web/config_local.py
|
||||
from config import *
|
||||
|
||||
# Debug mode
|
||||
DEBUG = True
|
||||
|
||||
# App mode — this is the whole point of this workflow.
|
||||
SERVER_MODE = True
|
||||
|
||||
# Log
|
||||
CONSOLE_LOG_LEVEL = DEBUG
|
||||
FILE_LOG_LEVEL = DEBUG
|
||||
|
||||
DEFAULT_SERVER = '127.0.0.1'
|
||||
|
||||
UPGRADE_CHECK_ENABLED = False
|
||||
|
||||
LOG_FILE = "$(pwd)/var/pgadmin4.log"
|
||||
SESSION_DB_PATH = "$(pwd)/var/sessions"
|
||||
STORAGE_DIR = "$(pwd)/var/storage"
|
||||
SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
|
||||
TEST_SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
|
||||
AZURE_CREDENTIAL_CACHE_DIR = "$(pwd)/var/azurecredentialcache"
|
||||
EOF
|
||||
|
||||
cat <<EOF > web/regression/test_config.json
|
||||
{
|
||||
"pgAdmin4_login_credentials": {
|
||||
"new_password": "NEWPASSWORD",
|
||||
"login_password": "PASSWORD",
|
||||
"login_username": "USER@EXAMPLE.COM"
|
||||
},
|
||||
"pgAdmin4_test_user_credentials": {
|
||||
"new_password": "NEWPASSWORD",
|
||||
"login_password": "PASSWORD",
|
||||
"login_username": "USER2@EXAMPLE.COM"
|
||||
},
|
||||
"pgAdmin4_test_non_admin_credentials": {
|
||||
"new_password": "NEWPASSWORD",
|
||||
"login_password": "PASSWORD",
|
||||
"login_username": "USER3@EXAMPLE.COM"
|
||||
},
|
||||
"server_group": 1,
|
||||
"server_credentials": [
|
||||
{
|
||||
"name": "PostgreSQL ${{ env.PG_VER }}",
|
||||
"comment": "PostgreSQL ${{ env.PG_VER }} Server",
|
||||
"db_username": "postgres",
|
||||
"host": "/var/run/postgresql",
|
||||
"db_password": "postgres",
|
||||
"db_port": 59${{ env.PG_VER }},
|
||||
"maintenance_db": "postgres",
|
||||
"sslmode": "prefer",
|
||||
"tablespace_path": "/var/lib/postgresql/tablespaces/${{ env.PG_VER }}",
|
||||
"enabled": true,
|
||||
"default_binary_paths": {
|
||||
"pg": "/usr/lib/postgresql/${{ env.PG_VER }}/bin",
|
||||
"ppas": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"server_update_data": [
|
||||
{
|
||||
"comment": "This is test update comment"
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
- name: Run server-group data isolation tests
|
||||
run: |
|
||||
. venv/bin/activate
|
||||
python web/regression/runtests.py --pkg browser.server_groups.tests --modules test_sg_data_isolation
|
||||
|
||||
- name: Run server data isolation tests
|
||||
run: |
|
||||
. venv/bin/activate
|
||||
python web/regression/runtests.py --pkg browser.server_groups.servers.tests --modules test_server_data_isolation
|
||||
|
||||
- name: Run SQL Editor unauth-pickle regression test
|
||||
# Regression guard for the CSRF-only-no-auth chain on
|
||||
# /sqleditor/close and /sqleditor/.../update_connection: both
|
||||
# endpoints reach pickle.loads via close_sqleditor_session() /
|
||||
# check_transaction_status(), so they must require an
|
||||
# authenticated session. This test is a no-op in DESKTOP mode
|
||||
# (auto-re-authentication) so it can only run here.
|
||||
run: |
|
||||
. venv/bin/activate
|
||||
python web/regression/runtests.py --pkg tools.sqleditor --modules test_close_requires_auth
|
||||
|
||||
- name: Archive server log
|
||||
if: success() || failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: server-log-server-mode
|
||||
path: var/pgadmin4.log
|
||||
|
||||
- name: Archive regression log
|
||||
if: success() || failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: regression-log-server-mode
|
||||
path: web/regression/regression.log
|
||||
@@ -22,7 +22,7 @@ jobs:
|
||||
# Only run if the project key is set
|
||||
if: vars.SONARQUBE_PROJECT_KEY != null
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
.DS_Store
|
||||
.idea
|
||||
.vscode
|
||||
.sonarlint
|
||||
.yarn
|
||||
/*.diff
|
||||
/*.patch
|
||||
@@ -38,6 +39,7 @@ runtime/pgAdmin4.app/
|
||||
runtime/pgAdmin4.pro.user*
|
||||
runtime/pgAdmin4_resource.rc
|
||||
runtime/release/
|
||||
runtime/dev_config.json
|
||||
runtime/ui_BrowserWindow.h
|
||||
web/config_local.py
|
||||
web/pgadmin/misc/themes/pgadmin.themes.json
|
||||
@@ -48,6 +50,7 @@ node_modules/
|
||||
web/pgAdmin/static/js/generated
|
||||
web/pgadmin/static/js/generated
|
||||
web/yarn-error.log
|
||||
web/commit_hash
|
||||
/web/cacert.pem
|
||||
auditjs.html
|
||||
auditpy.txt
|
||||
@@ -56,5 +59,6 @@ auditpy.txt
|
||||
web/coverage/
|
||||
web/.coverage
|
||||
web/regression/.coverage
|
||||
.worktree/
|
||||
web/regression/covhtml/
|
||||
web/regression/htmlcov/
|
||||
@@ -6,4 +6,4 @@ show-source = False
|
||||
show-pep8 = False
|
||||
count = True
|
||||
format = pylint
|
||||
exclude = migrations,node_modules,config_local.py,config_distro.py
|
||||
exclude = node_modules,config_local.py,config_distro.py
|
||||
@@ -1,586 +0,0 @@
|
||||
pgAdmin 4 Dependency Inventory
|
||||
==============================
|
||||
|
||||
pgAdmin 4 is built on Python, Javascript and NW.js (node-webkit), and is
|
||||
dependent on various third party libraries. These are automatically compiled
|
||||
from the system, requirements.txt and packages.json and listed below.
|
||||
|
||||
Runtime Dependencies
|
||||
====================
|
||||
|
||||
Name Version Licence URL
|
||||
---- ------- ------- ---
|
||||
Python 3.6+ PSF https://www.python.org/
|
||||
nw 0.50.2 MIT git://github.com/nwjs/npm-installer.git
|
||||
asynckit 0.4.0 MIT git+https://github.com/alexindigo/asynckit.git
|
||||
axios 1.4.0 MIT https://github.com/axios/axios.git
|
||||
bootstrap 4.6.2 MIT git+https://github.com/twbs/bootstrap.git
|
||||
combined-stream 1.0.8 MIT git://github.com/felixge/node-combined-stream.git
|
||||
delayed-stream 1.0.0 MIT git://github.com/felixge/node-delayed-stream.git
|
||||
follow-redirects 1.15.2 MIT git@github.com:follow-redirects/follow-redirects.git
|
||||
form-data 4.0.0 MIT git://github.com/form-data/form-data.git
|
||||
mime-db 1.52.0 MIT https://github.com/jshttp/mime-db.git
|
||||
mime-types 2.1.35 MIT https://github.com/jshttp/mime-types.git
|
||||
proxy-from-env 1.1.0 MIT https://github.com/Rob--W/proxy-from-env.git
|
||||
|
||||
12 dependencies listed.
|
||||
|
||||
Python Dependencies
|
||||
===================
|
||||
|
||||
Name Version Licence URL
|
||||
---- ------- ------- ---
|
||||
Flask 2.2.4 BSD-3-Clause https://palletsprojects.com/p/flask
|
||||
Flask-Gravatar 0.5.0 BSD https://github.com/zzzsochi/Flask-Gravatar/
|
||||
Flask-Login 0.6.2 MIT https://github.com/maxcountryman/flask-login
|
||||
Flask-Mail 0.9.1 BSD https://github.com/rduplain/flask-mail
|
||||
Flask-Migrate 4.0.4 MIT https://github.com/miguelgrinberg/flask-migrate
|
||||
Flask-SQLAlchemy 3.0.3 BSD-3-Clause Unknown
|
||||
Flask-WTF 1.1.1 BSD-3-Clause https://github.com/wtforms/flask-wtf/
|
||||
Flask-Compress 1.13 MIT https://github.com/colour-science/flask-compress
|
||||
Flask-Paranoid 0.3.0 UNKNOWN https://github.com/miguelgrinberg/flask-paranoid
|
||||
flask-babel 3.1.0 BSD-3-Clause https://github.com/python-babel/flask-babel
|
||||
Flask-Security-Too 5.1.2 MIT https://github.com/Flask-Middleware/flask-security
|
||||
Flask-SocketIO 5.3.3 Unknown https://github.com/miguelgrinberg/flask-socketio
|
||||
WTForms 3.0.1 BSD-3-Clause https://wtforms.readthedocs.io/
|
||||
passlib 1.7.4 BSD https://passlib.readthedocs.io
|
||||
pytz 2023.3 MIT http://pythonhosted.org/pytz
|
||||
speaklater3 1.4 UNKNOWN https://github.com/ThomasWaldmann/speaklater
|
||||
sqlparse 0.4.4 Unknown Unknown
|
||||
psutil 5.9.5 BSD-3-Clause https://github.com/giampaolo/psutil
|
||||
psycopg 3.1.8 GNU Lesser General Public License v3 (LGPLv3) https://psycopg.org/psycopg3/
|
||||
python-dateutil 2.8.2 Dual License https://github.com/dateutil/dateutil
|
||||
SQLAlchemy 2.0.11 MIT https://www.sqlalchemy.org
|
||||
bcrypt 4.0.1 Apache License, Version 2.0 https://github.com/pyca/bcrypt/
|
||||
cryptography 40.0.2 (Apache-2.0 OR BSD-3-Clause) AND PSF-2.0 https://github.com/pyca/cryptography
|
||||
sshtunnel 0.4.0 MIT https://github.com/pahaz/sshtunnel
|
||||
ldap3 2.9.1 LGPL v3 https://github.com/cannatag/ldap3
|
||||
gssapi 1.8.2 LICENSE.txt https://github.com/pythongssapi/python-gssapi
|
||||
eventlet 0.33.3 Unknown http://eventlet.net
|
||||
httpagentparser 1.9.5 http://www.opensource.org/licenses/mit-license.php https://github.com/shon/httpagentparser
|
||||
user-agents 2.2.0 MIT https://github.com/selwin/python-user-agents
|
||||
pywinpty 2.0.* Unknown Unknown
|
||||
Authlib 1.2.0 BSD 3-Clause License https://authlib.org/
|
||||
pyotp 2.8.0 MIT License https://github.com/pyotp/pyotp
|
||||
qrcode 7.4.2 BSD https://github.com/lincolnloop/python-qrcode
|
||||
Pillow 9.5.0 HPND https://python-pillow.org
|
||||
boto3 1.26.121 Apache License 2.0 https://github.com/boto/boto3
|
||||
botocore 1.29.121 Apache License 2.0 https://github.com/boto/botocore
|
||||
urllib3 1.26.15 MIT https://urllib3.readthedocs.io/
|
||||
azure-mgmt-rdbms 10.1.0 MIT License https://github.com/Azure/azure-sdk-for-python
|
||||
azure-mgmt-resource 23.0.1 MIT License https://github.com/Azure/azure-sdk-for-python
|
||||
azure-mgmt-subscription 3.1.1 MIT License https://github.com/Azure/azure-sdk-for-python
|
||||
azure-identity 1.13.0 MIT License https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity
|
||||
google-api-python-client 2.86.0 Apache 2.0 https://github.com/googleapis/google-api-python-client/
|
||||
google-auth-oauthlib 1.0.0 Apache 2.0 https://github.com/GoogleCloudPlatform/google-auth-library-python-oauthlib
|
||||
Werkzeug 2.2.3 BSD-3-Clause https://palletsprojects.com/p/werkzeug/
|
||||
keyring 23.13.1 Unknown https://github.com/jaraco/keyring
|
||||
|
||||
NOTE: This report was generated using Python 3.11. Full information may not be
|
||||
shown for Python modules that are not required with this version.
|
||||
|
||||
45 dependencies listed.
|
||||
|
||||
Javascript Dependencies
|
||||
=======================
|
||||
|
||||
Name Version Licence URL
|
||||
---- ------- ------- ---
|
||||
@ampproject/remapping 2.2.1 Apache-2.0 git+https://github.com/ampproject/remapping.git
|
||||
anti-trojan-source 1.4.1 Apache-2.0 https://github.com/lirantal/anti-trojan-source.git
|
||||
eve 0.5.4 Apache-2.0 git@github.com:adobe-webplatform/eve.git
|
||||
jmespath 0.16.0 Apache-2.0 git://github.com/jmespath/jmespath.js
|
||||
jsoneditor 9.10.2 Apache-2.0 https://github.com/josdejong/jsoneditor.git
|
||||
paths-js 0.4.11 Apache-2.0 https://github.com/andreaferretti/paths-js.git
|
||||
rc-dock 3.2.18 Apache-2.0 https://github.com/ticlo/rc-dock.git
|
||||
rc-new-window 0.1.13 Apache-2.0 https://github.com/ticlo/rc-new-window.git
|
||||
snapsvg 0.5.1 Apache-2.0 git@github.com:adobe-webplatform/Snap.svg.git
|
||||
spdx-correct 3.2.0 Apache-2.0 https://github.com/jslicense/spdx-correct.js.git
|
||||
validate-npm-package-license 3.0.4 Apache-2.0 https://github.com/kemitchell/validate-npm-package-license.js.git
|
||||
@babel/code-frame 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/compat-data 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/core 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/generator 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-annotate-as-pure 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-compilation-targets 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-create-class-features-plugin 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-environment-visitor 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-function-name 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-hoist-variables 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-member-expression-to-functions 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-module-imports 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-module-transforms 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-optimise-call-expression 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-plugin-utils 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-replace-supers 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-simple-access 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-skip-transparent-expression-wrappers 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-split-export-declaration 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-string-parser 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-validator-identifier 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-validator-option 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/helpers 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/highlight 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/parser 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-proposal-class-properties 7.18.6 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-syntax-jsx 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-transform-react-display-name 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-transform-react-jsx 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-transform-react-jsx-development 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-transform-react-pure-annotations 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/preset-react 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/runtime 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/template 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/traverse 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@babel/types 7.22.5 MIT https://github.com/babel/babel.git
|
||||
@date-io/core 1.3.13 MIT https://github.com/dmtrKovalenko/date-io
|
||||
@date-io/date-fns 1.3.13 MIT https://github.com/dmtrKovalenko/date-io
|
||||
@emotion/babel-plugin 11.11.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/babel-plugin
|
||||
@emotion/cache 11.11.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/cache
|
||||
@emotion/hash 0.8.0 MIT https://github.com/emotion-js/emotion/tree/master/packages/hash
|
||||
@emotion/hash 0.9.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/hash
|
||||
@emotion/is-prop-valid 1.2.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/is-prop-valid
|
||||
@emotion/memoize 0.8.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/memoize
|
||||
@emotion/react 11.11.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/react
|
||||
@emotion/serialize 1.1.2 MIT https://github.com/emotion-js/emotion/tree/main/packages/serialize
|
||||
@emotion/sheet 1.2.2 MIT https://github.com/emotion-js/emotion/tree/main/packages/sheet
|
||||
@emotion/stylis 0.8.5 MIT https://github.com/emotion-js/emotion/tree/master/packages/stylis
|
||||
@emotion/unitless 0.8.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/unitless
|
||||
@emotion/unitless 0.7.5 MIT https://github.com/emotion-js/emotion/tree/master/packages/unitless
|
||||
@emotion/use-insertion-effect-with-fallbacks 1.0.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/use-insertion-effect-with-fallbacks
|
||||
@emotion/utils 1.2.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/utils
|
||||
@emotion/weak-memoize 0.3.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/weak-memoize
|
||||
@floating-ui/core 1.3.1 MIT https://github.com/floating-ui/floating-ui.git
|
||||
@floating-ui/dom 1.4.2 MIT https://github.com/floating-ui/floating-ui.git
|
||||
@istanbuljs/schema 0.1.3 MIT git+https://github.com/istanbuljs/schema.git
|
||||
@jridgewell/gen-mapping 0.3.3 MIT https://github.com/jridgewell/gen-mapping
|
||||
@jridgewell/resolve-uri 3.1.0 MIT https://github.com/jridgewell/resolve-uri
|
||||
@jridgewell/set-array 1.1.2 MIT https://github.com/jridgewell/set-array
|
||||
@jridgewell/sourcemap-codec 1.4.15 MIT git+https://github.com/jridgewell/sourcemap-codec.git
|
||||
@jridgewell/sourcemap-codec 1.4.14 MIT git+https://github.com/jridgewell/sourcemap-codec.git
|
||||
@jridgewell/trace-mapping 0.3.18 MIT git+https://github.com/jridgewell/trace-mapping.git
|
||||
@material-ui/core 4.12.4 MIT https://github.com/mui-org/material-ui.git
|
||||
@material-ui/icons 4.11.3 MIT https://github.com/mui-org/material-ui.git
|
||||
@material-ui/lab 4.0.0-alpha.61 MIT https://github.com/mui-org/material-ui.git
|
||||
@material-ui/pickers 3.3.10 MIT https://github.com/mui-org/material-ui-pickers
|
||||
@material-ui/styles 4.11.5 MIT https://github.com/mui-org/material-ui.git
|
||||
@material-ui/system 4.12.2 MIT https://github.com/mui-org/material-ui.git
|
||||
@material-ui/types 5.1.0 MIT https://github.com/mui-org/material-ui.git
|
||||
@material-ui/utils 4.11.3 MIT https://github.com/mui-org/material-ui.git
|
||||
@nodelib/fs.scandir 2.1.5 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir
|
||||
@nodelib/fs.stat 2.0.5 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat
|
||||
@nodelib/fs.walk 1.2.8 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk
|
||||
@projectstorm/geometry 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@projectstorm/react-canvas-core 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@projectstorm/react-diagrams 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@projectstorm/react-diagrams-core 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@projectstorm/react-diagrams-defaults 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@projectstorm/react-diagrams-routing 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@rc-component/portal 1.1.1 MIT https://github.com/react-component/portal.git
|
||||
@rc-component/trigger 1.13.6 MIT https://github.com/react-component/trigger.git
|
||||
@react-dnd/asap 5.0.2 MIT https://github.com/react-dnd/react-dnd
|
||||
@react-dnd/invariant 4.0.2 MIT https://github.com/react-dnd/react-dnd
|
||||
@react-dnd/shallowequal 4.0.2 MIT https://github.com/react-dnd/react-dnd
|
||||
@remix-run/router 1.6.3 MIT https://github.com/remix-run/react-router
|
||||
@simonwep/pickr 1.8.2 MIT https://github.com/Simonwep/pickr.git
|
||||
@sindresorhus/is 0.7.0 MIT https://github.com/sindresorhus/is.git
|
||||
@socket.io/component-emitter 3.1.0 MIT https://github.com/socketio/emitter.git
|
||||
@szhsin/react-menu 2.3.4 MIT https://github.com/szhsin/react-menu.git
|
||||
@types/classnames 2.3.1 MIT Unknown
|
||||
@types/minimist 1.2.2 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/node 20.3.1 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/normalize-package-data 2.4.1 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/parse-json 4.0.0 MIT https://www.github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/prop-types 15.7.5 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/react 18.2.13 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/react 16.14.43 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/react 17.0.62 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/react-dom 17.0.20 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/react-transition-group 4.4.6 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/scheduler 0.16.3 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/styled-jsx 2.2.9 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
ajv 8.12.0 MIT https://github.com/ajv-validator/ajv.git
|
||||
ajv 6.12.6 MIT https://github.com/ajv-validator/ajv.git
|
||||
ansi-styles 3.2.1 MIT https://github.com/chalk/ansi-styles.git
|
||||
array-union 3.0.1 MIT https://github.com/sindresorhus/array-union.git
|
||||
arrify 1.0.1 MIT https://github.com/sindresorhus/arrify.git
|
||||
aspen-core 1.0.5 MIT git+https://github.com/neeksandhu/aspen-core.git
|
||||
aspen-decorations 1.1.1 MIT git+https://github.com/neeksandhu/aspen-decorations.git
|
||||
aspen-tree-model 1.0.5 MIT git+https://github.com/neeksandhu/aspen-tree-model.git
|
||||
async 2.6.4 MIT https://github.com/caolan/async.git
|
||||
attr-accept 2.2.2 MIT https://github.com/react-dropzone/attr-accept.git
|
||||
axios 0.21.4 MIT https://github.com/axios/axios.git
|
||||
babel-plugin-macros 3.1.0 MIT https://github.com/kentcdodds/babel-plugin-macros
|
||||
babel-plugin-styled-components 2.1.3 MIT https://github.com/styled-components/babel-plugin-styled-components.git
|
||||
babel-plugin-syntax-jsx 6.18.0 MIT https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-jsx
|
||||
babelify 10.0.0 MIT https://github.com/babel/babelify.git
|
||||
balanced-match 1.0.2 MIT git://github.com/juliangruber/balanced-match.git
|
||||
base64-arraybuffer 1.0.2 MIT https://github.com/niklasvh/base64-arraybuffer
|
||||
bignumber.js 9.1.1 MIT https://github.com/MikeMcl/bignumber.js.git
|
||||
bootstrap 4.6.2 MIT git+https://github.com/twbs/bootstrap.git
|
||||
bowser 2.11.0 MIT git+https://github.com/lancedikson/bowser.git
|
||||
brace 0.11.1 MIT git://github.com/thlorenz/brace.git
|
||||
brace-expansion 1.1.11 MIT git://github.com/juliangruber/brace-expansion.git
|
||||
braces 3.0.2 MIT https://github.com/micromatch/braces.git
|
||||
browserfs 1.4.3 MIT https://github.com/jvilk/BrowserFS.git
|
||||
browserslist 4.21.9 MIT https://github.com/browserslist/browserslist.git
|
||||
callsites 3.1.0 MIT https://github.com/sindresorhus/callsites.git
|
||||
camelcase 6.3.0 MIT https://github.com/sindresorhus/camelcase.git
|
||||
camelcase-keys 7.0.2 MIT https://github.com/sindresorhus/camelcase-keys.git
|
||||
camelize 1.0.1 MIT git://github.com/ljharb/camelize.git
|
||||
caniuse-api 3.0.0 MIT https://github.com/nyalab/caniuse-api.git
|
||||
chalk 2.4.2 MIT https://github.com/chalk/chalk.git
|
||||
chart.js 3.9.1 MIT https://github.com/chartjs/Chart.js.git
|
||||
chartjs-plugin-zoom 2.0.1 MIT https://github.com/chartjs/chartjs-plugin-zoom.git
|
||||
classnames 2.3.2 MIT https://github.com/JedWatson/classnames.git
|
||||
closest 0.0.1 MIT https://github.com/ForbesLindesay/closest.git
|
||||
clsx 1.2.1 MIT https://github.com/lukeed/clsx.git
|
||||
codemirror 5.65.13 MIT https://github.com/codemirror/CodeMirror.git
|
||||
color-convert 1.9.3 MIT https://github.com/Qix-/color-convert.git
|
||||
color-name 1.1.3 MIT git@github.com:dfcreative/color-name.git
|
||||
colord 2.9.3 MIT https://github.com/omgovich/colord.git
|
||||
commander 7.2.0 MIT https://github.com/tj/commander.js.git
|
||||
concat-map 0.0.1 MIT git://github.com/substack/node-concat-map.git
|
||||
convert-source-map 1.9.0 MIT git://github.com/thlorenz/convert-source-map.git
|
||||
convert-units 2.3.4 MIT git://github.com/ben-ng/convert-units.git
|
||||
core-js 3.31.0 MIT https://github.com/zloirock/core-js.git
|
||||
cosmiconfig 7.1.0 MIT git+https://github.com/davidtheclark/cosmiconfig.git
|
||||
css-line-break 2.1.0 MIT git+ssh://git@github.com/niklasvh/css-line-break.git
|
||||
css-to-react-native 3.2.0 MIT git+https://github.com/styled-components/css-to-react-native.git
|
||||
css-tree 1.1.3 MIT https://github.com/csstree/csstree.git
|
||||
css-vendor 2.0.8 MIT git@github.com:cssinjs/css-vendor.git
|
||||
cssesc 3.0.0 MIT https://github.com/mathiasbynens/cssesc.git
|
||||
cssnano 5.1.15 MIT https://github.com/cssnano/cssnano.git
|
||||
cssnano-preset-default 5.2.14 MIT https://github.com/cssnano/cssnano.git
|
||||
cssnano-utils 3.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
csso 4.2.0 MIT https://github.com/css/csso.git
|
||||
csstype 2.6.21 MIT https://github.com/frenic/csstype
|
||||
csstype 3.1.2 MIT https://github.com/frenic/csstype
|
||||
dagre 0.8.5 MIT https://github.com/dagrejs/dagre.git
|
||||
date-fns 2.30.0 MIT https://github.com/date-fns/date-fns
|
||||
debug 4.3.4 MIT git://github.com/debug-js/debug.git
|
||||
decamelize 5.0.1 MIT https://github.com/sindresorhus/decamelize.git
|
||||
decamelize 1.2.0 MIT https://github.com/sindresorhus/decamelize.git
|
||||
decamelize-keys 1.1.1 MIT https://github.com/sindresorhus/decamelize-keys.git
|
||||
deep-diff 1.0.2 MIT git://github.com/flitbit/diff.git
|
||||
diff-arrays-of-objects 1.1.9 MIT git+https://github.com/malcolmvr/diff-arrays-of-objects.git
|
||||
dir-glob 3.0.1 MIT https://github.com/kevva/dir-glob.git
|
||||
dnd-core 16.0.1 MIT https://github.com/react-dnd/react-dnd.git
|
||||
dom-align 1.12.4 MIT git@github.com:yiminghe/dom-align.git
|
||||
dom-helpers 5.2.1 MIT git+https://github.com/react-bootstrap/dom-helpers.git
|
||||
dom-serializer 1.4.1 MIT git://github.com/cheeriojs/dom-renderer.git
|
||||
engine.io-client 6.5.0 MIT https://github.com/socketio/engine.io-client.git
|
||||
engine.io-parser 5.1.0 MIT git@github.com:socketio/engine.io-parser.git
|
||||
error-ex 1.3.2 MIT https://github.com/qix-/node-error-ex.git
|
||||
escalade 3.1.1 MIT https://github.com/lukeed/escalade.git
|
||||
escape-string-regexp 1.0.5 MIT https://github.com/sindresorhus/escape-string-regexp.git
|
||||
escape-string-regexp 4.0.0 MIT https://github.com/sindresorhus/escape-string-regexp.git
|
||||
fast-deep-equal 3.1.3 MIT git+https://github.com/epoberezkin/fast-deep-equal.git
|
||||
fast-glob 3.2.12 MIT https://github.com/mrmlnc/fast-glob.git
|
||||
fast-json-stable-stringify 2.1.0 MIT git://github.com/epoberezkin/fast-json-stable-stringify.git
|
||||
fast-memoize 2.5.2 MIT git+https://github.com/caiogondim/fast-memoize.git
|
||||
file-selector 0.6.0 MIT https://github.com/react-dropzone/file-selector.git
|
||||
filename-reserved-regex 2.0.0 MIT https://github.com/sindresorhus/filename-reserved-regex.git
|
||||
fill-range 7.0.1 MIT https://github.com/jonschlinkert/fill-range.git
|
||||
find-root 1.1.0 MIT git@github.com:js-n/find-root.git
|
||||
find-up 5.0.0 MIT https://github.com/sindresorhus/find-up.git
|
||||
follow-redirects 1.15.2 MIT git@github.com:follow-redirects/follow-redirects.git
|
||||
function-bind 1.1.1 MIT git://github.com/Raynos/function-bind.git
|
||||
gensync 1.0.0-beta.2 MIT https://github.com/loganfsmyth/gensync.git
|
||||
globals 11.12.0 MIT https://github.com/sindresorhus/globals.git
|
||||
globby 12.2.0 MIT https://github.com/sindresorhus/globby.git
|
||||
graphlib 2.1.8 MIT https://github.com/dagrejs/graphlib.git
|
||||
hammerjs 2.0.8 MIT git://github.com/hammerjs/hammer.js.git
|
||||
hard-rejection 2.1.0 MIT https://github.com/sindresorhus/hard-rejection.git
|
||||
has 1.0.3 MIT git://github.com/tarruda/has.git
|
||||
has-flag 3.0.0 MIT https://github.com/sindresorhus/has-flag.git
|
||||
has-flag 4.0.0 MIT https://github.com/sindresorhus/has-flag.git
|
||||
html-escaper 2.0.2 MIT https://github.com/WebReflection/html-escaper.git
|
||||
html2canvas 1.4.1 MIT git@github.com:niklasvh/html2canvas.git
|
||||
ignore 5.2.4 MIT git@github.com:kaelzhang/node-ignore.git
|
||||
immutability-helper 3.1.1 MIT git+https://github.com/kolodny/immutability-helper.git
|
||||
import-fresh 3.3.0 MIT https://github.com/sindresorhus/import-fresh.git
|
||||
indent-string 5.0.0 MIT https://github.com/sindresorhus/indent-string.git
|
||||
insert-if 1.2.0 MIT git+https://github.com/chipto/insert-if.git
|
||||
ip-address 7.1.0 MIT git://github.com/beaugunderson/ip-address.git
|
||||
is-any-array 2.0.1 MIT https://github.com/cheminfo-js/is-any-array.git
|
||||
is-arrayish 0.2.1 MIT https://github.com/qix-/node-is-arrayish.git
|
||||
is-core-module 2.12.1 MIT git+https://github.com/inspect-js/is-core-module.git
|
||||
is-extglob 2.1.1 MIT https://github.com/jonschlinkert/is-extglob.git
|
||||
is-glob 4.0.3 MIT https://github.com/micromatch/is-glob.git
|
||||
is-in-browser 1.1.3 MIT git+https://github.com/tuxsudo/is-in-browser.git
|
||||
is-number 7.0.0 MIT https://github.com/jonschlinkert/is-number.git
|
||||
is-plain-obj 1.1.0 MIT https://github.com/sindresorhus/is-plain-obj.git
|
||||
is-relative 1.0.0 MIT https://github.com/jonschlinkert/is-relative.git
|
||||
is-unc-path 1.0.0 MIT https://github.com/jonschlinkert/is-unc-path.git
|
||||
javascript-natural-sort 0.7.1 MIT https://github.com/Bill4Time/javascript-natural-sort.git
|
||||
jquery 3.7.0 MIT https://github.com/jquery/jquery.git
|
||||
jquery-contextmenu 2.9.2 MIT git://github.com/swisnl/jQuery-contextMenu.git
|
||||
js-tokens 4.0.0 MIT https://github.com/lydell/js-tokens.git
|
||||
jsbn 1.1.0 MIT https://github.com/andyperlitch/jsbn.git
|
||||
jsesc 2.5.2 MIT https://github.com/mathiasbynens/jsesc.git
|
||||
json-bignumber 1.1.1 MIT git@github.com:wbuss/JSONBigNumber.git
|
||||
json-parse-even-better-errors 2.3.1 MIT https://github.com/npm/json-parse-even-better-errors
|
||||
json-schema-traverse 1.0.0 MIT git+https://github.com/epoberezkin/json-schema-traverse.git
|
||||
json-schema-traverse 0.4.1 MIT git+https://github.com/epoberezkin/json-schema-traverse.git
|
||||
json-source-map 0.6.1 MIT git+https://github.com/epoberezkin/json-source-map.git
|
||||
json5 2.2.3 MIT git+https://github.com/json5/json5.git
|
||||
jss 10.10.0 MIT https://github.com/cssinjs/jss.git
|
||||
jss-plugin-camel-case 10.10.0 MIT https://github.com/cssinjs/jss.git
|
||||
jss-plugin-default-unit 10.10.0 MIT https://github.com/cssinjs/jss.git
|
||||
jss-plugin-global 10.10.0 MIT https://github.com/cssinjs/jss.git
|
||||
jss-plugin-nested 10.10.0 MIT https://github.com/cssinjs/jss.git
|
||||
jss-plugin-props-sort 10.10.0 MIT https://github.com/cssinjs/jss.git
|
||||
jss-plugin-rule-value-function 10.10.0 MIT https://github.com/cssinjs/jss.git
|
||||
jss-plugin-vendor-prefixer 10.10.0 MIT https://github.com/cssinjs/jss.git
|
||||
karma-coverage 2.2.0 MIT git://github.com/karma-runner/karma-coverage.git
|
||||
kind-of 6.0.3 MIT https://github.com/jonschlinkert/kind-of.git
|
||||
lilconfig 2.1.0 MIT https://github.com/antonk52/lilconfig
|
||||
lines-and-columns 1.2.4 MIT https://github.com/eventualbuddha/lines-and-columns.git
|
||||
locate-path 6.0.0 MIT https://github.com/sindresorhus/locate-path.git
|
||||
lodash 4.17.21 MIT https://github.com/lodash/lodash.git
|
||||
lodash._basebind 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash._basecreate 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash._basecreatecallback 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash._basecreatewrapper 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash._createwrapper 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash._objecttypes 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash._renative 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash._setbinddata 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash._shimkeys 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash._slice 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash.bind 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash.foreach 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash.forown 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash.identity 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash.isfunction 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash.isobject 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash.keys 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash.memoize 4.1.2 MIT https://github.com/lodash/lodash.git
|
||||
lodash.noop 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash.support 2.3.0 MIT https://github.com/lodash/lodash-cli.git
|
||||
lodash.uniq 4.5.0 MIT https://github.com/lodash/lodash.git
|
||||
loose-envify 1.4.0 MIT git://github.com/zertosh/loose-envify.git
|
||||
make-dir 3.1.0 MIT https://github.com/sindresorhus/make-dir.git
|
||||
map-obj 4.3.0 MIT https://github.com/sindresorhus/map-obj.git
|
||||
map-obj 1.0.1 MIT https://github.com/sindresorhus/map-obj.git
|
||||
matches-selector 0.0.1 MIT https://github.com/ForbesLindesay/matches-selector.git
|
||||
memoize-one 5.2.1 MIT https://github.com/alexreardon/memoize-one.git
|
||||
memoize-one 6.0.0 MIT https://github.com/alexreardon/memoize-one.git
|
||||
meow 10.1.5 MIT https://github.com/sindresorhus/meow.git
|
||||
merge2 1.4.1 MIT git@github.com:teambition/merge2.git
|
||||
micromatch 4.0.5 MIT https://github.com/micromatch/micromatch.git
|
||||
min-indent 1.0.1 MIT https://github.com/thejameskyle/min-indent
|
||||
minimist-options 4.1.0 MIT https://github.com/vadimdemedes/minimist-options.git
|
||||
ml-array-max 1.2.4 MIT git+https://github.com/mljs/array.git
|
||||
ml-array-min 1.2.3 MIT git+https://github.com/mljs/array.git
|
||||
ml-array-rescale 1.3.7 MIT git+https://github.com/mljs/array.git
|
||||
ml-matrix 6.10.4 MIT https://github.com/mljs/matrix.git
|
||||
mobius1-selectr 2.4.13 MIT git+https://github.com/Mobius1/Selectr.git
|
||||
moment 2.29.4 MIT https://github.com/moment/moment.git
|
||||
moment-timezone 0.5.43 MIT https://github.com/moment/moment-timezone.git
|
||||
ms 2.1.2 MIT https://github.com/zeit/ms.git
|
||||
nanoid 3.3.6 MIT https://github.com/ai/nanoid.git
|
||||
nanopop 2.3.0 MIT https://github.com/Simonwep/nanopop.git
|
||||
node-releases 2.0.12 MIT https://github.com/chicoxyzzy/node-releases.git
|
||||
normalize-url 6.1.0 MIT https://github.com/sindresorhus/normalize-url.git
|
||||
notificar 1.0.1 MIT git+https://github.com/neeksandhu/notificar.git
|
||||
notistack 1.0.10 MIT git+https://github.com/iamhosseindhv/notistack.git
|
||||
object-assign 4.1.1 MIT https://github.com/sindresorhus/object-assign.git
|
||||
p-limit 3.1.0 MIT https://github.com/sindresorhus/p-limit.git
|
||||
p-locate 5.0.0 MIT https://github.com/sindresorhus/p-locate.git
|
||||
p-reduce 1.0.0 MIT https://github.com/sindresorhus/p-reduce.git
|
||||
p-series 1.1.0 MIT https://github.com/sindresorhus/p-series.git
|
||||
parent-module 1.0.1 MIT https://github.com/sindresorhus/parent-module.git
|
||||
parse-json 5.2.0 MIT https://github.com/sindresorhus/parse-json.git
|
||||
path-exists 4.0.0 MIT https://github.com/sindresorhus/path-exists.git
|
||||
path-fx 2.1.2 MIT git+https://github.com/NeekSandhu/path-fx.git
|
||||
path-parse 1.0.7 MIT https://github.com/jbgutierrez/path-parse.git
|
||||
path-type 4.0.0 MIT https://github.com/sindresorhus/path-type.git
|
||||
pathfinding 0.4.18 MIT git://github.com/qiao/PathFinding.js.git
|
||||
performance-now 2.1.0 MIT git://github.com/braveg1rl/performance-now.git
|
||||
picomatch 2.3.1 MIT https://github.com/micromatch/picomatch.git
|
||||
picomodal 3.0.0 MIT https://github.com/Nycto/PicoModal.git
|
||||
popper.js 1.16.1-lts MIT git+https://github.com/FezVrasta/popper.js.git
|
||||
popper.js 1.16.1 MIT git+https://github.com/FezVrasta/popper.js.git
|
||||
postcss 8.4.24 MIT https://github.com/postcss/postcss.git
|
||||
postcss-calc 8.2.4 MIT https://github.com/postcss/postcss-calc.git
|
||||
postcss-colormin 5.3.1 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-convert-values 5.1.3 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-discard-comments 5.1.2 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-discard-duplicates 5.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-discard-empty 5.1.1 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-discard-overridden 5.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-merge-longhand 5.1.7 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-merge-rules 5.1.4 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-minify-font-values 5.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-minify-gradients 5.1.1 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-minify-params 5.1.4 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-minify-selectors 5.2.1 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-charset 5.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-display-values 5.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-positions 5.1.1 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-repeat-style 5.1.1 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-string 5.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-timing-functions 5.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-unicode 5.1.1 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-url 5.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-whitespace 5.1.1 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-ordered-values 5.1.3 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-reduce-initial 5.1.2 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-reduce-transforms 5.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-selector-parser 6.0.13 MIT https://github.com/postcss/postcss-selector-parser.git
|
||||
postcss-svgo 5.1.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-unique-selectors 5.1.1 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-value-parser 4.2.0 MIT https://github.com/TrySound/postcss-value-parser.git
|
||||
prop-types 15.8.1 MIT https://github.com/facebook/prop-types.git
|
||||
punycode 2.3.0 MIT https://github.com/mathiasbynens/punycode.js.git
|
||||
queue-microtask 1.2.3 MIT git://github.com/feross/queue-microtask.git
|
||||
quick-lru 5.1.1 MIT https://github.com/sindresorhus/quick-lru.git
|
||||
raf 3.4.1 MIT git://github.com/chrisdickinson/raf.git
|
||||
rc-align 4.0.15 MIT git@github.com:react-component/align.git
|
||||
rc-dropdown 3.6.2 MIT git@github.com:react-component/dropdown.git
|
||||
rc-dropdown 4.0.1 MIT git@github.com:react-component/dropdown.git
|
||||
rc-menu 9.9.2 MIT git@github.com:react-component/menu.git
|
||||
rc-menu 9.6.4 MIT git@github.com:react-component/menu.git
|
||||
rc-motion 2.7.3 MIT git@github.com:react-component/motion.git
|
||||
rc-overflow 1.3.1 MIT git@github.com:react-component/overflow.git
|
||||
rc-resize-observer 1.3.1 MIT git@github.com:react-component/resize-observer.git
|
||||
rc-tabs 11.16.1 MIT git@github.com:react-component/tabs.git
|
||||
rc-trigger 5.3.4 MIT https://github.com/react-component/trigger.git
|
||||
rc-util 5.34.0 MIT git@github.com:react-component/util.git
|
||||
re-resizable 6.9.6 MIT https://github.com/bokuweb/react-resizable-box.git
|
||||
react 17.0.2 MIT https://github.com/facebook/react.git
|
||||
react-aspen 1.2.0 MIT https://github.com/neeksandhu/react-aspen.git
|
||||
react-checkbox-tree 1.8.0 MIT https://github.com/jakezatecky/react-checkbox-tree
|
||||
react-data-grid 7.0.0-beta.14 MIT https://github.com/adazzle/react-data-grid.git
|
||||
react-dnd 16.0.1 MIT https://github.com/react-dnd/react-dnd.git
|
||||
react-dnd-html5-backend 16.0.1 MIT https://github.com/react-dnd/react-dnd.git
|
||||
react-dom 17.0.2 MIT https://github.com/facebook/react.git
|
||||
react-draggable 4.4.5 MIT https://github.com/react-grid-layout/react-draggable.git
|
||||
react-dropzone 14.2.3 MIT https://github.com/react-dropzone/react-dropzone.git
|
||||
react-is 17.0.2 MIT https://github.com/facebook/react.git
|
||||
react-is 16.13.1 MIT https://github.com/facebook/react.git
|
||||
react-resize-detector 9.1.0 MIT git+https://github.com/maslianok/react-resize-detector.git
|
||||
react-rnd 10.4.1 MIT https://github.com/bokuweb/react-rnd.git
|
||||
react-router 6.13.0 MIT https://github.com/remix-run/react-router
|
||||
react-router-dom 6.13.0 MIT https://github.com/remix-run/react-router
|
||||
react-select 5.7.3 MIT https://github.com/JedWatson/react-select/tree/master/packages/react-select
|
||||
react-table 7.8.0 MIT https://github.com/tannerlinsley/react-table
|
||||
react-transition-state 1.1.5 MIT https://github.com/szhsin/react-transition-state.git
|
||||
react-virtualized-auto-sizer 1.0.20 MIT https://github.com/bvaughn/react-virtualized-auto-sizer.git
|
||||
react-window 1.8.9 MIT https://github.com/bvaughn/react-window.git
|
||||
read-pkg 6.0.0 MIT https://github.com/sindresorhus/read-pkg.git
|
||||
read-pkg-up 8.0.0 MIT https://github.com/sindresorhus/read-pkg-up.git
|
||||
redent 4.0.0 MIT https://github.com/sindresorhus/redent.git
|
||||
redux 4.2.1 MIT https://github.com/reduxjs/redux.git
|
||||
regenerator-runtime 0.13.11 MIT https://github.com/facebook/regenerator/tree/main/packages/runtime
|
||||
require-from-string 2.0.2 MIT https://github.com/floatdrop/require-from-string.git
|
||||
resize-observer-polyfill 1.5.1 MIT https://github.com/que-etc/resize-observer-polyfill.git
|
||||
resolve 1.22.2 MIT git://github.com/browserify/resolve.git
|
||||
resolve-from 4.0.0 MIT https://github.com/sindresorhus/resolve-from.git
|
||||
reusify 1.0.4 MIT git+https://github.com/mcollina/reusify.git
|
||||
rifm 0.7.0 MIT https://github.com/istarkov/rifm.git
|
||||
run-parallel 1.2.0 MIT git://github.com/feross/run-parallel.git
|
||||
scheduler 0.20.2 MIT https://github.com/facebook/react.git
|
||||
shallowequal 1.1.0 MIT https://github.com/dashed/shallowequal.git
|
||||
slash 4.0.0 MIT https://github.com/sindresorhus/slash.git
|
||||
snapsvg-cjs 0.0.6 MIT git+https://github.com/geelen/Snap.svg-cjs.git
|
||||
socket.io-client 4.7.0 MIT https://github.com/socketio/socket.io-client.git
|
||||
socket.io-parser 4.2.4 MIT https://github.com/socketio/socket.io-parser.git
|
||||
spdx-expression-parse 3.0.1 MIT https://github.com/jslicense/spdx-expression-parse.js.git
|
||||
split.js 1.6.5 MIT https://github.com/nathancahill/split
|
||||
stable 0.1.8 MIT https://github.com/Two-Screen/stable.git
|
||||
strip-indent 4.0.0 MIT https://github.com/sindresorhus/strip-indent.git
|
||||
styled-components 5.3.11 MIT git+https://github.com/styled-components/styled-components.git
|
||||
stylehacks 5.1.1 MIT https://github.com/cssnano/cssnano.git
|
||||
stylis 4.2.0 MIT https://github.com/thysultan/stylis.js
|
||||
supports-color 5.5.0 MIT https://github.com/chalk/supports-color.git
|
||||
supports-color 7.2.0 MIT https://github.com/chalk/supports-color.git
|
||||
supports-preserve-symlinks-flag 1.0.0 MIT git+https://github.com/inspect-js/node-supports-preserve-symlinks-flag.git
|
||||
svgo 2.8.0 MIT git://github.com/svg/svgo.git
|
||||
tempusdominus-core 5.19.3 MIT https://github.com/tempusdominus/core.git
|
||||
text-segmentation 1.0.3 MIT git+ssh://git@github.com/niklasvh/text-segmentation.git
|
||||
tiny-warning 1.0.3 MIT https://github.com/alexreardon/tiny-warning.git
|
||||
to-fast-properties 2.0.0 MIT https://github.com/sindresorhus/to-fast-properties.git
|
||||
to-regex-range 5.0.1 MIT https://github.com/micromatch/to-regex-range.git
|
||||
trim-newlines 4.1.1 MIT https://github.com/sindresorhus/trim-newlines.git
|
||||
unc-path-regex 0.1.2 MIT https://github.com/regexhq/unc-path-regex.git
|
||||
update-browserslist-db 1.0.11 MIT https://github.com/browserslist/update-db.git
|
||||
uplot 1.6.24 MIT git+https://github.com/leeoniya/uPlot.git
|
||||
uplot-react 1.1.4 MIT https://github.com/skalinichev/uplot-wrappers.git
|
||||
use-isomorphic-layout-effect 1.1.2 MIT git+https://github.com/Andarist/use-isomorphic-layout-effect.git
|
||||
util-deprecate 1.0.2 MIT git://github.com/TooTallNate/util-deprecate.git
|
||||
utrie 1.0.2 MIT git+ssh://git@github.com/niklasvh/utrie.git
|
||||
valid-filename 2.0.1 MIT https://github.com/sindresorhus/valid-filename.git
|
||||
wkx 0.5.0 MIT http://github.com/cschwarz/wkx.git
|
||||
ws 8.11.0 MIT https://github.com/websockets/ws.git
|
||||
xmlhttprequest-ssl 2.0.0 MIT git://github.com/mjwwit/node-XMLHttpRequest.git
|
||||
xterm 4.19.0 MIT https://github.com/xtermjs/xterm.js
|
||||
xterm-addon-fit 0.5.0 MIT https://github.com/xtermjs/xterm.js
|
||||
xterm-addon-search 0.8.2 MIT https://github.com/xtermjs/xterm.js
|
||||
xterm-addon-web-links 0.4.0 MIT https://github.com/xtermjs/xterm.js
|
||||
yocto-queue 0.1.0 MIT https://github.com/sindresorhus/yocto-queue.git
|
||||
@fortawesome/fontawesome-free 5.15.4 (CC-BY-4.0 AND OFL-1.1 AND MIT) https://github.com/FortAwesome/Font-Awesome
|
||||
@react-leaflet/core 1.1.1 Hippocratic-2.1 https://github.com/PaulLeCam/react-leaflet.git
|
||||
react-leaflet 3.2.5 Hippocratic-2.1 https://github.com/PaulLeCam/react-leaflet.git
|
||||
@sphinxxxx/color-conversion 2.2.2 ISC git+https://github.com/Sphinxxxx/color-conversion.git
|
||||
@trysound/sax 0.2.0 ISC git://github.com/svg/sax.git
|
||||
boolbase 1.0.0 ISC https://github.com/fb55/boolbase
|
||||
css-color-keywords 1.0.0 ISC https://github.com/sonicdoe/css-color-keywords.git
|
||||
css-declaration-sorter 6.4.0 ISC https://github.com/Siilwyn/css-declaration-sorter.git
|
||||
electron-to-chromium 1.4.437 ISC https://github.com/kilian/electron-to-chromium/
|
||||
fastq 1.15.0 ISC git+https://github.com/mcollina/fastq.git
|
||||
glob-parent 5.1.2 ISC https://github.com/gulpjs/glob-parent.git
|
||||
hosted-git-info 4.1.0 ISC git+https://github.com/npm/hosted-git-info.git
|
||||
jsonrepair 3.2.0 ISC https://github.com/josdejong/jsonrepair.git
|
||||
lru-cache 6.0.0 ISC git://github.com/isaacs/node-lru-cache.git
|
||||
lru-cache 5.1.1 ISC git://github.com/isaacs/node-lru-cache.git
|
||||
minimatch 3.1.2 ISC git://github.com/isaacs/minimatch.git
|
||||
picocolors 1.0.0 ISC https://github.com/alexeyraspopov/picocolors.git
|
||||
react-timer-hook 3.0.6 ISC git+https://github.com/amrlabib/react-timer-hook.git
|
||||
semver 6.3.0 ISC https://github.com/npm/node-semver
|
||||
semver 7.5.2 ISC https://github.com/npm/node-semver.git
|
||||
vanilla-picker 2.12.1 ISC https://github.com/Sphinxxxx/vanilla-picker.git
|
||||
yallist 4.0.0 ISC git+https://github.com/isaacs/yallist.git
|
||||
yallist 3.1.1 ISC git+https://github.com/isaacs/yallist.git
|
||||
yaml 1.10.2 ISC https://github.com/eemeli/yaml.git
|
||||
yargs-parser 20.2.9 ISC https://github.com/yargs/yargs-parser.git
|
||||
ace-builds 1.23.0 BSD-3-Clause https://github.com/ajaxorg/ace-builds.git
|
||||
hoist-non-react-statics 3.3.2 BSD-3-Clause git://github.com/mridgway/hoist-non-react-statics.git
|
||||
hyphenate-style-name 1.0.4 BSD-3-Clause git+ssh://git@github.com/rexxars/hyphenate-style-name.git
|
||||
istanbul-lib-coverage 3.2.0 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
|
||||
istanbul-lib-instrument 5.2.1 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
|
||||
istanbul-lib-report 3.0.0 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
|
||||
istanbul-lib-source-maps 4.0.1 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
|
||||
istanbul-reports 3.1.5 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
|
||||
react-transition-group 4.4.5 BSD-3-Clause https://github.com/reactjs/react-transition-group.git
|
||||
source-map 0.6.1 BSD-3-Clause http://github.com/mozilla/source-map.git
|
||||
source-map 0.5.7 BSD-3-Clause http://github.com/mozilla/source-map.git
|
||||
source-map-js 1.0.2 BSD-3-Clause https://github.com/7rulnik/source-map-js.git
|
||||
sprintf-js 1.1.2 BSD-3-Clause https://github.com/alexei/sprintf.js.git
|
||||
caniuse-lite 1.0.30001506 CC-BY-4.0 https://github.com/browserslist/caniuse-lite.git
|
||||
css-select 4.3.0 BSD-2-Clause git://github.com/fb55/css-select.git
|
||||
css-what 6.1.0 BSD-2-Clause https://github.com/fb55/css-what
|
||||
domelementtype 2.3.0 BSD-2-Clause git://github.com/fb55/domelementtype.git
|
||||
domhandler 4.3.1 BSD-2-Clause git://github.com/fb55/domhandler.git
|
||||
domutils 2.8.0 BSD-2-Clause git://github.com/fb55/domutils.git
|
||||
entities 2.2.0 BSD-2-Clause git://github.com/fb55/entities.git
|
||||
leaflet 1.9.4 BSD-2-Clause git://github.com/Leaflet/Leaflet.git
|
||||
normalize-package-data 3.0.3 BSD-2-Clause git://github.com/npm/normalize-package-data.git
|
||||
nth-check 2.1.1 BSD-2-Clause https://github.com/fb55/nth-check
|
||||
uri-js 4.4.1 BSD-2-Clause http://github.com/garycourt/uri-js
|
||||
FileSaver 0.10.0 UNKNOWN Unknown
|
||||
heap 0.2.5 UNKNOWN git://github.com/qiao/heap.js.git
|
||||
mdn-data 2.0.14 CC0-1.0 https://github.com/mdn/data.git
|
||||
spdx-license-ids 3.0.13 CC0-1.0 https://github.com/jslicense/spdx-license-ids.git
|
||||
mousetrap 1.6.5 Apache-2.0 WITH LLVM-exception git://github.com/ccampbell/mousetrap.git
|
||||
pako 1.0.11 (MIT AND Zlib) https://github.com/nodeca/pako.git
|
||||
spdx-exceptions 2.3.0 CC-BY-3.0 https://github.com/kemitchell/spdx-exceptions.json.git
|
||||
tslib 2.5.3 0BSD https://github.com/Microsoft/tslib.git
|
||||
tslib 2.3.1 0BSD https://github.com/Microsoft/tslib.git
|
||||
type-fest 1.4.0 (MIT OR CC0-1.0) https://github.com/sindresorhus/type-fest.git
|
||||
webcabin-docker 2.2.5 MIT* Unknown
|
||||
|
||||
495 dependencies listed.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2024, The pgAdmin Development Team
|
||||
# Copyright (C) 2013 - 2026, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
#########################################################################
|
||||
@@ -31,49 +31,38 @@ RUN apk add --no-cache \
|
||||
yarn \
|
||||
zlib-dev
|
||||
|
||||
# Create the /pgadmin4 directory and copy the source into it. Explicitly
|
||||
# remove the node_modules directory as we'll recreate a clean version, as well
|
||||
# as various other files we don't want
|
||||
# Create the /pgadmin4 directory and copy the source into it
|
||||
COPY web /pgadmin4/web
|
||||
RUN rm -rf /pgadmin4/web/*.log \
|
||||
/pgadmin4/web/config_*.py \
|
||||
/pgadmin4/web/node_modules \
|
||||
/pgadmin4/web/regression \
|
||||
`find /pgadmin4/web -type d -name tests` \
|
||||
`find /pgadmin4/web -type f -name .DS_Store`
|
||||
|
||||
WORKDIR /pgadmin4/web
|
||||
|
||||
# Build the JS vendor code in the app-builder, and then remove the vendor source.
|
||||
RUN export CPPFLAGS="-DPNG_ARM_NEON_OPT=0" && \
|
||||
RUN --mount=type=bind,source=.git,target=/pgadmin4/.git \
|
||||
--mount=type=tmpfs,target=node_modules \
|
||||
--mount=type=tmpfs,target=pgadmin/static/js/generated/.cache \
|
||||
export CPPFLAGS="-DPNG_ARM_NEON_OPT=0" && \
|
||||
npm install -g corepack && \
|
||||
corepack enable && \
|
||||
yarn set version berry && \
|
||||
yarn set version 3 && \
|
||||
yarn set version 4 && \
|
||||
yarn install && \
|
||||
yarn run bundle && \
|
||||
rm -rf node_modules \
|
||||
yarn.lock \
|
||||
rm -rf yarn.lock \
|
||||
package.json \
|
||||
.[^.]* \
|
||||
babel.cfg \
|
||||
webpack.* \
|
||||
jest.config.js \
|
||||
babel.* \
|
||||
./pgadmin/static/js/generated/.cache
|
||||
babel.*
|
||||
|
||||
#########################################################################
|
||||
# Next, create the base environment for Python
|
||||
#########################################################################
|
||||
|
||||
FROM alpine:latest AS env-builder
|
||||
FROM python:3-alpine AS env-builder
|
||||
|
||||
# Install dependencies
|
||||
COPY requirements.txt /
|
||||
RUN apk add --no-cache \
|
||||
make \
|
||||
python3 \
|
||||
py3-pip && \
|
||||
make && \
|
||||
apk add --no-cache --virtual build-deps \
|
||||
build-base \
|
||||
openssl-dev \
|
||||
@@ -84,9 +73,9 @@ RUN apk add --no-cache \
|
||||
cargo \
|
||||
zlib-dev \
|
||||
libjpeg-turbo-dev \
|
||||
libpng-dev \
|
||||
python3-dev && \
|
||||
python3 -m venv --system-site-packages --without-pip /venv && \
|
||||
libpng-dev
|
||||
COPY requirements.txt /
|
||||
RUN python3 -m venv --system-site-packages --without-pip /venv && \
|
||||
/venv/bin/python3 -m pip install --no-cache-dir -r requirements.txt && \
|
||||
apk del --no-cache build-deps
|
||||
|
||||
@@ -118,20 +107,16 @@ RUN rm -rf /pgadmin4/docs/en_US/_build/html/_static/*.png
|
||||
# Create additional builders to get all of the PostgreSQL utilities
|
||||
#########################################################################
|
||||
|
||||
FROM postgres:12-alpine AS pg12-builder
|
||||
FROM postgres:13-alpine AS pg13-builder
|
||||
FROM postgres:14-alpine AS pg14-builder
|
||||
FROM postgres:15-alpine AS pg15-builder
|
||||
FROM postgres:16-alpine AS pg16-builder
|
||||
FROM postgres:17-alpine AS pg17-builder
|
||||
FROM postgres:18-alpine AS pg18-builder
|
||||
|
||||
FROM alpine:latest AS tool-builder
|
||||
|
||||
# Copy the PG binaries
|
||||
COPY --from=pg12-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-12/
|
||||
COPY --from=pg12-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-12/
|
||||
COPY --from=pg12-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-12/
|
||||
COPY --from=pg12-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-12/
|
||||
|
||||
COPY --from=pg13-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-13/
|
||||
COPY --from=pg13-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-13/
|
||||
COPY --from=pg13-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-13/
|
||||
@@ -152,25 +137,49 @@ COPY --from=pg16-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-16/
|
||||
COPY --from=pg16-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-16/
|
||||
COPY --from=pg16-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-16/
|
||||
|
||||
COPY --from=pg17-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-17/
|
||||
COPY --from=pg17-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-17/
|
||||
COPY --from=pg17-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-17/
|
||||
COPY --from=pg17-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-17/
|
||||
|
||||
COPY --from=pg18-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-18/
|
||||
COPY --from=pg18-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-18/
|
||||
COPY --from=pg18-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-18/
|
||||
COPY --from=pg18-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-18/
|
||||
|
||||
#########################################################################
|
||||
# Assemble everything into the final container.
|
||||
#########################################################################
|
||||
|
||||
FROM alpine:latest
|
||||
FROM python:3-alpine
|
||||
|
||||
# Install runtime dependencies
|
||||
RUN apk update && apk upgrade && \
|
||||
apk add \
|
||||
bash \
|
||||
postfix \
|
||||
krb5-libs \
|
||||
libcurl \
|
||||
libjpeg-turbo \
|
||||
shadow \
|
||||
sudo \
|
||||
tzdata \
|
||||
libedit \
|
||||
libldap \
|
||||
libcap \
|
||||
su-exec && \
|
||||
rm -rf /var/cache/apk/*
|
||||
|
||||
# Copy in the Python packages
|
||||
COPY --from=env-builder /venv /venv
|
||||
|
||||
# Copy in the tools
|
||||
COPY --from=tool-builder /usr/local/pgsql /usr/local/
|
||||
COPY --from=pg16-builder /usr/local/lib/libpq.so.5.16 /usr/lib/
|
||||
COPY --from=pg16-builder /usr/lib/libzstd.so.1.5.6 /usr/lib/
|
||||
COPY --from=pg16-builder /usr/lib/liblz4.so.1.9.4 /usr/lib/
|
||||
COPY --from=pg18-builder /usr/local/lib/libpq.so.5.18 /usr/local/lib/libpq-oauth-18.so /usr/lib/liblz4.so.1.10.0 /usr/lib/
|
||||
|
||||
RUN ln -s libpq.so.5.16 /usr/lib/libpq.so.5 && \
|
||||
ln -s libpq.so.5.16 /usr/lib/libpq.so && \
|
||||
ln -s libzstd.so.1.5.6 /usr/lib/libzstd.so.1 && \
|
||||
ln -s liblz4.so.1.9.4 /usr/lib/liblz4.so.1
|
||||
RUN ln -s libpq.so.5.18 /usr/lib/libpq.so.5 && \
|
||||
ln -s libpq.so.5.18 /usr/lib/libpq.so && \
|
||||
ln -s liblz4.so.1.10.0 /usr/lib/liblz4.so.1
|
||||
|
||||
WORKDIR /pgadmin4
|
||||
ENV PYTHONPATH=/pgadmin4
|
||||
@@ -178,42 +187,31 @@ ENV PYTHONPATH=/pgadmin4
|
||||
# Copy in the code and docs
|
||||
COPY --from=app-builder /pgadmin4/web /pgadmin4
|
||||
COPY --from=docs-builder /pgadmin4/docs/en_US/_build/html/ /pgadmin4/docs
|
||||
COPY pkg/docker/run_pgadmin.py /pgadmin4
|
||||
COPY pkg/docker/gunicorn_config.py /pgadmin4
|
||||
COPY pkg/docker/run_pgadmin.py pkg/docker/gunicorn_config.py /pgadmin4/
|
||||
COPY pkg/docker/entrypoint.sh /entrypoint.sh
|
||||
|
||||
# License files
|
||||
COPY LICENSE /pgadmin4/LICENSE
|
||||
COPY DEPENDENCIES /pgadmin4/DEPENDENCIES
|
||||
|
||||
# Install runtime dependencies and configure everything in one RUN step
|
||||
RUN apk add --no-cache \
|
||||
python3 \
|
||||
py3-pip \
|
||||
postfix \
|
||||
krb5-libs \
|
||||
libjpeg-turbo \
|
||||
shadow \
|
||||
sudo \
|
||||
tzdata \
|
||||
libedit \
|
||||
libldap \
|
||||
libcap && \
|
||||
/venv/bin/python3 -m pip install --no-cache-dir gunicorn==22.0.0 && \
|
||||
# Configure everything in one RUN step
|
||||
RUN /venv/bin/python3 -m pip install --no-cache-dir gunicorn==23.0.0 && \
|
||||
find / -type d -name '__pycache__' -exec rm -rf {} + && \
|
||||
useradd -r -u 5050 -g root -s /sbin/nologin pgadmin && \
|
||||
mkdir -p /run/pgadmin /var/lib/pgadmin && \
|
||||
chown pgadmin:root /run/pgadmin /var/lib/pgadmin && \
|
||||
chmod g=u /var/lib/pgadmin && \
|
||||
chmod g=u /run/pgadmin /var/lib/pgadmin && \
|
||||
touch /pgadmin4/config_distro.py && \
|
||||
chown pgadmin:root /pgadmin4/config_distro.py && \
|
||||
chmod g=u /pgadmin4/config_distro.py && \
|
||||
chmod g=u /etc/passwd && \
|
||||
setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/python3.12 && \
|
||||
PYBIN="$(ls /usr/local/bin/python3.[0-9][0-9] 2>/dev/null | head -n1)" && \
|
||||
cp "$PYBIN" /usr/local/bin/python3-cap && \
|
||||
setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/python3-cap && \
|
||||
ln -s /usr/local/bin/python3-cap /venv/bin/python3-cap && \
|
||||
echo "pgadmin ALL = NOPASSWD: /usr/sbin/postfix start" > /etc/sudoers.d/postfix && \
|
||||
echo "pgadminr ALL = NOPASSWD: /usr/sbin/postfix start" >> /etc/sudoers.d/postfix
|
||||
|
||||
USER pgadmin
|
||||
USER 5050
|
||||
|
||||
# Finish up
|
||||
VOLUME /var/lib/pgadmin
|
||||
|
||||
@@ -4,7 +4,7 @@ pgAdmin 4
|
||||
This software is released under the PostgreSQL licence.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2013 - 2024, The pgAdmin Development Team
|
||||
Copyright (C) 2013 - 2026, The pgAdmin Development Team
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose, without fee, and without a written agreement is
|
||||
|
||||
@@ -28,7 +28,7 @@ CALL :CREATE_PYTHON_ENV || EXIT /B 1
|
||||
CALL :CREATE_RUNTIME_ENV || EXIT /B 1
|
||||
CALL :GENERATE_SBOM || EXIT /B 1
|
||||
CALL :CREATE_INSTALLER || EXIT /B 1
|
||||
CALL :SIGN_INSTALLER || EXIT /B 1
|
||||
CALL :VERIFY_SIGNATURE || EXIT /B 1
|
||||
|
||||
EXIT /B %ERRORLEVEL%
|
||||
REM Main build sequence Ends
|
||||
@@ -52,15 +52,14 @@ REM Main build sequence Ends
|
||||
|
||||
:SET_ENVIRONMENT
|
||||
ECHO Configuring the environment...
|
||||
IF "%PGADMIN_PYTHON_DIR%" == "" SET "PGADMIN_PYTHON_DIR=C:\Python38"
|
||||
IF "%PGADMIN_PYTHON_DIR%" == "" SET "PGADMIN_PYTHON_DIR=C:\Python313"
|
||||
IF "%PGADMIN_KRB5_DIR%" == "" SET "PGADMIN_KRB5_DIR=C:\Program Files\MIT\Kerberos"
|
||||
IF "%PGADMIN_POSTGRES_DIR%" == "" SET "PGADMIN_POSTGRES_DIR=C:\Program Files (x86)\PostgreSQL\12"
|
||||
IF "%PGADMIN_POSTGRES_DIR%" == "" SET "PGADMIN_POSTGRES_DIR=C:\Program Files\PostgreSQL\17"
|
||||
IF "%PGADMIN_INNOTOOL_DIR%" == "" SET "PGADMIN_INNOTOOL_DIR=C:\Program Files (x86)\Inno Setup 6"
|
||||
IF "%PGADMIN_VCREDIST_DIR%" == "" SET "PGADMIN_VCREDIST_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Redist\MSVC\14.16.27012"
|
||||
IF "%PGADMIN_SIGNTOOL_DIR%" == "" SET "PGADMIN_SIGNTOOL_DIR=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64"
|
||||
|
||||
REM Set REDIST_NAME (the filename)
|
||||
set "VCREDIST_FILE=vcredist_x64.exe"
|
||||
IF "%PGADMIN_VCREDIST_DIR%" == "" SET "PGADMIN_VCREDIST_DIR=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.40.33807"
|
||||
IF "%PGADMIN_VCREDIST_FILE%" == "" SET "PGADMIN_VCREDIST_FILE=vc_redist.x64.exe"
|
||||
IF "%PGADMIN_SIGNTOOL_DIR%" == "" SET "PGADMIN_SIGNTOOL_DIR=C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64"
|
||||
IF "%PGADMIN_WINDOWS_CSC%" == "" SET "PGADMIN_WINDOWS_CSC="
|
||||
|
||||
REM Set additional variables we need
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\version.py') DO SET APP_MAJOR=%%a
|
||||
@@ -98,9 +97,14 @@ REM Main build sequence Ends
|
||||
ECHO PostgreSQL directory: %PGADMIN_POSTGRES_DIR%
|
||||
ECHO.
|
||||
ECHO VC++ redist directory: %PGADMIN_VCREDIST_DIR%
|
||||
ECHO VC++ redist file: %VCREDIST_FILE%
|
||||
ECHO VC++ redist file: %PGADMIN_VCREDIST_FILE%
|
||||
ECHO InnoTool directory: %PGADMIN_INNOTOOL_DIR%
|
||||
ECHO signtool directory: %PGADMIN_SIGNTOOL_DIR%
|
||||
IF "%PGADMIN_WINDOWS_CSC%" == "" (
|
||||
ECHO Code signing certificate: [NONE - Signing disabled]
|
||||
) ELSE (
|
||||
ECHO Code signing certificate: %PGADMIN_WINDOWS_CSC%
|
||||
)
|
||||
ECHO.
|
||||
ECHO App version: %APP_VERSION%
|
||||
ECHO App version suffix: %APP_VERSION_SUFFIX%
|
||||
@@ -217,6 +221,8 @@ REM Main build sequence Ends
|
||||
|
||||
ECHO Installing javascript dependencies...
|
||||
CD "%BUILDROOT%\web"
|
||||
CALL yarn set version berry || EXIT /B 1
|
||||
CALL yarn set version 4 || EXIT /B 1
|
||||
CALL yarn install || EXIT /B 1
|
||||
CALL npm rebuild || EXIT /B 1
|
||||
|
||||
@@ -231,13 +237,14 @@ REM Main build sequence Ends
|
||||
RD /Q /S "%BUILDROOT%\web\regression" 1> nul 2>&1
|
||||
ECHO Removing tools...
|
||||
RD /Q /S "%BUILDROOT%\web\tools" 1> nul 2>&1
|
||||
ECHO Removing yarn cache...
|
||||
RD /Q /S "%BUILDROOT%\web\.yarn" 1> nul 2>&1
|
||||
ECHO Removing any existing configurations...
|
||||
DEL /q "%BUILDROOT%\web\pgadmin4.db" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\config_local.py" 1> nul 2>&1
|
||||
|
||||
ECHO Staging license files...
|
||||
COPY "%WD%\LICENSE" "%BUILDROOT%\" > nul || EXIT /B 1
|
||||
COPY "%WD%\DEPENDENCIES" "%BUILDROOT%\" > nul || EXIT /B 1
|
||||
|
||||
ECHO Creating config_distro.py
|
||||
ECHO SERVER_MODE = False > "%BUILDROOT%\web\config_distro.py"
|
||||
@@ -260,65 +267,73 @@ REM Main build sequence Ends
|
||||
RD /Q /S "%BUILDROOT%\docs\en_US\html\_sources" 1> nul 2>&1
|
||||
|
||||
ECHO Staging runtime components...
|
||||
XCOPY /S /I /E /H /Y "%WD%\runtime\assets" "%BUILDROOT%\runtime\assets" > nul || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%WD%\runtime\src" "%BUILDROOT%\runtime\src" > nul || EXIT /B 1
|
||||
MKDIR "%BUILDROOT%\runtime\resources\app"
|
||||
XCOPY /S /I /E /H /Y "%WD%\runtime\assets" "%BUILDROOT%\runtime\resources\app\assets" > nul || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%WD%\runtime\src" "%BUILDROOT%\runtime\resources\app\src" > nul || EXIT /B 1
|
||||
|
||||
COPY "%WD%\runtime\package.json" "%BUILDROOT%\runtime\" > nul || EXIT /B 1
|
||||
CD "%BUILDROOT%\runtime\"
|
||||
CALL yarn install --production=true || EXIT /B 1
|
||||
COPY "%WD%\runtime\package.json" "%BUILDROOT%\runtime\resources\app\" > nul || EXIT /B 1
|
||||
COPY "%WD%\runtime\.yarnrc.yml" "%BUILDROOT%\runtime\resources\app\" > nul || EXIT /B 1
|
||||
|
||||
ECHO Downloading NWjs to %TMPDIR%...
|
||||
REM Get a fresh copy of nwjs.
|
||||
REM NOTE: The nw download servers seem to be very unreliable, so at the moment we're using wget which retries
|
||||
CD "%BUILDROOT%\runtime\resources\app\"
|
||||
|
||||
REM YARN
|
||||
REM CALL yarn --cwd "%TMPDIR%" add nw || EXIT /B
|
||||
REM YARN END
|
||||
CALL yarn set version berry || EXIT /B 1
|
||||
CALL yarn set version 4 || EXIT /B 1
|
||||
CALL yarn workspaces focus --production || EXIT /B 1
|
||||
|
||||
ECHO Removing yarn cache...
|
||||
RD /Q /S "%BUILDROOT%\runtime\resources\app\.yarn" 1> nul 2>&1
|
||||
|
||||
ECHO Downloading Electron to %TMPDIR%...
|
||||
REM Get a fresh copy of electron.
|
||||
|
||||
REM WGET
|
||||
REM Comment out the below line as the latest version having some
|
||||
REM problem https://github.com/nwjs/nw.js/issues/7964, so for the time being
|
||||
REM hardcoded the version to 0.77.0
|
||||
REM FOR /f "tokens=2 delims='" %%i IN ('yarn info nw ^| findstr "latest: "') DO SET "NW_VERSION=%%i"
|
||||
REM :GET_NW
|
||||
REM wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip"
|
||||
REM IF %ERRORLEVEL% NEQ 0 GOTO GET_NW
|
||||
FOR /f "tokens=*" %%i IN ('npm info electron version') DO SET "ELECTRON_VERSION=%%i"
|
||||
|
||||
SET "NW_VERSION=0.77.0"
|
||||
wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip"
|
||||
:GET_NW
|
||||
wget https://github.com/electron/electron/releases/download/v%ELECTRON_VERSION%/electron-v%ELECTRON_VERSION%-win32-x64.zip -O "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64.zip"
|
||||
IF %ERRORLEVEL% NEQ 0 GOTO GET_NW
|
||||
|
||||
tar -C "%TMPDIR%" -xvf "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip" || EXIT /B 1
|
||||
MKDIR "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64" || EXIT /B 1
|
||||
tar -C "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64" -xvf "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64.zip" || EXIT /B 1
|
||||
REM WGET END
|
||||
|
||||
REM YARN
|
||||
REM XCOPY /S /I /E /H /Y "%TMPDIR%\node_modules\nw\nwjs\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
REM YARN END
|
||||
REM XCOPY
|
||||
XCOPY /S /I /E /H /Y "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
REM XCOPY END
|
||||
|
||||
REM WGET
|
||||
XCOPY /S /I /E /H /Y "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
REM WGET END
|
||||
MOVE "%BUILDROOT%\runtime\electron.exe" "%BUILDROOT%\runtime\pgAdmin4.exe"
|
||||
|
||||
MOVE "%BUILDROOT%\runtime\nw.exe" "%BUILDROOT%\runtime\pgAdmin4.exe"
|
||||
ECHO Attempting to sign the pgAdmin4.exe...
|
||||
CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" sign /tr http://timestamp.digicert.com "%BUILDROOT%\runtime\pgAdmin4.exe"
|
||||
IF %ERRORLEVEL% NEQ 0 (
|
||||
ECHO.
|
||||
ECHO ************************************************************
|
||||
ECHO * Failed to sign the pgAdmin4.exe
|
||||
ECHO ************************************************************
|
||||
PAUSE
|
||||
ECHO Downloading rcedit.exe...
|
||||
wget https://github.com/electron/rcedit/releases/download/v2.0.0/rcedit-x64.exe -O "%TMPDIR%\rcedit-x64.exe"
|
||||
|
||||
ECHO Replacing executable icon, description, version...
|
||||
%TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-icon "%WD%\pkg\win32\Resources\pgAdmin4.ico"
|
||||
%TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-version-string "FileDescription" "%APP_NAME%"
|
||||
%TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-version-string "ProductName" "%APP_NAME%"
|
||||
%TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-product-version "%APP_VERSION%""
|
||||
|
||||
IF NOT "%PGADMIN_WINDOWS_CSC%" == "" (
|
||||
ECHO Attempting to sign the pgAdmin4.exe...
|
||||
CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" sign /sm /n "%PGADMIN_WINDOWS_CSC%" /tr http://timestamp.digicert.com /td sha256 /fd sha1 /v "%BUILDROOT%\runtime\pgAdmin4.exe"
|
||||
IF %ERRORLEVEL% NEQ 0 (
|
||||
ECHO.
|
||||
ECHO ************************************************************
|
||||
ECHO * Failed to sign the pgAdmin4.exe
|
||||
ECHO ************************************************************
|
||||
PAUSE
|
||||
)
|
||||
) ELSE (
|
||||
ECHO Skipping code signing ^(PGADMIN_WINDOWS_CSC is not set^)...
|
||||
)
|
||||
|
||||
ECHO Replacing executable icon...
|
||||
CALL yarn --cwd "%TMPDIR%" add winresourcer || EXIT /B
|
||||
"%TMPDIR%\node_modules\winresourcer\bin\Resourcer.exe" -op:upd -src:"%BUILDROOT%\runtime\pgAdmin4.exe" -type:Icongroup -name:IDR_MAINFRAME -file:"%WD%\pkg\win32\Resources\pgAdmin4.ico"
|
||||
|
||||
ECHO Staging PostgreSQL components...
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libpq.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libcrypto-*-x64.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libssl-*-x64.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\libintl-*.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\libintl-*.dll" "%BUILDROOT%\runtime" > nul
|
||||
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\libiconv-*.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\libiconv-*.dll" "%BUILDROOT%\runtime" > nul
|
||||
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\liblz4.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\liblz4.dll" "%BUILDROOT%\runtime" > nul
|
||||
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\libzstd.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\libzstd.dll" "%BUILDROOT%\runtime" > nul
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\zlib1.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_dump.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_dumpall.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1L%
|
||||
@@ -327,7 +342,7 @@ REM Main build sequence Ends
|
||||
|
||||
ECHO Staging VC++ runtime...
|
||||
MKDIR "%BUILDROOT%\installer" || EXIT /B 1
|
||||
COPY "%PGADMIN_VCREDIST_DIR%\%VCREDIST_FILE%" "%BUILDROOT%\installer" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_VCREDIST_DIR%\%PGADMIN_VCREDIST_FILE%" "%BUILDROOT%\installer" > nul || EXIT /B 1
|
||||
|
||||
CD %WD%
|
||||
EXIT /B 0
|
||||
@@ -345,13 +360,17 @@ REM Main build sequence Ends
|
||||
ECHO Processing installer configuration script...
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in" "-o" "%WD%\pkg\win32\installer.iss.in_stage1" "-s" MYAPP_FULLVERSION -r """%APP_VERSION%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage1" "-o" "%WD%\pkg\win32\installer.iss.in_stage2" "-s" MYAPP_VERSION -r """v%APP_MAJOR%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_VCDIST -r """%PGADMIN_VCREDIST_DIRNAME%\%VCREDIST_FILE%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_VCDIST -r """%PGADMIN_VCREDIST_DIRNAME%\%PGADMIN_VCREDIST_FILE%"""
|
||||
|
||||
ECHO Cleaning up...
|
||||
DEL /s "%WD%\pkg\win32\installer.iss.in_stage*" > nul
|
||||
|
||||
ECHO Creating windows installer using INNO tool...
|
||||
CALL "%PGADMIN_INNOTOOL_DIR%\ISCC.exe" "%WD%\pkg\win32\installer.iss" || EXIT /B 1
|
||||
IF NOT "%PGADMIN_WINDOWS_CSC%" == "" (
|
||||
CALL "%PGADMIN_INNOTOOL_DIR%\ISCC.exe" "%WD%\pkg\win32\installer.iss" "/SpgAdminSigntool=%PGADMIN_SIGNTOOL_DIR%\signtool.exe sign /sm /n $q%PGADMIN_WINDOWS_CSC%$q /tr http://timestamp.digicert.com /td sha256 /fd sha1 /v $f" || EXIT /B 1
|
||||
) ELSE (
|
||||
CALL "%PGADMIN_INNOTOOL_DIR%\ISCC.exe" "%WD%\pkg\win32\installer.iss" || EXIT /B 1
|
||||
)
|
||||
|
||||
ECHO Renaming installer...
|
||||
MOVE "%WD%\pkg\win32\Output\pgadmin4-setup.exe" "%DISTROOT%\%INSTALLERNAME%" > nul || EXIT /B 1
|
||||
@@ -366,13 +385,21 @@ REM Main build sequence Ends
|
||||
ECHO Generating SBOM...
|
||||
CALL syft "%BUILDROOT%" -o cyclonedx-json > "%BUILDROOT%\sbom.json"
|
||||
|
||||
:SIGN_INSTALLER
|
||||
ECHO Attempting to sign the installer...
|
||||
CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" sign /tr http://timestamp.digicert.com "%DISTROOT%\%INSTALLERNAME%"
|
||||
EXIT /B 0
|
||||
|
||||
:VERIFY_SIGNATURE
|
||||
IF "%PGADMIN_WINDOWS_CSC%" == "" (
|
||||
ECHO Skipping signature verification ^(PGADMIN_WINDOWS_CSC is not set^)...
|
||||
EXIT /B 0
|
||||
)
|
||||
|
||||
ECHO Verifying the installer signature...
|
||||
|
||||
CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" verify /pa /v "%DISTROOT%\%INSTALLERNAME%"
|
||||
IF %ERRORLEVEL% NEQ 0 (
|
||||
ECHO.
|
||||
ECHO ************************************************************
|
||||
ECHO * Failed to sign the installer
|
||||
ECHO * Failed to verify signature of the installer
|
||||
ECHO ************************************************************
|
||||
PAUSE
|
||||
)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2024, The pgAdmin Development Team
|
||||
# Copyright (C) 2013 - 2026, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
#########################################################################
|
||||
@@ -20,8 +20,9 @@ APP_REVISION := $(shell grep ^APP_REVISION web/version.py | awk -F"=" '{print $$
|
||||
# Include only platform-independent builds in all
|
||||
all: docs pip src
|
||||
|
||||
# Add BUILD_OPTS variable to pass arguments
|
||||
appbundle:
|
||||
./pkg/mac/build.sh
|
||||
./pkg/mac/build.sh $(BUILD_OPTS)
|
||||
|
||||
install-node:
|
||||
cd web && yarn install
|
||||
@@ -118,6 +119,7 @@ debian:
|
||||
|
||||
docker:
|
||||
echo $(APP_NAME)
|
||||
git checkout HEAD
|
||||
docker build --pull -t ${APP_NAME} -t $(APP_NAME):latest -t $(APP_NAME):$(APP_RELEASE) -t $(APP_NAME):$(APP_RELEASE).$(APP_REVISION) .
|
||||
|
||||
docs:
|
||||
|
||||
@@ -9,46 +9,58 @@ tarball or a git checkout.
|
||||
|
||||
## Architecture
|
||||
|
||||
pgAdmin 4 is written as a web application with Python(Flask) on the server side
|
||||
pgAdmin 4 is written as a web application with Python (Flask) on the server side
|
||||
and ReactJS, HTML5 with CSS for the client side processing and UI.
|
||||
|
||||
Although developed using web technologies, pgAdmin 4 can be deployed either on
|
||||
a web server using a browser, or standalone on a workstation. The runtime/
|
||||
subdirectory contains an NWjs based runtime application intended to allow this,
|
||||
which will execute the Python server and display the UI.
|
||||
subdirectory contains an Electron-based runtime application intended to allow this,
|
||||
which will fork a Python server process and display the UI.
|
||||
|
||||
## Building the Runtime
|
||||
|
||||
To build the runtime, the following packages must be installed:
|
||||
|
||||
* NodeJS 16+
|
||||
* Yarn
|
||||
|
||||
Change into the runtime directory, and run *yarn install*. This will install the
|
||||
dependencies required.
|
||||
|
||||
In order to use the runtime in a development environment, you'll need to copy
|
||||
*dev_config.json.in* file to *dev_config.json*, and edit the paths to the Python
|
||||
executable and *pgAdmin.py* file, otherwise the runtime will use the default
|
||||
paths it would expect to find in the standard package for your platform.
|
||||
|
||||
You can then execute the runtime by running something like:
|
||||
## Prerequisites
|
||||
1. Install Node.js 20 and above (https://nodejs.org/en/download)
|
||||
2. yarn (https://yarnpkg.com/getting-started/install)
|
||||
3. Python 3.9 and above (https://www.python.org/downloads/)
|
||||
4. PostgreSQL server (https://www.postgresql.org/download)
|
||||
|
||||
Start by enabling Corepack, if it isn't already;
|
||||
this will add the yarn binary to your PATH:
|
||||
```bash
|
||||
node_modules/nw/nwjs/nw .
|
||||
corepack enable
|
||||
```
|
||||
|
||||
or on macOS:
|
||||
# Building the Web Assets
|
||||
|
||||
pgAdmin is dependent on a number of third-party JavaScript libraries. These,
|
||||
along with its own JavaScript code, CSS code and images must be
|
||||
compiled into a "bundle" which is transferred to the browser for execution
|
||||
and rendering. This is far more efficient than simply requesting each
|
||||
asset as it is needed by the client.
|
||||
|
||||
To create the bundle, you will need the 'yarn' package management tool to be
|
||||
installed. Then, you can run the following commands on a *nix system to
|
||||
download the required packages and build the bundle:
|
||||
|
||||
```bash
|
||||
node_modules/nw/nwjs/nwjs.app/Contents/MacOS/nwjs .
|
||||
$ cd $PGADMIN4_SRC
|
||||
$ make install-node
|
||||
$ make bundle
|
||||
```
|
||||
|
||||
On Windows systems (where "make" is not available), the following commands
|
||||
can be used:
|
||||
|
||||
```
|
||||
C:\> cd $PGADMIN4_SRC\web
|
||||
C:\$PGADMIN4_SRC\web> yarn install
|
||||
C:\$PGADMIN4_SRC\web> yarn run bundle
|
||||
```
|
||||
|
||||
# Configuring the Python Environment
|
||||
|
||||
In order to run the Python code, a suitable runtime environment is required.
|
||||
Python version 3.7 and later are currently supported. It is recommended that a
|
||||
Python Virtual Environment is setup for this purpose, rather than using the
|
||||
Python version 3.9 and later are currently supported. It is recommended that a
|
||||
Python virtual environment is set up for this purpose, rather than using the
|
||||
system Python environment. On Linux and Mac systems, the process is fairly
|
||||
simple - adapt as required for your distribution:
|
||||
|
||||
@@ -69,7 +81,7 @@ simple - adapt as required for your distribution:
|
||||
so update that to the latest:
|
||||
|
||||
```bash
|
||||
$ pip install --upgrade pip
|
||||
(venv) $ pip install --upgrade pip
|
||||
```
|
||||
|
||||
4. Ensure that a PostgreSQL installation's bin/ directory is in the path (so
|
||||
@@ -94,36 +106,44 @@ simple - adapt as required for your distribution:
|
||||
configuration may look like:
|
||||
|
||||
```python
|
||||
from config import *
|
||||
import os
|
||||
import logging
|
||||
|
||||
# Debug mode
|
||||
DEBUG = True
|
||||
# Change pgAdmin data directory
|
||||
DATA_DIR = '/Users/myuser/.pgadmin_dev'
|
||||
|
||||
# App mode
|
||||
SERVER_MODE = True
|
||||
# Change pgAdmin server and port
|
||||
DEFAULT_SERVER = '127.0.0.1'
|
||||
DEFAULT_SERVER_PORT = 5051
|
||||
|
||||
# Enable the test module
|
||||
MODULE_BLACKLIST.remove('test')
|
||||
# Switch between server and desktop mode
|
||||
SERVER_MODE = True
|
||||
|
||||
# Log
|
||||
CONSOLE_LOG_LEVEL = DEBUG
|
||||
FILE_LOG_LEVEL = DEBUG
|
||||
# Change pgAdmin config DB path in case an external DB is used.
|
||||
CONFIG_DATABASE_URI="postgresql://postgres:postgres@localhost:5436/pgadmin"
|
||||
|
||||
DEFAULT_SERVER = '127.0.0.1'
|
||||
# Set up SMTP
|
||||
MAIL_SERVER = 'smtp.gmail.com'
|
||||
MAIL_PORT = 465
|
||||
MAIL_USE_SSL = True
|
||||
MAIL_USERNAME = 'user@gmail.com'
|
||||
MAIL_PASSWORD = 'xxxxxxxxxx'
|
||||
|
||||
UPGRADE_CHECK_ENABLED = True
|
||||
# Change log level
|
||||
CONSOLE_LOG_LEVEL = logging.INFO
|
||||
FILE_LOG_LEVEL = logging.INFO
|
||||
|
||||
# Use a different config DB for each server mode.
|
||||
if SERVER_MODE == False:
|
||||
SQLITE_PATH = os.path.join(
|
||||
DATA_DIR,
|
||||
'pgadmin4-desktop.db'
|
||||
)
|
||||
else:
|
||||
SQLITE_PATH = os.path.join(
|
||||
DATA_DIR,
|
||||
'pgadmin4-server.db'
|
||||
)
|
||||
# Use a different config DB for each server mode.
|
||||
if SERVER_MODE == False:
|
||||
SQLITE_PATH = os.path.join(
|
||||
DATA_DIR,
|
||||
'pgadmin4-desktop.db'
|
||||
)
|
||||
else:
|
||||
SQLITE_PATH = os.path.join(
|
||||
DATA_DIR,
|
||||
'pgadmin4-server.db'
|
||||
)
|
||||
```
|
||||
|
||||
This configuration allows easy switching between server and desktop modes
|
||||
@@ -143,59 +163,16 @@ simple - adapt as required for your distribution:
|
||||
(venv) $ python3 $PGADMIN4_SRC/web/pgAdmin4.py
|
||||
```
|
||||
|
||||
Whilst it is possible to automatically run setup in desktop mode by running
|
||||
the runtime, that will not work in server mode as the runtime doesn't allow
|
||||
command line interaction with the setup program.
|
||||
Whilst it is possible to automatically run setup in desktop mode by running
|
||||
the runtime, that will not work in server mode as the runtime doesn't allow
|
||||
command line interaction with the setup program.
|
||||
|
||||
At this point you will be able to run pgAdmin 4 from the command line in either
|
||||
server or desktop mode, and access it from a web browser using the URL shown in
|
||||
the terminal once pgAdmin has started up.
|
||||
|
||||
Setup of an environment on Windows is somewhat more complicated unfortunately,
|
||||
please see *pkg/win32/README.txt* for complete details.
|
||||
|
||||
# Building the Web Assets
|
||||
|
||||
pgAdmin is dependent on a number of third party Javascript libraries. These,
|
||||
along with it's own Javascript code, SCSS/CSS code and images must be
|
||||
compiled into a "bundle" which is transferred to the browser for execution
|
||||
and rendering. This is far more efficient than simply requesting each
|
||||
asset as it's needed by the client.
|
||||
|
||||
To create the bundle, you will need the 'yarn' package management tool to be
|
||||
installed. Then, you can run the following commands on a *nix system to
|
||||
download the required packages and build the bundle:
|
||||
|
||||
```bash
|
||||
(venv) $ cd $PGADMIN4_SRC
|
||||
(venv) $ make install-node
|
||||
(venv) $ make bundle
|
||||
```
|
||||
|
||||
On Windows systems (where "make" is not available), the following commands
|
||||
can be used:
|
||||
|
||||
```
|
||||
C:\> cd $PGADMIN4_SRC\web
|
||||
C:\$PGADMIN4_SRC\web> yarn install
|
||||
C:\$PGADMIN4_SRC\web> yarn run bundle
|
||||
```
|
||||
|
||||
# Creating pgAdmin themes
|
||||
|
||||
To create a pgAdmin theme, you need to create a directory under
|
||||
*web/pgadmin/static/scss/resources*.
|
||||
Copy the sample file *_theme.variables.scss.sample* to the new directory and
|
||||
rename it to *_theme.variables.scss*. Change the desired hexadecimal values of
|
||||
the colors and bundle pgAdmin. You can also add a preview image in the theme
|
||||
directory with the name as *\<dir name>_preview.png*. It is recommended that the
|
||||
preview image should not be larger in size as it may take time to load on slow
|
||||
networks. Run the *yarn run bundle* and you're good to go. No other changes are
|
||||
required, pgAdmin bundle will read the directory and create other required
|
||||
entries to make them available in preferences.
|
||||
|
||||
The name of the theme is derived from the directory name. Underscores (_) and
|
||||
hyphens (-) will be replaced with spaces and the result will be camel cased.
|
||||
please see *pkg/win32/README.md* for complete details.
|
||||
|
||||
# Building the documentation
|
||||
|
||||
@@ -216,6 +193,21 @@ The docs can then be built using the Makefile in *$PGADMIN4_SRC*, e.g.
|
||||
|
||||
The output can be found in *$PGADMIN4_SRC/docs/en_US/_build/html/index.html*
|
||||
|
||||
## Building the Runtime
|
||||
Change into the runtime directory, and run *yarn install*. This will install the
|
||||
dependencies required.
|
||||
|
||||
In order to use the runtime in a development environment, you'll need to copy
|
||||
*dev_config.json.in* file to *dev_config.json*, and edit the paths to the Python
|
||||
executable and *pgAdmin.py* file, otherwise the runtime will use the default
|
||||
paths it would expect to find in the standard package for your platform.
|
||||
|
||||
You can then execute the runtime by running something like:
|
||||
|
||||
```bash
|
||||
yarn run start
|
||||
```
|
||||
|
||||
# Building packages
|
||||
|
||||
Most packages can be built using the Makefile in $PGADMIN4_SRC, provided all
|
||||
@@ -234,9 +226,9 @@ with all the required packages, and then run:
|
||||
(venv) $ make pip
|
||||
```
|
||||
|
||||
To build the macOS AppBundle, please see *pkg/mac/README*.
|
||||
To build the macOS AppBundle, please see *pkg/mac/README.md*.
|
||||
|
||||
To build the Windows installer, please see *pkg/win32/README.txt*.
|
||||
To build the Windows installer, please see *pkg/win32/README.md*.
|
||||
# Create Database Migrations
|
||||
|
||||
In order to make changes to the SQLite DB, navigate to the 'web' directory:
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Only the latest version receives security updates. Users are encouraged to upgrade to the latest stable release.
|
||||
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
We take security seriously and appreciate your efforts to responsibly disclose vulnerabilities. If you believe you have found a vulnerability, please follow the guidelines below to submit a report.
|
||||
|
||||
### **What to Include in Your Report**
|
||||
To help us quickly understand and address the issue, please include the following sections in your report:
|
||||
|
||||
#### 1. **Summary**
|
||||
- A brief description of the vulnerability.
|
||||
|
||||
#### 2. **Affected Versions**
|
||||
- The version(s) of the project affected by the vulnerability.
|
||||
- Example: "Affects versions 3.4.0 to 3.6.23."
|
||||
|
||||
#### 3. **Details**
|
||||
- A detailed explanation of the vulnerability, including:
|
||||
- How to reproduce the issue (step-by-step instructions).
|
||||
- The code or component where the vulnerability exists.
|
||||
- The expected vs. actual behavior.
|
||||
|
||||
#### 4. **Proof of Concept (PoC)**
|
||||
- Provide a proof of concept to demonstrate the vulnerability. This could be:
|
||||
- Code snippets.
|
||||
- Screenshots or videos.
|
||||
- A minimal reproducible example.
|
||||
|
||||
#### 5. **Patches (if applicable)**
|
||||
- If you have a suggested fix or patch, include it in your report.
|
||||
- Example: "Sanitize user input using `DOMPurify`."
|
||||
|
||||
#### 6. **Impact**
|
||||
- Describe the potential impact of the vulnerability, such as:
|
||||
- Remote Code Execution.
|
||||
- CSRF.
|
||||
- Data exposure.
|
||||
- Denial of service.
|
||||
|
||||
|
||||
|
||||
### **What to Expect**
|
||||
- **Acknowledgement**: You will receive an acknowledgement of your report within **48 hours**.
|
||||
- **Timeline**: We will provide a timeline for investigating and addressing the issue.
|
||||
- **Updates**: You will receive regular updates on the progress of the vulnerability resolution.
|
||||
- **CVE ID**: If the vulnerability is confirmed, we will request a CVE ID to acknowledge the issue officially and include it in the release notes.
|
||||
|
||||
|
||||
### **Out of Scope**
|
||||
The following issues are considered out of scope for security reports:
|
||||
- Vulnerabilities in outdated or unsupported versions.
|
||||
- Issues related to non-security-impacting bugs or feature requests.
|
||||
- Vulnerabilities requiring physical access to the device or social engineering.
|
||||
|
||||
|
||||
|
||||
## Security Updates
|
||||
|
||||
We are committed to providing timely security updates for supported versions. Here’s our process:
|
||||
1. **Assessment**:
|
||||
- All reported vulnerabilities are assessed for severity and impact.
|
||||
2. **Patch Development**:
|
||||
- Patches are developed and tested in a private repository to prevent premature disclosure.
|
||||
3. **Release**:
|
||||
- Security patches are released as soon as possible, along with a detailed advisory.
|
||||
|
||||
|
||||
|
||||
## Acknowledgments
|
||||
|
||||
We deeply appreciate the efforts of security researchers and users who help us improve the security of our project.
|
||||
|
||||
|
||||
|
||||
## Contact
|
||||
|
||||
For any questions or concerns regarding security, please contact us at `security@pgadmin.org`.
|
||||
@@ -0,0 +1,249 @@
|
||||
.. _ai_tools:
|
||||
|
||||
*******************
|
||||
`AI Reports`:index:
|
||||
*******************
|
||||
|
||||
**AI Reports** is a feature that provides AI-powered database analysis and insights
|
||||
using Large Language Models (LLMs). Use the *Tools → AI Reports* menu to access
|
||||
the various AI-powered reports.
|
||||
|
||||
The AI Reports feature allows you to:
|
||||
|
||||
* Generate security reports to identify potential security vulnerabilities and configuration issues.
|
||||
|
||||
* Create performance reports with optimization recommendations for queries and configurations.
|
||||
|
||||
* Perform design reviews to analyze database schema structure and suggest improvements.
|
||||
|
||||
**Prerequisites:**
|
||||
|
||||
Before using AI Reports, you must:
|
||||
|
||||
1. Ensure AI features are enabled in the server configuration (set ``LLM_ENABLED`` to ``True`` in ``config.py``).
|
||||
|
||||
2. Configure an LLM provider in :ref:`Preferences → AI <preferences>`.
|
||||
|
||||
**Note:**
|
||||
|
||||
* AI Reports using cloud providers (Anthropic, OpenAI) require an active internet connection.
|
||||
Local providers (Ollama, Docker Model Runner) do not require internet access.
|
||||
|
||||
* API usage may incur costs depending on your LLM provider's pricing model.
|
||||
Local providers (Ollama, Docker Model Runner) are free to use.
|
||||
|
||||
* The quality and accuracy of reports depend on the LLM provider and model configured.
|
||||
|
||||
|
||||
Configuring AI Reports
|
||||
**********************
|
||||
|
||||
To configure AI Reports, navigate to *File → Preferences → AI* (or click the *Settings*
|
||||
button and select *AI*).
|
||||
|
||||
.. image:: images/preferences_ai.png
|
||||
:alt: AI preferences
|
||||
:align: center
|
||||
|
||||
Select your preferred LLM provider from the dropdown:
|
||||
|
||||
**Anthropic**
|
||||
Use Claude models from Anthropic, or any Anthropic-compatible API provider.
|
||||
|
||||
* **API URL**: Custom API endpoint URL (leave empty for default: https://api.anthropic.com/v1).
|
||||
* **API Key File**: Path to a file containing your Anthropic API key (obtain from https://console.anthropic.com/). This path refers to the filesystem where the pgAdmin server is running (e.g., inside the container if using Docker). The ``~`` prefix is expanded to the home directory of the user running the pgAdmin server process. Optional when using a custom URL with a provider that does not require authentication.
|
||||
* **Model**: Select from available Claude models (e.g., claude-sonnet-4-20250514).
|
||||
|
||||
**OpenAI**
|
||||
Use GPT models from OpenAI, or any OpenAI-compatible API provider (e.g.,
|
||||
LiteLLM, LM Studio, EXO, or other local inference servers).
|
||||
|
||||
* **API URL**: Custom API endpoint URL (leave empty for default: https://api.openai.com/v1). Include the ``/v1`` path prefix if required by your provider.
|
||||
* **API Key File**: Path to a file containing your OpenAI API key (obtain from https://platform.openai.com/). This path refers to the filesystem where the pgAdmin server is running (e.g., inside the container if using Docker). The ``~`` prefix is expanded to the home directory of the user running the pgAdmin server process. Optional when using a custom URL with a provider that does not require authentication.
|
||||
* **Model**: Select from available GPT models (e.g., gpt-4).
|
||||
|
||||
**Ollama**
|
||||
Use locally-hosted open-source models via Ollama. Requires a running Ollama instance.
|
||||
|
||||
* **API URL**: The URL of your Ollama server (default: http://localhost:11434).
|
||||
* **Model**: Enter the name of the Ollama model to use (e.g., llama2, mistral).
|
||||
|
||||
**Docker Model Runner**
|
||||
Use models running in Docker Desktop's built-in model runner (available in Docker Desktop 4.40+).
|
||||
No API key is required.
|
||||
|
||||
* **API URL**: The URL of the Docker Model Runner API (default: http://localhost:12434).
|
||||
* **Model**: Select from available models or enter a custom model name.
|
||||
|
||||
.. note:: You can also use the *OpenAI* provider with a custom API URL for any
|
||||
OpenAI-compatible endpoint, including Docker Model Runner and other local
|
||||
inference servers.
|
||||
|
||||
After configuring your provider, click *Save* to apply the changes.
|
||||
|
||||
|
||||
Security Reports
|
||||
****************
|
||||
|
||||
Security Reports analyze your PostgreSQL server, database, or schema for potential
|
||||
security vulnerabilities and configuration issues.
|
||||
|
||||
To generate a security report:
|
||||
|
||||
1. In the *Browser* tree, select a server, database, or schema.
|
||||
|
||||
2. Choose *Tools → AI Reports → Security* from the menu, or right-click the
|
||||
object and select *Security* from the context menu.
|
||||
|
||||
3. The report will be generated and displayed in a new tab.
|
||||
|
||||
.. image:: images/ai_security_report.png
|
||||
:alt: AI security report
|
||||
:align: center
|
||||
|
||||
**Security Report Scope:**
|
||||
|
||||
* **Server Level**: Analyzes server configuration, authentication settings, roles, and permissions.
|
||||
|
||||
* **Database Level**: Reviews database-specific security settings, roles with database access, and object permissions.
|
||||
|
||||
* **Schema Level**: Examines schema permissions, object ownership, and access controls.
|
||||
|
||||
Each report includes:
|
||||
|
||||
* **Security Findings**: Identified vulnerabilities or security concerns.
|
||||
|
||||
* **Risk Assessment**: Severity levels for each finding (Critical, High, Medium, Low).
|
||||
|
||||
* **Recommendations**: Specific actions to remediate security issues.
|
||||
|
||||
* **Best Practices**: General security recommendations for PostgreSQL.
|
||||
|
||||
|
||||
Performance Reports
|
||||
*******************
|
||||
|
||||
Performance Reports analyze query performance, configuration settings, and provide
|
||||
optimization recommendations.
|
||||
|
||||
To generate a performance report:
|
||||
|
||||
1. In the *Browser* tree, select a server or database.
|
||||
|
||||
2. Choose *Tools → AI Reports → Performance* from the menu, or right-click the
|
||||
object and select *Performance* from the context menu.
|
||||
|
||||
3. The report will be generated and displayed in a new tab.
|
||||
|
||||
**Performance Report Scope:**
|
||||
|
||||
* **Server Level**: Analyzes server configuration parameters, resource utilization, and overall server performance metrics.
|
||||
|
||||
* **Database Level**: Reviews database-specific configuration, query performance, index usage, and table statistics.
|
||||
|
||||
Each report includes:
|
||||
|
||||
* **Performance Metrics**: Key performance indicators and statistics.
|
||||
|
||||
* **Configuration Analysis**: Review of relevant configuration parameters.
|
||||
|
||||
* **Query Optimization**: Recommendations for improving slow queries.
|
||||
|
||||
* **Index Recommendations**: Suggestions for adding, removing, or modifying indexes.
|
||||
|
||||
* **Capacity Planning**: Resource utilization trends and recommendations.
|
||||
|
||||
|
||||
Design Review Reports
|
||||
*********************
|
||||
|
||||
Design Review Reports analyze your database schema structure and suggest
|
||||
improvements for normalization, naming conventions, and best practices.
|
||||
|
||||
To generate a design review report:
|
||||
|
||||
1. In the *Browser* tree, select a database or schema.
|
||||
|
||||
2. Choose *Tools → AI Reports → Design* from the menu, or right-click the
|
||||
object and select *Design* from the context menu.
|
||||
|
||||
3. The report will be generated and displayed in a new tab.
|
||||
|
||||
**Design Review Scope:**
|
||||
|
||||
* **Database Level**: Reviews overall database structure, schema organization, and cross-schema dependencies.
|
||||
|
||||
* **Schema Level**: Analyzes tables, views, functions, and other objects within the schema.
|
||||
|
||||
Each report includes:
|
||||
|
||||
* **Schema Structure Analysis**: Review of table structures, relationships, and constraints.
|
||||
|
||||
* **Normalization Review**: Recommendations for database normalization (1NF, 2NF, 3NF, etc.).
|
||||
|
||||
* **Naming Conventions**: Suggestions for consistent naming patterns.
|
||||
|
||||
* **Data Type Usage**: Review of data type choices and recommendations.
|
||||
|
||||
* **Index Design**: Analysis of indexing strategy.
|
||||
|
||||
* **Best Practices**: General PostgreSQL schema design recommendations.
|
||||
|
||||
|
||||
Working with Reports
|
||||
********************
|
||||
|
||||
All AI reports are displayed in a dedicated panel with the following features:
|
||||
|
||||
**Report Display**
|
||||
Reports are formatted as Markdown and rendered with syntax highlighting for SQL code.
|
||||
|
||||
**Toolbar Actions**
|
||||
|
||||
* **Stop** - Cancel the current report generation. This is useful if the report
|
||||
is taking too long or if you want to change parameters.
|
||||
|
||||
* **Regenerate** - Generate a new report for the same object. Useful when you
|
||||
want to get a fresh analysis or if data has changed.
|
||||
|
||||
* **Download** - Download the report as a Markdown (.md) file. The filename
|
||||
includes the report type, object name, and date for easy identification.
|
||||
|
||||
**Multiple Reports**
|
||||
You can generate and view multiple reports simultaneously. Each report opens in
|
||||
a new tab, allowing you to compare reports across different servers, databases,
|
||||
or schemas.
|
||||
|
||||
**Report Management**
|
||||
Each report tab can be closed individually by clicking the *X* in the tab.
|
||||
Panel titles show the object name and report type for easy identification.
|
||||
|
||||
**Copying Content**
|
||||
You can select and copy text from reports to use in documentation or share with
|
||||
your team.
|
||||
|
||||
|
||||
Troubleshooting
|
||||
***************
|
||||
|
||||
**"AI features are disabled in the server configuration"**
|
||||
The administrator has disabled AI features on the server. Contact your
|
||||
pgAdmin administrator to enable the ``LLM_ENABLED`` configuration option.
|
||||
|
||||
**"Please configure an LLM provider in Preferences"**
|
||||
You need to configure an LLM provider before using AI Reports. See *Configuring AI Reports* above.
|
||||
|
||||
**"Please connect to the server/database first"**
|
||||
You must establish a connection to the server or database before generating reports.
|
||||
|
||||
**API Connection Errors**
|
||||
* Verify your API key is correct (for Anthropic and OpenAI).
|
||||
* Check your internet connection (for cloud providers).
|
||||
* For Ollama, ensure the Ollama server is running and accessible.
|
||||
* For Docker Model Runner, ensure Docker Desktop 4.40+ is running with the model runner enabled.
|
||||
* Check that your firewall allows connections to the LLM provider's API.
|
||||
|
||||
**Report Generation Fails**
|
||||
* Check the pgAdmin logs for detailed error messages.
|
||||
* Verify the database connection is still active.
|
||||
* Ensure the selected model is available for your account/subscription.
|
||||
@@ -0,0 +1,96 @@
|
||||
Auto-Update of pgAdmin 4 Desktop Application
|
||||
********************************************
|
||||
|
||||
pgAdmin 4's desktop application includes an automated update system built using
|
||||
Electron's ``autoUpdater`` module. This feature enables users to receive and install
|
||||
updates seamlessly, ensuring they always have access to the latest features and security fixes.
|
||||
|
||||
Supported Platforms
|
||||
===================
|
||||
|
||||
- **macOS:** Fully supported with automatic updates enabled by default
|
||||
- **Windows:** Not supported
|
||||
- **Linux:** Not supported
|
||||
|
||||
Update Process Overview
|
||||
=======================
|
||||
|
||||
1. **Check for Updates:**
|
||||
|
||||
- Automatic check on application startup
|
||||
- Manual check available via pgAdmin 4 menu > Check for Updates
|
||||
- Uses Electron's ``autoUpdater`` API to query update server
|
||||
|
||||
2. **Download Process:**
|
||||
|
||||
- Updates download automatically when detected
|
||||
- Progress shown via notifications
|
||||
- Background download prevents interruption of work
|
||||
|
||||
3. **Installation Flow:**
|
||||
|
||||
- User prompted to Install & Restart or Restart Later when update ready
|
||||
- Update applied during application restart
|
||||
|
||||
The flow chart for the update process is as follows:
|
||||
|
||||
.. image:: images/auto_update_desktop_app.png
|
||||
:alt: Auto-update Desktop App
|
||||
:align: center
|
||||
|
||||
User Interface Components
|
||||
=========================
|
||||
|
||||
1. **Notification Types:**
|
||||
|
||||
- Update available
|
||||
- Download progress
|
||||
- Update ready to install
|
||||
- Error notifications
|
||||
|
||||
2. **Menu Integration:**
|
||||
|
||||
- Check for Updates option in pgAdmin 4 menu
|
||||
- Restart to Update option when update available
|
||||
|
||||
Error Handling
|
||||
==============
|
||||
|
||||
The system includes comprehensive error handling:
|
||||
|
||||
1. **Network Errors:**
|
||||
|
||||
- Connection timeouts
|
||||
- Download failures
|
||||
- Server unavailability
|
||||
|
||||
2. **Installation Errors:**
|
||||
|
||||
- Corrupted downloads
|
||||
|
||||
3. **Recovery Mechanisms:**
|
||||
|
||||
- Fallback to manual update
|
||||
- Error reporting to logs
|
||||
|
||||
Security Considerations
|
||||
=======================
|
||||
|
||||
The update system implements below security measures:
|
||||
|
||||
1. **Secure Communication:**
|
||||
|
||||
- Protected update metadata
|
||||
|
||||
Platform-Specific Notes
|
||||
=======================
|
||||
|
||||
1. **macOS:**
|
||||
|
||||
- Uses native update mechanisms
|
||||
- Requires signed packages
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
- `Electron autoUpdater API Documentation <https://www.electronjs.org/docs/latest/api/auto-updater>`_
|
||||
@@ -77,13 +77,13 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
|
||||
* Move switches in the **Sections** field box to select a portion of the object
|
||||
that will be backed up.
|
||||
|
||||
* Move the switch next to *Pre-data* towards right position to include all
|
||||
* Move the switch next to *Pre-data* to the *Yes* position to include all
|
||||
data definition items not included in the data or post-data item lists.
|
||||
|
||||
* Move the switch next to *Data* towards right position to backup actual table
|
||||
* Move the switch next to *Data* to the *Yes* position to backup actual table
|
||||
data, large-object contents, and sequence values.
|
||||
|
||||
* Move the switch next to *Post-data* towards right position to include
|
||||
* Move the switch next to *Post-data* to the *Yes* position to include
|
||||
definitions of indexes, triggers, rules, and constraints other than
|
||||
validated check constraints.
|
||||
|
||||
@@ -94,13 +94,13 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
|
||||
* Move switches in the **Type of objects** field box to specify details about
|
||||
the type of objects that will be backed up.
|
||||
|
||||
* Move the switch next to *Only data* towards right position to limit the back
|
||||
* Move the switch next to *Only data* to the *Yes* position to limit the back
|
||||
up to data.
|
||||
|
||||
* Move the switch next to *Only schemas* to limit the back up to schema-level
|
||||
database objects.
|
||||
|
||||
* Move the switch next to *Blobs* towards left position to exclude large
|
||||
* Move the switch next to *Blobs* to the *No* position to exclude large
|
||||
objects in the backup.
|
||||
|
||||
.. image:: images/backup_do_not_save.png
|
||||
@@ -110,36 +110,36 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
|
||||
* Move switches in the **Do not save** field box to select the objects that will
|
||||
not be included in the backup.
|
||||
|
||||
* Move the switch next to *Owner* towards right position to exclude commands
|
||||
* Move the switch next to *Owner* to the *Yes* position to exclude commands
|
||||
that set object ownership.
|
||||
|
||||
* Move the switch next to *Privileges* towards right position to exclude
|
||||
* Move the switch next to *Privileges* to the *Yes* position to exclude
|
||||
commands that create access privileges.
|
||||
|
||||
* Move the switch next to *Tablespaces* towards right position to exclude
|
||||
* Move the switch next to *Tablespaces* to the *Yes* position to exclude
|
||||
tablespaces.
|
||||
|
||||
* Move the switch next to *Unlogged table data* towards right position to
|
||||
* Move the switch next to *Unlogged table data* to the *Yes* position to
|
||||
exclude the contents of unlogged tables.
|
||||
|
||||
* Move the switch next to *Comments* towards right position to exclude
|
||||
* Move the switch next to *Comments* to the *Yes* position to exclude
|
||||
commands that set the comments. **Note:** This option is visible only for
|
||||
database server greater than or equal to 11.
|
||||
|
||||
* Move the switch next to *Publications* towards right position to exclude
|
||||
* Move the switch next to *Publications* to the *Yes* position to exclude
|
||||
publications.
|
||||
|
||||
* Move the switch next to *Subscriptions* towards right position to exclude
|
||||
* Move the switch next to *Subscriptions* to the *Yes* position to exclude
|
||||
subscriptions.
|
||||
|
||||
* Move the switch next to *Security labels* towards right position to exclude
|
||||
* Move the switch next to *Security labels* to the *Yes* position to exclude
|
||||
Security labels.
|
||||
|
||||
* Move the switch next to *Toast compressions* towards right position to exclude
|
||||
* Move the switch next to *Toast compressions* to the *Yes* position to exclude
|
||||
Toast compressions. **Note:** This option is visible only for
|
||||
database server greater than or equal to 14.
|
||||
|
||||
* Move the switch next to *Table access methods* towards right position to exclude
|
||||
* Move the switch next to *Table access methods* to the *Yes* position to exclude
|
||||
Table access methods. **Note:** This option is visible only for
|
||||
database server greater than or equal to 15.
|
||||
|
||||
@@ -150,7 +150,7 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
|
||||
Click the *Query Options* tab to continue. Use these additional fields to specify
|
||||
the type of statements that should be included in the backup.
|
||||
|
||||
* Move the switch next to *Use INSERT commands* towards right position to
|
||||
* Move the switch next to *Use INSERT commands* to the *Yes* position to
|
||||
dump the data in the form of INSERT statements rather than using a COPY
|
||||
command. Please note: this may make restoration from backup slow.
|
||||
|
||||
@@ -165,16 +165,16 @@ the type of statements that should be included in the backup.
|
||||
**Note:** This option is visible only for database server greater than or
|
||||
equal to 12.
|
||||
|
||||
* Move the switch next to *Include CREATE DATABASE statement* towards right
|
||||
* Move the switch next to *Include CREATE DATABASE statement* to the *Yes*
|
||||
position to include a command in the backup that creates a new database
|
||||
when restoring the backup.
|
||||
|
||||
* Move the switch next to *Include DROP DATABASE statement* towards right
|
||||
* Move the switch next to *Include DROP DATABASE statement* to the *Yes*
|
||||
position to include a command in the backup that will drop any existing
|
||||
database object with the same name before recreating the object during a
|
||||
backup.
|
||||
|
||||
* Move the switch next to *Include IF EXISTS clause* towards right
|
||||
* Move the switch next to *Include IF EXISTS clause* to the *Yes*
|
||||
position to add an IF EXISTS clause to drop databases and other objects.
|
||||
This option is not valid unless *Include DROP DATABASE statement* is also set.
|
||||
|
||||
@@ -185,17 +185,17 @@ the type of statements that should be included in the backup.
|
||||
Click the *Table Options* tab to continue. Use the fields in the *Table Options*
|
||||
tab related to tables that should be included in the backup.
|
||||
|
||||
* Move the switch next to *Use Column INSERTS* towards right position to dump
|
||||
* Move the switch next to *Use Column INSERTS* to the *Yes* position to dump
|
||||
the data in the form of INSERT statements and include explicit column
|
||||
names. Please note: this may make restoration from backup slow.
|
||||
|
||||
* Move the switch next to *Load via partition root* towards right position,
|
||||
* Move the switch next to *Load via partition root* to the *Yes* position,
|
||||
so when dumping a COPY or INSERT statement for a partitioned table, target
|
||||
the root of the partitioning hierarchy which contains it rather than the
|
||||
partition itself. **Note:** This option is visible only for database server
|
||||
greater than or equal to 11.
|
||||
|
||||
* Move the switch next to *Enable row security* towards right position to
|
||||
* Move the switch next to *Enable row security* to the *Yes* position to
|
||||
set row_security to on instead, allowing the user to dump the parts of the
|
||||
contents of the table that they have access to. This option is relevant
|
||||
only when dumping the contents of a table which has row security.
|
||||
@@ -235,10 +235,10 @@ tab to provide other backup options.
|
||||
that should be excluded from the backup.
|
||||
|
||||
* Move the switch next to *Triggers* (active when creating a data-only backup)
|
||||
towards right position to include commands that will disable triggers on the
|
||||
to the *Yes* position to include commands that will disable triggers on the
|
||||
target table while the data is being loaded.
|
||||
|
||||
* Move the switch next to *$ quoting* towards right position to enable dollar
|
||||
* Move the switch next to *$ quoting* to the *Yes* position to enable dollar
|
||||
quoting within function bodies; if disabled, the function body will be
|
||||
quoted using SQL standard string syntax.
|
||||
|
||||
@@ -249,13 +249,13 @@ tab to provide other backup options.
|
||||
* Move switches in the **Miscellaneous** field box to specify miscellaneous
|
||||
backup options.
|
||||
|
||||
* Move the switch next to *Verbose messages* towards left position to instruct
|
||||
* Move the switch next to *Verbose messages* to the *No* position to instruct
|
||||
*pg_dump* to exclude verbose messages.
|
||||
|
||||
* Move the switch next to *Force double quotes on identifiers* towards right
|
||||
* Move the switch next to *Force double quotes on identifiers* to the *Yes*
|
||||
position to force the quoting of all identifiers.
|
||||
|
||||
* Move the switch next to *Use SET SESSION AUTHORIZATION* towards right
|
||||
* Move the switch next to *Use SET SESSION AUTHORIZATION* to the *Yes*
|
||||
position to include a statement that will use a SET SESSION AUTHORIZATION
|
||||
command to determine object ownership (instead of an ALTER OWNER command).
|
||||
|
||||
@@ -265,9 +265,9 @@ tab to provide other backup options.
|
||||
* Use the *Extra float digits* field to use the specified value when dumping
|
||||
floating-point data, instead of the maximum available precision.
|
||||
|
||||
* Use the *Lock wait timeout* field to do not wait forever to acquire shared
|
||||
table locks at the beginning of the dump. Instead, fail if unable to lock a
|
||||
table within the specified timeout.
|
||||
* Use the *Lock wait timeout* field to specify a timeout rather than waiting
|
||||
indefinitely to acquire shared table locks at the beginning of the dump.
|
||||
If unable to lock a table within the specified timeout, the operation will fail.
|
||||
|
||||
Click the *Objects* tab to continue.
|
||||
|
||||
@@ -287,6 +287,6 @@ command:
|
||||
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
|
||||
pgAdmin will run the backup process in background. You can view all the background
|
||||
process with there running status and logs on the :ref:`Processes <processes>`
|
||||
tab
|
||||
pgAdmin will run the backup process in the background. You can view all the background
|
||||
processes with their running status and logs on the :ref:`Processes <processes>`
|
||||
tab.
|
||||
@@ -34,6 +34,6 @@ statements that should be included in the backup.
|
||||
Click the *Backup* button to build and execute a command based on your
|
||||
selections; click the *Cancel* button to exit without saving work.
|
||||
|
||||
pgAdmin will run the backup process in background. You can view all the background
|
||||
process with there running status and logs on the :ref:`Processes <processes>`
|
||||
tab
|
||||
pgAdmin will run the backup process in the background. You can view all the background
|
||||
processes with their running status and logs on the :ref:`Processes <processes>`
|
||||
tab.
|
||||
@@ -34,7 +34,7 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
|
||||
* Move switches in the **Type of objects** field box to specify details about
|
||||
the type of objects that will be backed up.
|
||||
|
||||
* Move the switch next to *Only data* towards right position to limit the back
|
||||
* Move the switch next to *Only data* to the *Yes* position to limit the back
|
||||
up to data.
|
||||
|
||||
* Move the switch next to *Only schemas* to limit the back up to schema-level
|
||||
@@ -52,39 +52,39 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
|
||||
* Move switches in the **Do not save** field box to select the objects that will
|
||||
not be included in the backup.
|
||||
|
||||
* Move the switch next to *Owner* towards right position to exclude commands
|
||||
* Move the switch next to *Owner* to the *Yes* position to exclude commands
|
||||
that set object ownership.
|
||||
|
||||
* Move the switch next to *Role passwords* towards right position to exclude
|
||||
* Move the switch next to *Role passwords* to the *Yes* position to exclude
|
||||
passwords for roles.
|
||||
|
||||
* Move the switch next to *Privileges* towards right position to exclude
|
||||
* Move the switch next to *Privileges* to the *Yes* position to exclude
|
||||
commands that create access privileges.
|
||||
|
||||
* Move the switch next to *Tablespaces* towards right position to exclude
|
||||
* Move the switch next to *Tablespaces* to the *Yes* position to exclude
|
||||
tablespaces.
|
||||
|
||||
* Move the switch next to *Unlogged table data* towards right position to
|
||||
* Move the switch next to *Unlogged table data* to the *Yes* position to
|
||||
exclude the contents of unlogged tables.
|
||||
|
||||
* Move the switch next to *Comments* towards right position to exclude
|
||||
* Move the switch next to *Comments* to the *Yes* position to exclude
|
||||
commands that set the comments. **Note:** This option is visible only for
|
||||
database server greater than or equal to 11.
|
||||
|
||||
* Move the switch next to *Publications* towards right position to exclude
|
||||
* Move the switch next to *Publications* to the *Yes* position to exclude
|
||||
publications.
|
||||
|
||||
* Move the switch next to *Subscriptions* towards right position to exclude
|
||||
* Move the switch next to *Subscriptions* to the *Yes* position to exclude
|
||||
subscriptions.
|
||||
|
||||
* Move the switch next to *Security labels* towards right position to exclude
|
||||
* Move the switch next to *Security labels* to the *Yes* position to exclude
|
||||
Security labels.
|
||||
|
||||
* Move the switch next to *Toast compressions* towards right position to exclude
|
||||
* Move the switch next to *Toast compressions* to the *Yes* position to exclude
|
||||
Toast compressions. **Note:** This option is visible only for
|
||||
database server greater than or equal to 14.
|
||||
|
||||
* Move the switch next to *Table access methods* towards right position to exclude
|
||||
* Move the switch next to *Table access methods* to the *Yes* position to exclude
|
||||
Table access methods. **Note:** This option is visible only for
|
||||
database server greater than or equal to 15.
|
||||
|
||||
@@ -95,7 +95,7 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
|
||||
Click the *Query Options* tab to continue. Use these additional fields to specify
|
||||
the type of statements that should be included in the backup.
|
||||
|
||||
* Move the switch next to *Use INSERT commands* towards right position to
|
||||
* Move the switch next to *Use INSERT commands* to the *Yes* position to
|
||||
dump the data in the form of INSERT statements rather than using a COPY
|
||||
command. Please note: this may make restoration from backup slow.
|
||||
|
||||
@@ -110,12 +110,12 @@ the type of statements that should be included in the backup.
|
||||
**Note:** This option is visible only for database server greater than or
|
||||
equal to 12.
|
||||
|
||||
* Move the switch next to *Include DROP DATABASE statement* towards right
|
||||
* Move the switch next to *Include DROP DATABASE statement* to the *Yes*
|
||||
position to include a command in the backup that will drop any existing
|
||||
database object with the same name before recreating the object during a
|
||||
backup.
|
||||
|
||||
* Move the switch next to *Include IF EXISTS clause* towards right
|
||||
* Move the switch next to *Include IF EXISTS clause* to the *Yes*
|
||||
position to add an IF EXISTS clause to drop databases and other objects.
|
||||
This option is not valid unless *Include DROP DATABASE statement* is also set.
|
||||
|
||||
@@ -126,11 +126,11 @@ the type of statements that should be included in the backup.
|
||||
Click the *Table Options* tab to continue. Use the fields in the *Table Options*
|
||||
tab related to tables that should be included in the backup.
|
||||
|
||||
* Move the switch next to *Use Column INSERTS* towards right position to dump
|
||||
* Move the switch next to *Use Column INSERTS* to the *Yes* position to dump
|
||||
the data in the form of INSERT statements and include explicit column
|
||||
names. Please note: this may make restoration from backup slow.
|
||||
|
||||
* Move the switch next to *Load via partition root* towards right position,
|
||||
* Move the switch next to *Load via partition root* to the *Yes* position,
|
||||
so when dumping a COPY or INSERT statement for a partitioned table, target
|
||||
the root of the partitioning hierarchy which contains it rather than the
|
||||
partition itself. **Note:** This option is visible only for database server
|
||||
@@ -147,10 +147,10 @@ tab to provide other backup options.
|
||||
that should be excluded from the backup.
|
||||
|
||||
* Move the switch next to *Triggers* (active when creating a data-only backup)
|
||||
towards right position to include commands that will disable triggers on the
|
||||
to the *Yes* position to include commands that will disable triggers on the
|
||||
target table while the data is being loaded.
|
||||
|
||||
* Move the switch next to *$ quoting* towards right position to enable dollar
|
||||
* Move the switch next to *$ quoting* to the *Yes* position to enable dollar
|
||||
quoting within function bodies; if disabled, the function body will be
|
||||
quoted using SQL standard string syntax.
|
||||
|
||||
@@ -161,13 +161,13 @@ tab to provide other backup options.
|
||||
* Move switches in the **Miscellaneous** field box to specify miscellaneous
|
||||
backup options.
|
||||
|
||||
* Move the switch next to *Verbose messages* towards left position to instruct
|
||||
* Move the switch next to *Verbose messages* to the *No* position to instruct
|
||||
*pg_dumpall* to exclude verbose messages.
|
||||
|
||||
* Move the switch next to *Force double quotes on identifiers* towards right
|
||||
* Move the switch next to *Force double quotes on identifiers* to the *Yes*
|
||||
position to force the quoting of all identifiers.
|
||||
|
||||
* Move the switch next to *Use SET SESSION AUTHORIZATION* towards right
|
||||
* Move the switch next to *Use SET SESSION AUTHORIZATION* to the *Yes*
|
||||
position to include a statement that will use a SET SESSION AUTHORIZATION
|
||||
command to determine object ownership (instead of an ALTER OWNER command).
|
||||
|
||||
@@ -177,9 +177,9 @@ tab to provide other backup options.
|
||||
* Use the *Extra float digits* field to use the specified value when dumping
|
||||
floating-point data, instead of the maximum available precision.
|
||||
|
||||
* Use the *Lock wait timeout* field to do not wait forever to acquire shared
|
||||
table locks at the beginning of the dump. Instead, fail if unable to lock a
|
||||
table within the specified timeout.
|
||||
* Use the *Lock wait timeout* field to specify a timeout rather than waiting
|
||||
indefinitely to acquire shared table locks at the beginning of the dump.
|
||||
If unable to lock a table within the specified timeout, the operation will fail.
|
||||
|
||||
When you’ve specified the details that will be incorporated into the pg_dumpall
|
||||
command:
|
||||
@@ -189,6 +189,6 @@ command:
|
||||
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
|
||||
pgAdmin will run the backup process in background. You can view all the background
|
||||
process with there running status and logs on the :ref:`Processes <processes>`
|
||||
tab
|
||||
pgAdmin will run the backup process in the background. You can view all the background
|
||||
processes with their running status and logs on the :ref:`Processes <processes>`
|
||||
tab.
|
||||
@@ -91,8 +91,8 @@ button to deploy the instance on Amazon RDS.
|
||||
|
||||
Once you click on the finish, one background process will start which will
|
||||
deploy the instance in the cloud and monitor the progress of the deployment.
|
||||
You can view all the background process with there running status and logs
|
||||
on the :ref:`Processes <processes>` tab
|
||||
You can view all the background processes with their running status and logs
|
||||
on the :ref:`Processes <processes>` tab.
|
||||
|
||||
The Server will be added to the tree with the cloud deployment icon. Once the
|
||||
deployment is done, the server details will be updated.
|
||||
@@ -107,8 +107,8 @@ button to deploy the instance on Azure Database.
|
||||
|
||||
Once you click on the finish, one background process will start which will
|
||||
deploy the instance in the cloud and monitor the progress of the deployment.
|
||||
You can view all the background process with there running status and logs
|
||||
on the :ref:`Processes <processes>` tab
|
||||
You can view all the background processes with their running status and logs
|
||||
on the :ref:`Processes <processes>` tab.
|
||||
|
||||
.. image:: images/cloud_azure_bg_process_watcher.png
|
||||
:alt: Cloud Deployment
|
||||
|
||||
|
Before Width: | Height: | Size: 97 KiB |
@@ -4,9 +4,9 @@
|
||||
`PostgreSQL Cloud Deployment`:index:
|
||||
*************************************
|
||||
|
||||
A PostgreSQL server can be deployed on the Amazon, EDB BigAnimal, Azure,
|
||||
Google cloud using this module. In future more cloud provider options will
|
||||
be available.
|
||||
A PostgreSQL server can be deployed on the Amazon, Azure, Google cloud
|
||||
using this module. In future more cloud provider options will be
|
||||
available.
|
||||
|
||||
To launch the *Cloud Deployment...* tool, right click on the *Server Group* or
|
||||
*Server* of the tree control, and select *Deploy a Cloud Instance* from the
|
||||
@@ -16,6 +16,5 @@ To launch the *Cloud Deployment...* tool, right click on the *Server Group* or
|
||||
:maxdepth: 2
|
||||
|
||||
cloud_aws_rds
|
||||
cloud_edb_biganimal
|
||||
cloud_azure_database
|
||||
cloud_google_cloud_sql
|
||||
@@ -1,110 +0,0 @@
|
||||
.. _cloud_edb_biganimal:
|
||||
|
||||
******************************************
|
||||
`EDB BigAnimal Cloud Deployment`:index:
|
||||
******************************************
|
||||
|
||||
To deploy a PostgreSQL server on the EDB BigAnimal cloud, follow the below steps.
|
||||
|
||||
.. image:: images/cloud_provider_for_postgresql.png
|
||||
:alt: Cloud Deployment Provider
|
||||
:align: center
|
||||
|
||||
Once you launch the tool, select the EDB BigAnimal option.
|
||||
Click on the *Next* button to proceed further.
|
||||
|
||||
.. image:: images/cloud_biganimal_credentials.png
|
||||
:alt: Cloud Deployment Provider
|
||||
:align: center
|
||||
|
||||
The next steps is to authenticate the user to EDB BigAninal.
|
||||
Click the given button to authenticate, by clicking the button, the user
|
||||
will be redirected to the new tab for the verification.
|
||||
Once you confirm the one time code, the pgAdmin will automatically detect it
|
||||
and the next button will be enabled. To proceed further, click on the next button.
|
||||
|
||||
.. image:: images/cloud_biganimal_cluster.png
|
||||
:alt: Cloud Deployment Provider
|
||||
:align: center
|
||||
|
||||
* Use the *Project* field to choose a project in your Biganimal account.
|
||||
|
||||
* Use the *Cluster type* field to choose a cluster type.
|
||||
|
||||
* Use the *No. of Standby Replicas* field to specify the replicas if you have selected the High Availability cluster.
|
||||
|
||||
* Use the *Cluster provider* field to choose the provider.
|
||||
|
||||
|
||||
.. image:: images/cloud_biganimal_instance.png
|
||||
:alt: Cloud Deployment Provider
|
||||
:align: center
|
||||
|
||||
Use the fields from the Instance Specification tab to specify the Instance
|
||||
details.
|
||||
|
||||
* Use the *Cluster name* field to add a cluster name for the PostgreSQL
|
||||
server; the name specified will be displayed in the *Object Explorer* too.
|
||||
|
||||
* Use the *Region* field to select the region.
|
||||
|
||||
* Use the *Public IP range* field to specify the IP Address range for permitting the
|
||||
inbound traffic. Leave it blank for 0.0.0.0/0
|
||||
|
||||
* Use the *Instance type* field to select the instance type.
|
||||
|
||||
* Use the *Instance series* field to select the instance series.
|
||||
|
||||
* Use the *Instance size* field to allocate the computational, network, and
|
||||
memory capacity required by planned workload of this DB instance.
|
||||
|
||||
* Use the *Volume type* field to select the instance storage type.
|
||||
|
||||
* Use the *Volume properties* field to specify the storage capacity. This field is specific to Azure.
|
||||
|
||||
* Use the *Volume size* field to specify the storage size. This field is specific to AWS.
|
||||
|
||||
* Use the *Volume IOPS* field to specify the storage IOPS. This field is specific to AWS.
|
||||
|
||||
* Use the *Disk throughput* field to specify the disk throughput. This field is specific to AWS.
|
||||
|
||||
|
||||
.. image:: images/cloud_biganimal_database.png
|
||||
:alt: Cloud Deployment Provider
|
||||
:align: center
|
||||
|
||||
Use the fields from the Database Details tab to specify the Instance details.
|
||||
|
||||
* Use the drop-down list box in the *Server group* field to select the parent
|
||||
node for the server; the server will be displayed in the *Object Explorer*
|
||||
within the specified group.
|
||||
|
||||
* Use the *Database type* field to specify the PostgreSQL
|
||||
type, EnterpriseDB PostgreSQL Advanced Server or PostgreSQL.
|
||||
|
||||
* Use the *PostgreSQL version* field to select the database version.
|
||||
|
||||
* Use the *Database Password* field to provide a password that will be supplied when
|
||||
authenticating with the server.
|
||||
|
||||
* Use the *Confirm password* field to repeat the password.
|
||||
|
||||
|
||||
.. image:: images/cloud_biganimal_review.png
|
||||
:alt: Cloud Deployment Provider
|
||||
:align: center
|
||||
|
||||
At the end, review the Cluster details that you provided. Click on Finish
|
||||
button to deploy the instance on EDB BigAnimal.
|
||||
|
||||
.. image:: images/cloud_deployment_tree.png
|
||||
:alt: Cloud Deployment Provider
|
||||
:align: center
|
||||
|
||||
Once you click on the finish, one background process will start which will
|
||||
deploy the instance in the cloud and monitor the progress of the deployment.
|
||||
You can view all the background process with there running status and logs
|
||||
on the :ref:`Processes <processes>` tab
|
||||
|
||||
The Server will be added to the tree with the cloud deployment icon. Once the
|
||||
deployment is done, the server details will be updated.
|
||||
@@ -105,8 +105,8 @@ button to deploy the instance on Azure PostgreSQL.
|
||||
|
||||
Once you click on the finish, one background process will start which will
|
||||
deploy the instance in the cloud and monitor the progress of the deployment.
|
||||
You can view all the background process with there running status and logs
|
||||
on the :ref:`Processes <processes>` tab
|
||||
You can view all the background processes with their running status and logs
|
||||
on the :ref:`Processes <processes>` tab.
|
||||
|
||||
|
||||
The Server will be added to the tree with the cloud deployment icon. Once the
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
The bulk of pgAdmin is a Python web application written using the Flask framework
|
||||
on the backend, and HTML5 with CSS3,ReactJS on the front end. A
|
||||
desktop runtime is also included for users that prefer a desktop application to
|
||||
a web application, which is written using NWjs (Node Webkit).
|
||||
a web application, which is written using Electron.
|
||||
|
||||
Runtime
|
||||
*******
|
||||
|
||||
The runtime is based on NWjs which integrates a browser and the Python server
|
||||
The runtime is based on Electron which integrates a browser and the Python server
|
||||
creating a standalone application. The source code can be found in the
|
||||
**/runtime** directory in the source tree.
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ review process for any changes submitted for inclusion in pgAdmin.
|
||||
bulk updates every year). The start date should always be 2013, and the end year
|
||||
the current year, e.g.
|
||||
|
||||
Copyright (C) 2013 - 2024, The pgAdmin Development Team
|
||||
Copyright (C) 2013 - 2026, The pgAdmin Development Team
|
||||
|
||||
* Ensure there's a blank line immediately following any copyright headers.
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ with the required file header is shown below::
|
||||
#
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2024, The pgAdmin Development Team
|
||||
# Copyright (C) 2013 - 2026, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
@@ -40,6 +40,9 @@ settings:
|
||||
as the existing one, but will be an independent object. If you choose to copy
|
||||
an existing collation, you cannot modify the collation properties displayed on
|
||||
this tab.
|
||||
* Use the drop-down listbox next to *Provider* to select a locale services associated
|
||||
with the collation. Possible values are: icu, libc and builtin.
|
||||
**Note:** The builtin option is available from v17 onwards.
|
||||
* Use the *Locale* field to specify a locale; a locale specifies language and
|
||||
language formatting characteristics. If you specify this, you cannot specify
|
||||
either of the following parameters. To view a list of locales supported by
|
||||
@@ -50,13 +53,11 @@ settings:
|
||||
* Use the *LC_CTYPE* field to specify a locale with specified character
|
||||
classification. The locale must be applicable to the current database encoding.
|
||||
(See CREATE DATABASE for details.)
|
||||
* Use the drop-down listbox next to *Locale Provider* to select a locale services associated
|
||||
with the collation. Possible values are: icu, libc. libc is the default.
|
||||
* Move the switch next to *Deterministic* to *YES* to specify whether the collation should use
|
||||
deterministic comparisons. By default, this option is set to true. In a
|
||||
deterministic comparison, strings that are not byte-wise equal are considered
|
||||
unequal, even if they are considered logically equal in the comparison.
|
||||
* Use the *Rules* field to specify a rules for customizing the behavior of the collation.
|
||||
* Use the *Rules* field to specify rules for customizing the behavior of the collation.
|
||||
It includes considerations such as character ordering, case sensitivity, and accent
|
||||
sensitivity.
|
||||
* Use the *Version* field to specify version string to store with the collation object.
|
||||
@@ -64,8 +65,8 @@ settings:
|
||||
|
||||
Click the *SQL* tab to continue.
|
||||
|
||||
Your entries in the *Collation* dialog generate a SQL command (see an example b
|
||||
elow). Use the *SQL* tab for review; revisit or switch tabs to make any changes
|
||||
Your entries in the *Collation* dialog generate a SQL command (see an example
|
||||
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
|
||||
to the SQL command.
|
||||
|
||||
Example
|
||||
@@ -79,7 +80,7 @@ the *Collation* dialog:
|
||||
:align: center
|
||||
|
||||
The example shown demonstrates creating a collation named *french* that uses the
|
||||
rules specified for the locale, *fr-BI-x-icu. The collation is owned by
|
||||
rules specified for the locale, *fr-BI-x-icu*. The collation is owned by
|
||||
*postgres*.
|
||||
|
||||
* Click the *Info* button (i) to access online help. For more information about
|
||||
|
||||
@@ -144,7 +144,7 @@ the *Add* icon (+) to add each security label selection:
|
||||
|
||||
* Specify a security label provider in the *Provider* field. The named provider
|
||||
must be loaded and must consent to the proposed labeling operation.
|
||||
* Specify a a security label in the *Security Label* field. The meaning of a
|
||||
* Specify a security label in the *Security Label* field. The meaning of a
|
||||
given label is at the discretion of the label provider. PostgreSQL places no
|
||||
restrictions on whether or how a label provider must interpret security
|
||||
labels; it merely provides a mechanism for storing them.
|
||||
|
||||
@@ -239,6 +239,14 @@ latex_documents = [
|
||||
# https://groups.google.com/forum/#!topic/sphinx-users/ZlQ95_QikXo
|
||||
latex_elements = {
|
||||
'fncychap': r'\usepackage[Sonny]{fncychap}',
|
||||
# pdflatex's default utf8 inputenc covers Latin-1/Latin-Extended-A but
|
||||
# not the Vietnamese precomposed code points that appear in CVE
|
||||
# reporter names. Declare the specific characters we use rather than
|
||||
# switching engines.
|
||||
'preamble': r'''
|
||||
\DeclareUnicodeCharacter{1EA1}{\d{a}}
|
||||
\DeclareUnicodeCharacter{1EC1}{\`{\^e}}
|
||||
''',
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -53,11 +53,12 @@ The default binary paths set in the container are as follows:
|
||||
.. code-block:: bash
|
||||
|
||||
DEFAULT_BINARY_PATHS = {
|
||||
'pg-18': '/usr/local/pgsql-18',
|
||||
'pg-17': '/usr/local/pgsql-17',
|
||||
'pg-16': '/usr/local/pgsql-16',
|
||||
'pg-15': '/usr/local/pgsql-15',
|
||||
'pg-14': '/usr/local/pgsql-14',
|
||||
'pg-13': '/usr/local/pgsql-13',
|
||||
'pg-12': '/usr/local/pgsql-12'
|
||||
'pg-13': '/usr/local/pgsql-13'
|
||||
}
|
||||
|
||||
this may be changed in the :ref:`preferences`.
|
||||
@@ -134,6 +135,14 @@ Override the default file path for the server definition list. See the
|
||||
/pgadmin4/servers.json mapped file below for more information. See the format
|
||||
of the `Servers JSON file <https://www.pgadmin.org/docs/pgadmin4/latest/import_export_servers.html#json-format>`_.
|
||||
|
||||
**PGADMIN_REPLACE_SERVERS_ON_STARTUP**
|
||||
|
||||
*Default: null*
|
||||
|
||||
By default, the server definitions are only loaded on first launch, i.e. when initializing the configuration database. See PGADMIN_SERVER_JSON_FILE above.
|
||||
|
||||
If this variable is set to True, the server definitions will be replaced on every launch. This can be used to declaratively manage the server definitions.
|
||||
|
||||
**PGADMIN_PREFERENCES_JSON_FILE**
|
||||
|
||||
*Default: /pgadmin4/preferences.json*
|
||||
@@ -142,6 +151,22 @@ Override the default file path for the preferences customization at the containe
|
||||
/pgadmin4/preferences.json mapped file below for more information. See the format
|
||||
of the `Preferences JSON file <https://www.pgadmin.org/docs/pgadmin4/latest/preferences.html#json-format>`_.
|
||||
|
||||
**PGADMIN_CUSTOM_CONFIG_DISTRO_FILE**
|
||||
|
||||
*Default: /pgadmin4/config_distro.py*
|
||||
|
||||
Override the default file path for the pgadmin configurations file.This can be used while provisioning
|
||||
container with read only root file system to achieve a more secure pgadmin4 deployment for kubernetes.
|
||||
Note that if you are externally mapping this file, then environment variables passed using *PGADMIN_CONFIG_*
|
||||
suffix will be ignored.
|
||||
|
||||
**PGPASS_FILE**
|
||||
|
||||
*Default: <null>*
|
||||
Set this variable to the path of a pgpass file if you want to supply passwords
|
||||
for the servers added in pgAdmin. On startup, the file is copied into the
|
||||
container and used as the ``.pgpass`` file.
|
||||
|
||||
**GUNICORN_ACCESS_LOGFILE**
|
||||
|
||||
*Default: -* (stdout)
|
||||
@@ -296,6 +321,44 @@ Run a TLS secured container using a shared config/storage directory in
|
||||
-e 'PGADMIN_ENABLE_TLS=True' \
|
||||
-d dpage/pgadmin4
|
||||
|
||||
Restricted Security Contexts (OpenShift, ``--cap-drop=ALL``)
|
||||
************************************************************
|
||||
|
||||
Some platforms refuse to honor Linux file capabilities. The two situations
|
||||
the pgAdmin container handles automatically are:
|
||||
|
||||
- ``--cap-drop=ALL`` (or an equivalent restricted Kubernetes SecurityContext
|
||||
such as OpenShift's ``restricted-v2`` SCC), which zeros the bounding set
|
||||
and removes ``CAP_NET_BIND_SERVICE``. Exec of a capability-tagged binary
|
||||
then fails with ``Operation not permitted``.
|
||||
|
||||
- ``--security-opt=no-new-privileges`` (or
|
||||
``allowPrivilegeEscalation: false``), which causes the kernel to silently
|
||||
strip file capabilities on exec. The binary runs, but a subsequent
|
||||
``bind()`` to a port below 1024 fails with ``EPERM``.
|
||||
|
||||
The container's entrypoint reads ``/proc/self/status`` at startup, detects
|
||||
either condition, switches gunicorn to the non-capability python
|
||||
interpreter, and (when *PGADMIN_LISTEN_PORT* is not set) defaults the
|
||||
listen port to **8080** for plain HTTP and **8443** for TLS instead of
|
||||
80/443. A message is logged so the choice is visible.
|
||||
|
||||
In practice this means a typical OpenShift deployment requires no special
|
||||
build, no setcap, and no custom configuration — only a Service / Route
|
||||
that targets the chosen non-privileged port:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
docker run --rm -p 8080:8080 \
|
||||
--security-opt=no-new-privileges \
|
||||
--cap-drop=ALL \
|
||||
-e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \
|
||||
-e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \
|
||||
dpage/pgadmin4
|
||||
|
||||
If you explicitly set *PGADMIN_LISTEN_PORT*, that value is honored in both
|
||||
the restricted and unrestricted paths.
|
||||
|
||||
Reverse Proxying
|
||||
****************
|
||||
|
||||
@@ -502,3 +565,84 @@ the container is typically launched per the example below:
|
||||
-e "SCRIPT_NAME=/pgadmin4" \
|
||||
-l "traefik.frontend.pgadmin4.rule=Host(`host.example.com`) && PathPrefix(`/pgadmin4`)" \
|
||||
-d dpage/pgadmin4
|
||||
|
||||
Sharing the data volume across containers (Kubernetes init containers)
|
||||
----------------------------------------------------------------------
|
||||
|
||||
A common Kubernetes pattern is to bootstrap a pgAdmin deployment with one or
|
||||
more init containers that share the ``/var/lib/pgadmin`` volume with the main
|
||||
pgAdmin container — for example, an init container that runs
|
||||
``setup.py load-servers`` to import a ``servers.json`` definition file at
|
||||
each rollout.
|
||||
|
||||
**The image tag of any such sidecar/init container must NOT be newer than
|
||||
the main pgAdmin container's tag.** pgAdmin's configuration database
|
||||
(``pgadmin4.db``) is migrated forward only — destructive operations such as
|
||||
dropping a column are part of normal upgrades. If an init container running
|
||||
``pgadmin4:latest`` (or any newer tag) executes ``setup.py`` against a
|
||||
``pgadmin4.db`` that the main, older pgAdmin will then read, the init
|
||||
container's migrations will advance the schema past what the main container's
|
||||
ORM understands, and the main container will fail at runtime with errors
|
||||
like ``no such column: <table>.<column>``.
|
||||
|
||||
The safe configuration is to pin **both** the main container and every
|
||||
sidecar/init container that touches the data volume to the **same**
|
||||
explicit version tag, and upgrade them together:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Deployment manifest (spec.template.spec): pin every container that
|
||||
# touches the data volume to the same explicit tag. Do NOT use :latest.
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
initContainers:
|
||||
- name: import-servers-json
|
||||
image: docker.io/dpage/pgadmin4:9.14 # match the main container
|
||||
# ... rest of the init container spec ...
|
||||
containers:
|
||||
- name: pgadmin
|
||||
image: docker.io/dpage/pgadmin4:9.14 # main pgAdmin container
|
||||
|
||||
If you deploy pgAdmin with a Helm chart, set the equivalent image-tag values
|
||||
for both the main container and every init/sidecar container rather than the
|
||||
raw fields shown above. When upgrading pgAdmin, change every reference to the
|
||||
image tag at the same time so that the main container and any sidecar/init
|
||||
containers move forward together.
|
||||
|
||||
Use ``strategy: Recreate``, not ``RollingUpdate``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Even when every container's image tag is pinned correctly, **a rolling
|
||||
upgrade across pgAdmin versions is unsafe** when the old and new pods share
|
||||
a data volume. Kubernetes' default ``RollingUpdate`` strategy starts the
|
||||
new pod, waits for it to become healthy, and only *then* terminates the
|
||||
old pod. During that overlap window:
|
||||
|
||||
1. The new pod's startup runs ``db_upgrade()`` and applies any pending
|
||||
migrations to the shared ``pgadmin4.db`` — including destructive ones
|
||||
(column drops, table renames, type changes).
|
||||
2. The new pod becomes healthy. The old pod is still alive and still has
|
||||
``pgadmin4.db`` open with its older ORM schema metadata.
|
||||
3. Until Kubernetes terminates the old pod, requests routed to it
|
||||
generate queries that reference the pre-migration schema. Those
|
||||
queries now fail at runtime against the migrated database — for
|
||||
example, ``no such column: <table>.<column>`` when a column was
|
||||
dropped in this release.
|
||||
|
||||
Because pgAdmin's migrations are forward-only with single-step destructive
|
||||
operations (a column dropped in release N+1 is gone immediately, not after
|
||||
a deprecation cycle), there is no safe way for an N-version pod to keep
|
||||
serving against a migrated N+1 schema. Set the deployment strategy to
|
||||
``Recreate``, which terminates the old pod *before* starting the new one:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
spec:
|
||||
strategy:
|
||||
type: Recreate # not RollingUpdate
|
||||
|
||||
The trade-off is a few seconds of downtime during each upgrade, in
|
||||
exchange for not serving traffic from a pod whose ORM is misaligned with
|
||||
the database schema underneath it. This is the supported upgrade
|
||||
strategy for pgAdmin K8s deployments today.
|
||||
@@ -44,8 +44,9 @@ Use the *Definition* tab to set properties for the database:
|
||||
* Select the strategy from the drop-down listbox in the *Strategy* field while
|
||||
creating a new database. This option is available from v15 and above.
|
||||
* Select the locale provider from the drop-down listbox in the *Locale Provider*
|
||||
field to set the default collation for this database. Possible values are: icu, libc.
|
||||
This option is available from v15 and above.
|
||||
field to set the default collation for this database. Possible values are: icu, libc and builtin.
|
||||
This option is available from v15 and above. **Note:** The icu and libc options are available
|
||||
from v15 and builtin option is available from v17 onwards.
|
||||
* Select the collation order from the drop-down listbox in the *Collation* field.
|
||||
* Select the character classification from the drop-down listbox in the
|
||||
*Character Type* field. This affects the categorization of characters, e.g.
|
||||
@@ -57,10 +58,12 @@ Use the *Definition* tab to set properties for the database:
|
||||
* Specify the icu rules in the *ICU Rules* field as additional collation
|
||||
rules to customize the behavior of the default collation of this database.
|
||||
This option is available from v16 and above.
|
||||
* Select the builtin locale from the drop-down listbox in the *Builtin Locale* if the
|
||||
builtin locale provider is used. This option is available from v17 and above.
|
||||
* Specify a connection limit in the *Connection Limit* field to configure the
|
||||
maximum number of connection requests. The default value (*-1*) allows
|
||||
unlimited connections to the database.
|
||||
* If the *templates?* is set to true, then database will be a template database.
|
||||
* If *Template?* is set to *Yes*, the database will be a template database.
|
||||
|
||||
Click the *Security* tab to continue.
|
||||
|
||||
@@ -86,7 +89,7 @@ database. Click the *Add* icon (+) to add each security label selection:
|
||||
|
||||
* Specify a security label provider in the *Provider* field. The named provider
|
||||
must be loaded and must consent to the proposed labeling operation.
|
||||
* Specify a a security label in the *Security Label* field. The meaning of a
|
||||
* Specify a security label in the *Security Label* field. The meaning of a
|
||||
given label is at the discretion of the label provider. PostgreSQL places no
|
||||
restrictions on whether or how a label provider must interpret security
|
||||
labels; it merely provides a mechanism for storing them.
|
||||
@@ -122,8 +125,8 @@ Use the *Advanced* tab to set advanced parameters for the database.
|
||||
|
||||
* Use *Schema restriction* field to provide a SQL restriction that will be used
|
||||
against the pg_namespace table to limit the schemas that you see.
|
||||
For example, you might enter: *public* so that only *public* are shown in
|
||||
the pgAdmin browser.Separate entries with a comma or tab as you type.
|
||||
For example, you might enter: *public* so that only *public* is shown in
|
||||
the pgAdmin browser. Separate entries with a comma or tab as you type.
|
||||
|
||||
Click the *SQL* tab to continue.
|
||||
|
||||
|
||||
@@ -36,43 +36,34 @@ See :ref:`config_py` for more information on configuration settings.
|
||||
Desktop Runtime Standalone Application
|
||||
======================================
|
||||
|
||||
The Desktop Runtime is based on `NWjs <https://nwjs.io/>`_ which integrates a
|
||||
The Desktop Runtime is based on `Electron <https://www.electronjs.org/>`_ which integrates a
|
||||
browser and the Python server creating a standalone application.
|
||||
|
||||
.. image:: images/runtime_standalone.png
|
||||
:alt: Runtime Standalone
|
||||
:align: center
|
||||
|
||||
Runtime Menu
|
||||
------------
|
||||
Runtime Menu Items
|
||||
------------------
|
||||
|
||||
.. image:: images/runtime_menu.png
|
||||
:alt: Runtime Menu
|
||||
:align: center
|
||||
|
||||
Use the *File Menu* to access the *Runtime Menu*:
|
||||
Use the *File Menu* to access the runtime menu items:
|
||||
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| Option | Action |
|
||||
+=========================+=========================================================================================================+
|
||||
| *Configure...* | Click to open configuration dialog to configure fixed port, port number and connection timeout. |
|
||||
| *View logs...* | Click to open the view log dialog to view the pgAdmin 4 logs. |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| *View log...* | Click to open the view log dialog to view the pgAdmin 4 logs. |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| *Enter Full Screen* | Click to enter/exit the full screen mode. Keyboard Shortcuts: OSX (Cmd + Ctrl + F), Other OS (F10). |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| *Actual Size* | Click to change the window size to it original size. Keyboard Shortcuts: OSX (Cmd + 0), |
|
||||
| | Other OS (Ctrl + 0). |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| *Zoom In* | Click to increase the zoom level. Keyboard Shortcuts: OSX (Cmd + +), Other OS (Ctrl + +). |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| *Zoom Out* | Click to decrease the zoom level. Keyboard Shortcuts: OSX (Cmd + -), Other OS (Ctrl + -). |
|
||||
| *Configure runtime...* | Click to open configuration dialog to configure fixed port, port number and connection timeout. |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
|
||||
Configuration Dialog
|
||||
--------------------
|
||||
|
||||
Use the *Runtime Menu* to access the *Configuration* dialog:
|
||||
Use the *Configure runtime...* option to access the *Configuration* dialog:
|
||||
|
||||
.. image:: images/runtime_configuration.png
|
||||
:alt: Runtime Configuration
|
||||
@@ -101,7 +92,7 @@ Timeout*, and 'Open Documentation in Default Browser?' configuration parameters:
|
||||
Log dialog
|
||||
----------
|
||||
|
||||
Use the *Runtime Menu* to access the *Log* dialog:
|
||||
Use the *File Menu* to access the *View Logs* dialog:
|
||||
|
||||
.. image:: images/runtime_view_log.png
|
||||
:alt: Runtime View Log
|
||||
@@ -137,3 +128,10 @@ The configuration settings are stored in *runtime_config.json* file, which
|
||||
will be available on Unix systems (~/.local/share/pgadmin/),
|
||||
on Mac OS X (~/Library/Preferences/pgadmin),
|
||||
and on Windows (%APPDATA%/pgadmin).
|
||||
|
||||
For details on the auto-update system for the desktop application, see
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
auto_update_desktop_app
|
||||
@@ -17,3 +17,4 @@ PL/SQL code.
|
||||
schema_diff
|
||||
erd_tool
|
||||
psql_tool
|
||||
ai_tools
|
||||
@@ -0,0 +1,87 @@
|
||||
.. _directory_dialog:
|
||||
|
||||
*************************
|
||||
`Directory Dialog`:index:
|
||||
*************************
|
||||
|
||||
Use the Directory dialog to create an alias for a file system directory path.
|
||||
To create directories, you must have the CREATE ANY DIRECTORY system privilege.
|
||||
When you create a directory, you are automatically granted READ and WRITE privileges
|
||||
on the directory, and you can grant READ and WRITE privileges to other users and roles.
|
||||
The superuser can also grant these privileges to other users and roles.
|
||||
|
||||
Please note that directories are supported when connected to EDB Postgres Advanced Server.
|
||||
For more information about using directories, please see the EDB Postgres Advanced Server Guide, available at:
|
||||
|
||||
https://www.enterprisedb.com/docs/epas/latest/epas_compat_sql/
|
||||
|
||||
|
||||
The *Directory* dialog organizes the definition of a directory through the
|
||||
following tabs: *General*, *Definition*, *Security*, and *SQL*.
|
||||
The *SQL* tab displays the SQL code generated by dialog selections.
|
||||
|
||||
.. image:: images/directory_general.png
|
||||
:alt: Directory general tab
|
||||
:align: center
|
||||
|
||||
Use the fields on the *General* tab to specify directory attributes:
|
||||
|
||||
* Use the *Name* field to add a directory alias name. This name will be displayed in the object explorer.
|
||||
* Select the owner of the directory from the drop-down listbox in the *Owner*
|
||||
field.
|
||||
|
||||
Click the *Definition* tab to continue.
|
||||
|
||||
.. image:: images/directory_definition.png
|
||||
:alt: Directory dialog definition tab
|
||||
:align: center
|
||||
|
||||
* Use the *Location* field to specify a fully qualified directory path represented
|
||||
by the alias name. The CREATE DIRECTORY command doesn't create the operating system directory.
|
||||
The physical directory must be created independently using operating system commands.
|
||||
|
||||
Click the *Security* tab to continue.
|
||||
|
||||
.. image:: images/directory_security.png
|
||||
:alt: Directory dialog security tab
|
||||
:align: center
|
||||
|
||||
NOTE:- This *Security* tab will be only available for EPAS 17.
|
||||
|
||||
Use the *Security* tab to assign privileges for the directory.
|
||||
|
||||
Use the *Privileges* panel to assign security privileges. Click the *Add* icon
|
||||
(+) to assign a set of privileges:
|
||||
|
||||
* Select the name of the role from the drop-down listbox in the *Grantee* field.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privileges to the specified user.
|
||||
|
||||
Click the *Add* icon to assign additional sets of privileges; to discard a
|
||||
privilege, click the trash icon to the left of the row and confirm deletion in
|
||||
the *Delete Row* popup.
|
||||
|
||||
Click the *SQL* tab to continue.
|
||||
|
||||
Your entries in the *Directory* dialog generate a SQL command (see an example
|
||||
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
|
||||
to the SQL command.
|
||||
|
||||
Example
|
||||
*******
|
||||
|
||||
The following is an example of the sql command generated by user selections in
|
||||
the *Directory* dialog:
|
||||
|
||||
.. image:: images/directory_sql.png
|
||||
:alt: Directory dialog sql tab
|
||||
:align: center
|
||||
|
||||
The example shown demonstrates creating a directory named *test1*. It has a
|
||||
*location* value equal to */home/test_dir*.
|
||||
|
||||
* Click the *Info* button (i) to access online help.
|
||||
* Click the *Save* button to save work.
|
||||
* Click the *Close* button to exit without saving work.
|
||||
* Click the *Reset* button to restore configuration parameters.
|
||||
@@ -89,7 +89,7 @@ Use the *Security Labels* panel to assign security labels. Click the *Add* icon
|
||||
|
||||
* Specify a security label provider in the *Provider* field. The named provider
|
||||
must be loaded and must consent to the proposed labeling operation.
|
||||
* Specify a a security label in the *Security Label* field. The meaning of a
|
||||
* Specify a security label in the *Security Label* field. The meaning of a
|
||||
given label is at the discretion of the label provider. PostgreSQL places no
|
||||
restrictions on whether or how a label provider must interpret security
|
||||
labels; it merely provides a mechanism for storing them.
|
||||
|
||||
@@ -49,7 +49,7 @@ To modify the displayed data:
|
||||
* To change a numeric value within the grid, double-click the value to select
|
||||
the field. Modify the content in the square in which it is displayed.
|
||||
* To change a non-numeric value within the grid, double-click the content to
|
||||
access the edit bubble. After modifying the contentof the edit bubble, click
|
||||
access the edit bubble. After modifying the content of the edit bubble, click
|
||||
the *Ok* button to display your changes in the data grid, or *Cancel* to
|
||||
exit the edit bubble without saving.
|
||||
|
||||
@@ -62,7 +62,7 @@ table. As soon as you store the data, the row is assigned a row number, and a
|
||||
fresh empty line is added to the data grid.
|
||||
|
||||
To write a SQL NULL to the table, simply leave the field empty. When you store
|
||||
the new row, the will server fill in the default value for that column. If you
|
||||
the new row, the server will fill in the default value for that column. If you
|
||||
store a change to an existing row, the value NULL will explicitly be written.
|
||||
|
||||
To write an empty string to the table, enter the special string '' (two single
|
||||
@@ -110,9 +110,9 @@ properties of the geometries directly in map, just click the specific geometry:
|
||||
|
||||
**JSON Data Editor**
|
||||
|
||||
A built in json editor is provided for *JSON/JSONB Data*.Double clicking on json/jsonb
|
||||
data type cell in data grid will open JSON Editor.Editor provides different mode to
|
||||
view and edit json data.
|
||||
A built-in JSON editor is provided for *JSON/JSONB Data*. Double-clicking on a JSON/JSONB
|
||||
data type cell in the data grid will open the JSON Editor. The editor provides different modes to
|
||||
view and edit JSON data.
|
||||
|
||||
|
||||
.. image:: images/json_editor_modes.png
|
||||
@@ -120,21 +120,21 @@ view and edit json data.
|
||||
:align: center
|
||||
|
||||
*Code Mode*:
|
||||
Provides way to format & compact json data.Also provides ability to repair json data
|
||||
by fixing quotes and escape characters, removing comments and JSONP notation and
|
||||
turn JavaScript objects into JSON.
|
||||
Provides a way to format and compact JSON data. Also provides the ability to repair JSON data
|
||||
by fixing quotes and escape characters, removing comments and JSONP notation, and
|
||||
turning JavaScript objects into JSON.
|
||||
|
||||
*Tree Mode*:
|
||||
Enabled to change, add, move, remove, and duplicate fields and values.Provides ability
|
||||
to searh & hilight data.
|
||||
Enables changing, adding, moving, removing, and duplicating fields and values. Provides the ability
|
||||
to search and highlight data.
|
||||
|
||||
*Form Mode*:
|
||||
Allows only to edit values in json data there by providing ability to keep data structure
|
||||
Allows editing only the values in JSON data, thereby providing the ability to keep the data structure
|
||||
unchanged while editing.
|
||||
|
||||
*Preview Mode*:
|
||||
Provides ability to check data before saving and also shows size of current json data.
|
||||
Format and compact json data as well.
|
||||
Provides the ability to check data before saving and also shows the size of the current JSON data.
|
||||
Allows formatting and compacting JSON data as well.
|
||||
|
||||
|
||||
*Editor Toolbar*
|
||||
@@ -170,18 +170,18 @@ Tree/Form mode:
|
||||
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
|
||||
| *Transform* | Click to *Transform* to filter data using JSME query language. | Code, Preview, Tree |
|
||||
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
|
||||
| *Undo* | Click to *Undo* to undo last action performed on data . | Code, Preview, Tree, From |
|
||||
| *Undo* | Click to *Undo* to undo last action performed on data. | Code, Preview, Tree, Form |
|
||||
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
|
||||
| *Redo* | Click to *Redo* to repat last action performed on data . | Code, Preview, Tree, From |
|
||||
| *Redo* | Click to *Redo* to repeat last action performed on data. | Code, Preview, Tree, Form |
|
||||
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
|
||||
| *Mode* | Click to *Mode* dropdown to change dipaly mode of editor.Different modes avaialble | Code, Tree, From, Preview |
|
||||
| | are Code, Preview, Tree, From. | |
|
||||
| *Mode* | Click the *Mode* dropdown to change the display mode of the editor. Different modes | Code, Tree, Form, Preview |
|
||||
| | available are Code, Preview, Tree, and Form. | |
|
||||
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
|
||||
| *Expand All* | Click to *Expand All* to expand json data. | Tree, From |
|
||||
| *Expand All* | Click *Expand All* to expand JSON data. | Tree, Form |
|
||||
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
|
||||
| *Collapse All* | Click to *Redo* to collapse json data. | Tree, From |
|
||||
| *Collapse All* | Click *Collapse All* to collapse JSON data. | Tree, Form |
|
||||
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
|
||||
| *Search Box* | Enter partial/complete string to search in data. | Tree, From |
|
||||
| *Search Box* | Enter partial/complete string to search in data. | Tree, Form |
|
||||
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
|
||||
|
||||
|
||||
@@ -212,6 +212,7 @@ To add new column(s) in data sorting grid, click on the [+] icon.
|
||||
|
||||
* Use the drop-down *Column* to select the column you want to sort.
|
||||
* Use the drop-down *Order* to select the sort order for the column.
|
||||
* Use the drop-down *NULLs* to select the NULL values order for the column.
|
||||
|
||||
To delete a row from the grid, click the trash icon.
|
||||
|
||||
@@ -234,6 +235,6 @@ A View/Edit Data tab can be converted to a Query Tool Tab just by editing the qu
|
||||
:alt: Promote View/Edit Data tab to Query Tool tab warning
|
||||
:align: center
|
||||
|
||||
You can disable the dialog by selecting the "Don't Ask again" checkbox. If you wish to resume the confirmation dialog, you can do it from "Prefrences -> Query Tool -> Editor -> Show View/Edit Data Promotion Warning?"
|
||||
You can disable the dialog by selecting the "Don't Ask again" checkbox. If you wish to resume the confirmation dialog, you can do it from "Preferences -> Query Tool -> Editor -> Show View/Edit Data Promotion Warning?"
|
||||
|
||||
Once you chose to continue, you won't be able to use the features of View/Edit mode like the filter and sorting options, limit, etc. It is a one-way conversion. It will be a query tool now.
|
||||
@@ -72,7 +72,7 @@ Export Options
|
||||
| | You can select the option *With DROP Table* if you wish to have DROP Table DDL statements before | |
|
||||
| | each CREATE Table DDL. You can see the option by clicking the down arrow beside the SQL button. | |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Download image* | Click the *Download image* icon to save the ERD diagram in a image formate | Option/Alt + |
|
||||
| *Download image* | Click the *Download image* icon to save the ERD diagram in an image format. | Option/Alt + |
|
||||
| | | Ctrl + I |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
|
||||
@@ -86,6 +86,9 @@ Editing Options
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| Icon | Behavior | Shortcut |
|
||||
+======================+===================================================================================================+================+
|
||||
| *Search table* | Click to search for a table in the diagram. Selecting a table from the search results will bring | Option/Alt + |
|
||||
| | it into view and highlight it. | Ctrl + F |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Add table* | Click this button to add a new table to the diagram. On clicking, this will open a table dialog | Option/Alt + |
|
||||
| | where you can put the table details. | Ctrl + A |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
@@ -109,11 +112,14 @@ Table Relationship Options
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| Icon | Behavior | Shortcut |
|
||||
+======================+===================================================================================================+================+
|
||||
| *1M* | Click this button to open a one-to-many relationship dialog to add a relationship between the | Option/Alt + |
|
||||
| *1-1* | Click this button to open a one-to-one relationship dialog to add a relationship between the | Option/Alt + |
|
||||
| | two tables. The selected table becomes the referencing table. | Ctrl + B |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *1-M* | Click this button to open a one-to-many relationship dialog to add a relationship between the | Option/Alt + |
|
||||
| | two tables. The selected table becomes the referencing table and will have the *many* endpoint of | Ctrl + O |
|
||||
| | the link. | |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *MM* | Click this button to open a many-to-many relationship dialog to add a relationship between the | Option/Alt + |
|
||||
| *M-M* | Click this button to open a many-to-many relationship dialog to add a relationship between the | Option/Alt + |
|
||||
| | two tables. This option will create a new table based on the selected columns for the two relating| Ctrl + M |
|
||||
| | tables and link them. | |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
@@ -129,7 +135,7 @@ Node Color Options
|
||||
| Icon | Behavior |
|
||||
+======================+==========================================================================================================+
|
||||
| *Fill Color* | Use Fill Color to change the background color of a table node. This is helpful if you want to |
|
||||
| | identify a of group tables. Once set, all the newly added tables will take the same color. |
|
||||
| | identify a group of tables. Once set, all the newly added tables will take the same color. |
|
||||
+----------------------+----------------------------------------------------------------------------------------------------------+
|
||||
| *Text Color* | Use Text Color to change the text color of a table node based on the fill color to make text |
|
||||
| | easily readable. |
|
||||
@@ -148,7 +154,7 @@ Utility Options
|
||||
| *Add/Edit note* | Click this button to make notes on tables nodes while designing the database. | Option/Alt + |
|
||||
| | | Ctrl + N |
|
||||
+-------------------------+------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Auto align* | Click this button to auto align all tables and links to make it look more cleaner. | Option/Alt + |
|
||||
| *Auto align* | Click this button to auto-align all tables and links to make them look cleaner. | Option/Alt + |
|
||||
| | | Ctrl + L |
|
||||
+-------------------------+------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Show details* | Click this button to toggle the column details visibility. It allows you to show few or more | Option/Alt + |
|
||||
@@ -188,7 +194,7 @@ Table Dialog
|
||||
The table dialog allows you to:
|
||||
|
||||
* Change the table structure details.
|
||||
* It can be used edit an existing table or add a new one.
|
||||
* It can be used to edit an existing table or add a new one.
|
||||
* Refer :ref:`table dialog <table_dialog>` for information on different fields.
|
||||
|
||||
Table Node
|
||||
@@ -200,13 +206,29 @@ Table Node
|
||||
|
||||
The table node shows table details in a graphical representation:
|
||||
|
||||
* The top bar has a *details toggle button* that is used to toggle column details visibility. There is also a *note button* that is visible only if there is some note added. you can click on this button to quickly change the note.
|
||||
* The top bar has a *details toggle button* that is used to toggle column details visibility. There is also a *note button* that is visible only if there is some note added. You can click on this button to quickly change the note.
|
||||
* The first row shows the schema name of the table. Eg. *public* in above image.
|
||||
* The second row shows the table name. Eg. *users* in above image.
|
||||
* All other rows below the table name are the columns of the table along with data type. If the column is a primary key then it will have lock key icon eg. id is the primary key in above image. Otherwise, it will have column icon.
|
||||
* you can click on the node and drag to move on the canvas.
|
||||
* You can click on the node and drag to move on the canvas.
|
||||
* Upon double click on the table node or by clicking the edit button from the toolbar, the table dialog opens where you can change the table details. Refer :ref:`table dialog <table_dialog>` for information on different fields.
|
||||
|
||||
The One to One Link Dialog
|
||||
***************************
|
||||
|
||||
.. image:: images/erd_11_dialog.png
|
||||
:alt: ERD tool 1-1 dialog
|
||||
:align: center
|
||||
|
||||
The one to one link dialog allows you to:
|
||||
|
||||
* Add a one to one relationship between two tables.
|
||||
* *Local Table* is the table that references a table and has the *one* end point.
|
||||
* *Local Column* the column that references.
|
||||
* *Select Constraint* To implement a one-to-one relationship, the *Local Column* must have a primary key or unique constraint. The default is a unique constraint. Please note that this field is visible only when the selected *Local Column* does not have either of the mentioned constraints.
|
||||
* *Referenced Table* is the table that is being referred and has the *one* end point.
|
||||
* *Referenced Column* the column that is being referred.
|
||||
|
||||
The One to Many Link Dialog
|
||||
***************************
|
||||
|
||||
@@ -250,7 +272,7 @@ The table link shows relationship between tables:
|
||||
* The single line endpoint of the link shows the column that is being referred.
|
||||
* The three line endpoint of the link shows the column that refers.
|
||||
* If one of the columns that is being referred or that refers is removed from the table then the link will get dropped.
|
||||
* you can click on the link and drag to move on the canvas.
|
||||
* You can click on the link and drag to move on the canvas.
|
||||
|
||||
|
||||
The Table Notes
|
||||
|
||||
@@ -67,7 +67,7 @@ in the *Delete Row* popup.
|
||||
|
||||
Click the *SQL* tab to continue.
|
||||
|
||||
Your entries in the *Event Trigger* dialog generate a generate a SQL command.
|
||||
Your entries in the *Event Trigger* dialog generate a SQL command.
|
||||
Use the *SQL* tab for review; revisit or switch tabs to make any changes to the
|
||||
SQL command.
|
||||
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
.. _export_data_using_query:
|
||||
|
||||
***************************************
|
||||
`Export Data Using Query Dialog`:index:
|
||||
***************************************
|
||||
|
||||
Use the *Export Data Using Query* dialog to copy data to a file.
|
||||
|
||||
The *Export Data Using Query* dialog organizes the export of data through the
|
||||
*General*, *Options* and *Query* tabs.
|
||||
|
||||
.. image:: images/export_query_general.png
|
||||
:alt: Export data using query dialog general tab
|
||||
:align: center
|
||||
|
||||
Use the fields in the *General* tab to specify export preferences:
|
||||
|
||||
* Enter the name of the target file in the *Filename* field.
|
||||
Optionally, select the *Browse* icon (ellipsis) to the right to navigate
|
||||
into a directory and select a file.
|
||||
|
||||
* Use the drop-down listbox in the *Format* field to specify the file type.
|
||||
Select:
|
||||
|
||||
* *binary* for a .bin file.
|
||||
* *csv* for a .csv file.
|
||||
* *text* for a .txt file.
|
||||
|
||||
* Use the drop-down listbox in the *Encoding* field to specify the type of
|
||||
character encoding.
|
||||
|
||||
.. image:: images/export_query_options.png
|
||||
:alt: Export data using query dialog options tab
|
||||
:align: center
|
||||
|
||||
* Use the fields in the *Options* tab to specify additional information:
|
||||
|
||||
* Move the *Header* switch to the *Yes* position to include the table header
|
||||
with the data rows. If you include the table header, the first row of the
|
||||
file will contain the column names.
|
||||
* If you are exporting data, specify the delimiter that will separate the
|
||||
columns within the target file in the *Delimiter* field. The separating
|
||||
character can be a colon, semicolon, a vertical bar, or a tab.
|
||||
* Specify a quoting character used in the *Quote* field. Quoting can be
|
||||
applied to string columns only (i.e. numeric columns will not be quoted)
|
||||
or all columns regardless of data type. The character used for quoting can
|
||||
be a single quote or a double quote.
|
||||
* Specify a character that should appear before a data character that matches
|
||||
the *QUOTE* value in the *Escape* field.
|
||||
* Use the *NULL String* field to specify a string that will represent a null
|
||||
value within the source or target file.
|
||||
|
||||
Click the *Query* tab to continue.
|
||||
|
||||
.. image:: images/export_query.png
|
||||
:alt: Export data using query dialog query tab
|
||||
:align: center
|
||||
|
||||
Use the fields in the *Query* tab to write the query that will be exported:
|
||||
|
||||
* Use the *Export Data Query* field to specify a SELECT, VALUES, INSERT, UPDATE,
|
||||
DELETE, or MERGE command whose results are to be copied.
|
||||
|
||||
* Use *Force Quote columns* field to forces quoting to be used for all non-NULL
|
||||
values in each specified column. NULL output is never quoted. This is a creatable
|
||||
select control. If you would like to quote all columns then provide only '*' in
|
||||
the field.
|
||||
|
||||
After completing the *Export Data Using Query* dialog, click the *OK* button to
|
||||
perform the export. pgAdmin will notify you when the background
|
||||
process completes:
|
||||
|
||||
.. image:: images/export_query_complete.png
|
||||
:alt: Export data using query completion notification
|
||||
:align: center
|
||||
|
||||
|
||||
Use the *View Processes* button on the notification to open the *Process
|
||||
Watcher* and review detailed information about the execution of the command
|
||||
that performed the export:
|
||||
|
||||
Use the **End Process** button to end the Export process.
|
||||
|
||||
.. image:: images/export_query_pw.png
|
||||
:alt: Export data using query process watcher
|
||||
:align: center
|
||||
|
||||
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the exported file on the client machine .
|
||||
|
||||
|
||||
.. |sm_icon| image:: images/sm_icon.png
|
||||
@@ -23,7 +23,7 @@ Use the fields in the *General* tab to identify an extension:
|
||||
|
||||
* Use the drop-down listbox in the *Name* field to select the extension. Each
|
||||
extension must have a unique name.
|
||||
* Move the switch next to *Cascade?* towards right position to automatically
|
||||
* Move the switch next to *Cascade?* to the *Yes* position to automatically
|
||||
install any extensions that this extension depends on that are not already
|
||||
installed.
|
||||
* Store notes about the extension in the *Comment* field.
|
||||
|
||||
@@ -131,7 +131,7 @@ function. Click the *Add* icon (+) to add each security label selection:
|
||||
|
||||
* Specify a security label provider in the *Provider* field. The named provider
|
||||
must be loaded and must consent to the proposed labeling operation.
|
||||
* Specify a a security label in the *Security Label* field. The meaning of a
|
||||
* Specify a security label in the *Security Label* field. The meaning of a
|
||||
given label is at the discretion of the label provider. PostgreSQL places no
|
||||
restrictions on whether or how a label provider must interpret security
|
||||
labels; it merely provides a mechanism for storing them.
|
||||
|
||||
@@ -41,6 +41,9 @@ Use the fields in the *Definition* tab to define the function:
|
||||
will change to an input text field.
|
||||
* Use the drop-down listbox next to *Language* to select the implementation
|
||||
language. The default is *sql*.
|
||||
* Use the drop-down listbox next to *Depends on extensions* to select the extension that this function
|
||||
depends on (for example, plpgsql). If set, dropping the extension will automatically drop the
|
||||
function as well.
|
||||
* Use the fields in the *Arguments* to define an argument. Click the *Add*
|
||||
icon (+) to set parameters and values for the argument:
|
||||
|
||||
@@ -153,7 +156,7 @@ function. Click the *Add* icon (+) to add each security label selection:
|
||||
|
||||
* Specify a security label provider in the *Provider* field. The named provider
|
||||
must be loaded and must consent to the proposed labeling operation.
|
||||
* Specify a a security label in the *Security Label* field. The meaning of a
|
||||
* Specify a security label in the *Security Label* field. The meaning of a
|
||||
given label is at the discretion of the label provider. PostgreSQL places no
|
||||
restrictions on whether or how a label provider must interpret security
|
||||
labels; it merely provides a mechanism for storing them.
|
||||
@@ -164,7 +167,7 @@ in the *Delete Row* popup.
|
||||
|
||||
Click the *SQL* tab to continue.
|
||||
|
||||
Your entries in the *Function* dialog generate a generate a SQL command (see an
|
||||
Your entries in the *Function* dialog generate a SQL command (see an
|
||||
example below). Use the *SQL* tab for review; revisit or switch tabs to make any
|
||||
changes to the SQL command.
|
||||
|
||||
@@ -178,8 +181,8 @@ the *Function* dialog:
|
||||
:alt: Function dialog sql tab
|
||||
:align: center
|
||||
|
||||
The example demonstrates creating an *plpgsql* function named *hire_salesmen*. The
|
||||
function have three columns (p_ename, p_sal and p_comm).
|
||||
The example demonstrates creating a *plpgsql* function named *hire_salesmen*. The
|
||||
function has three columns (p_ename, p_sal and p_comm).
|
||||
|
||||
* Click the *Info* button (i) to access online help.
|
||||
* Click the *Save* button to save work.
|
||||
|
||||
@@ -46,7 +46,7 @@ Use the fields in the *Privileges Selection* window to grant
|
||||
privileges. If you grant a privilege WITH GRANT OPTION, the Grantee will have
|
||||
the right to grant privileges on the object to others. If WITH GRANT OPTION is
|
||||
subsequently revoked, any role who received access to that object from that
|
||||
Grantee (directly or through a chain of grants) will lose thier privileges on
|
||||
Grantee (directly or through a chain of grants) will lose their privileges on
|
||||
the object.
|
||||
|
||||
* Click the *Add* icon (+) to assign a set of privileges.
|
||||
|
||||
|
After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 237 KiB |
|
After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 340 KiB After Width: | Height: | Size: 679 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 237 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 337 KiB After Width: | Height: | Size: 282 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 62 KiB |