Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f09776c22d | ||
|
|
d64bc8c24c | ||
|
|
1c66edd12d | ||
|
|
36e08d6d8a | ||
|
|
59f8d82aa9 | ||
|
|
3922cdfcbf | ||
|
|
038a2619fa | ||
|
|
e3a10c53cb | ||
|
|
cf22515efc | ||
|
|
81edb68b27 | ||
|
|
fd9179f25a | ||
|
|
6acbf875ae | ||
|
|
809e812a17 | ||
|
|
d84d3ce9e3 | ||
|
|
155ebe5c28 | ||
|
|
153e3273d8 | ||
|
|
6c70d7ccb8 | ||
|
|
9d0a61a828 | ||
|
|
50d76765a1 | ||
|
|
0b8e8db0cc | ||
|
|
0e9c3eab8f | ||
|
|
7edb9c012c | ||
|
|
7c2177241f | ||
|
|
fb0ca5c4c8 | ||
|
|
d0210a534d | ||
|
|
006fc6bd88 | ||
|
|
abf926428e | ||
|
|
f2fdef5ba5 | ||
|
|
972332ae59 | ||
|
|
bc04db39d5 | ||
|
|
3d310d4656 | ||
|
|
8c6fd211a7 | ||
|
|
de71c83d8d | ||
|
|
8ed0ecc06b | ||
|
|
c0bd0d8665 | ||
|
|
90e94da9db | ||
|
|
02e327c1b9 | ||
|
|
5082834a27 | ||
|
|
a14469290e | ||
|
|
82a88b74f9 | ||
|
|
d773db699f | ||
|
|
83a31a350c | ||
|
|
bd7cde5851 | ||
|
|
bc58657d3d | ||
|
|
5bd4f3bde6 | ||
|
|
9a009fd2b6 | ||
|
|
1f02466324 | ||
|
|
c0fa2a18d8 | ||
|
|
46c092cc5d | ||
|
|
f739036066 | ||
|
|
0ebefaf80e | ||
|
|
104d018677 | ||
|
|
81ac80321e | ||
|
|
01e5bf0993 | ||
|
|
549d71a203 | ||
|
|
7b592f2e82 | ||
|
|
efc0dea335 | ||
|
|
2de30f25c0 | ||
|
|
c2398d5b08 | ||
|
|
98fda1cbb0 | ||
|
|
c20f0e33bb | ||
|
|
e2ca7bb447 | ||
|
|
e3626c4918 | ||
|
|
7790264acb | ||
|
|
8ceffe310b | ||
|
|
34dba57409 | ||
|
|
6fac4f0cbe | ||
|
|
12830a7be8 | ||
|
|
1b48d616f9 | ||
|
|
39a56a1074 | ||
|
|
6de909b2d5 | ||
|
|
1908d468f1 | ||
|
|
9cd0e35f47 | ||
|
|
3cb33475ec | ||
|
|
e6e35bb4c4 | ||
|
|
1dd4d00246 | ||
|
|
9338129183 | ||
|
|
2d989238a4 | ||
|
|
aa16a12182 | ||
|
|
d9635cd2cd | ||
|
|
904bb2e1e2 | ||
|
|
02c8b3748e | ||
|
|
6696db11be | ||
|
|
109706d8f8 | ||
|
|
8cc69cf71c | ||
|
|
1a87ee14d9 | ||
|
|
73c5e01309 | ||
|
|
1cca96b62c | ||
|
|
74687c9ddf | ||
|
|
0d6973c042 | ||
|
|
0b9fb6fc06 | ||
|
|
60d4dd8c5a | ||
|
|
df7c256b53 | ||
|
|
db7cbc7900 | ||
|
|
aac7d33441 | ||
|
|
9e0a847410 | ||
|
|
35d68c47eb | ||
|
|
6487f2a93f | ||
|
|
067f7af227 | ||
|
|
6891b5e12f | ||
|
|
669c2f2442 | ||
|
|
2d17e9e15d | ||
|
|
d4364555ae | ||
|
|
401afbfa31 | ||
|
|
0296de48ee | ||
|
|
689c969f95 | ||
|
|
bd841b8827 | ||
|
|
3f99454199 | ||
|
|
6e029ab6e5 | ||
|
|
ee7109d400 | ||
|
|
78f7a5f6ab | ||
|
|
689d200e9f | ||
|
|
339b4f9cd3 | ||
|
|
5fc319551d | ||
|
|
9ef9a7136f | ||
|
|
1496fabe28 | ||
|
|
ef76102bcd | ||
|
|
2b4307f321 | ||
|
|
362c202b25 | ||
|
|
84b93c268d | ||
|
|
1e7407bbf6 | ||
|
|
9bcc0ff8de | ||
|
|
f75452bfd0 | ||
|
|
73b3218992 | ||
|
|
24fdcf0f58 | ||
|
|
e7a8576731 | ||
|
|
ea7e798aac | ||
|
|
64a9cdbd6a | ||
|
|
ba1984718a | ||
|
|
a7e74a6ed6 | ||
|
|
d36bd8dc96 | ||
|
|
461c3afba9 | ||
|
|
54ff7b4dce | ||
|
|
5d39a52a73 | ||
|
|
108797d48a | ||
|
|
7339eb8dcc | ||
|
|
34108aa50f | ||
|
|
1e1240038a | ||
|
|
966a8ae99a | ||
|
|
75dd304d25 | ||
|
|
67755809a6 | ||
|
|
e65edd4669 | ||
|
|
9bf83b4489 | ||
|
|
58e5fc7aed | ||
|
|
577a518fcb | ||
|
|
1884356245 | ||
|
|
b85fb6c650 | ||
|
|
5ff4f694fd | ||
|
|
f9935b3da5 | ||
|
|
cec1b38b2f | ||
|
|
6f8be955a1 | ||
|
|
49e955a855 | ||
|
|
6ad6024bca | ||
|
|
aeef9c2d80 | ||
|
|
8812025a8a | ||
|
|
1993109475 | ||
|
|
b15c745dc1 | ||
|
|
dfc4ef37d0 | ||
|
|
7e76fb4eb0 | ||
|
|
0c6740f146 | ||
|
|
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 |
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,4 +1,5 @@
|
||||
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.]
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
version: 2
|
||||
|
||||
# A note on the "groups" blocks below: minor and patch updates are batched into
|
||||
# a single PR per manifest per week, whilst major updates continue to arrive
|
||||
# individually. Majors are where the breakage lives and each one wants its own
|
||||
# review, whereas a dozen separate PRs for patch bumps is pure overhead.
|
||||
# Grouping applies to version updates only, so Dependabot security updates are
|
||||
# unaffected and still arrive as their own PRs.
|
||||
updates:
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
@@ -12,44 +19,119 @@ updates:
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
prefix: "Python dependency"
|
||||
groups:
|
||||
python-minor-and-patch:
|
||||
patterns:
|
||||
- "*"
|
||||
update-types:
|
||||
- "minor"
|
||||
- "patch"
|
||||
# paramiko 5.0 removed DSSKey, which sshtunnel 0.4.0 still references in
|
||||
# SSHTunnelForwarder.get_keys(); a major bump therefore breaks every SSH
|
||||
# tunnelled connection at construction time. sshtunnel has had no release
|
||||
# since 2019, so this stays put until it is fixed or replaced. See #9927.
|
||||
ignore:
|
||||
- dependency-name: "paramiko"
|
||||
update-types: ["version-update:semver-major"]
|
||||
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/tools"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
prefix: "Python dependency"
|
||||
groups:
|
||||
tools-python-minor-and-patch:
|
||||
patterns:
|
||||
- "*"
|
||||
update-types:
|
||||
- "minor"
|
||||
- "patch"
|
||||
|
||||
# Note that web/regression/requirements.txt begins with
|
||||
# "-r ../../requirements.txt", so this entry also sees everything pinned in
|
||||
# the root file and the paramiko exclusion has to be repeated here.
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/web/regression"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
prefix: "Python dependency"
|
||||
groups:
|
||||
regression-python-minor-and-patch:
|
||||
patterns:
|
||||
- "*"
|
||||
update-types:
|
||||
- "minor"
|
||||
- "patch"
|
||||
ignore:
|
||||
- dependency-name: "paramiko"
|
||||
update-types: ["version-update:semver-major"]
|
||||
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/runtime"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
prefix: "Javascript dependency"
|
||||
groups:
|
||||
runtime-javascript-minor-and-patch:
|
||||
patterns:
|
||||
- "*"
|
||||
update-types:
|
||||
- "minor"
|
||||
- "patch"
|
||||
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/web"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "Dependencies"
|
||||
commit-message:
|
||||
prefix: "Javascript dependency"
|
||||
groups:
|
||||
web-javascript-minor-and-patch:
|
||||
patterns:
|
||||
- "*"
|
||||
update-types:
|
||||
- "minor"
|
||||
- "patch"
|
||||
ignore:
|
||||
# @testing-library/jest-dom 7 requires Node >= 22, whilst Node 20 is the
|
||||
# minimum we support and what most of the buildfarm runs. Revisit once
|
||||
# the buildfarm moves to Node 22. See #10271 and #10210.
|
||||
- dependency-name: "@testing-library/jest-dom"
|
||||
update-types: ["version-update:semver-major"]
|
||||
|
||||
# Babel 8 requires Node ^22.18.0 || >=24.11.0, and every 8.x package
|
||||
# peer-depends on @babel/core ^8.0.0 whilst we are on 7.x. Taking any of
|
||||
# them individually leaves an unsatisfiable peer requirement and a mixed
|
||||
# 7/8 tree, so Babel 8 needs a coordinated migration across all ten
|
||||
# @babel/* packages once we are on Node 22. See #10283, #10284, #10285.
|
||||
- dependency-name: "@babel/*"
|
||||
update-types: ["version-update:semver-major"]
|
||||
|
||||
# pickr 1.10 switched to a dual CJS/ESM build whose CommonJS entry point
|
||||
# exports a namespace object rather than the class, so Babel's interop
|
||||
# leaves _pickr.default as an object and every dialog with a colour field
|
||||
# dies on mount. That took master's feature tests down for three days
|
||||
# (#10264, reverted in #10278). Note 1.9 -> 1.10 is a *minor* bump, so it
|
||||
# otherwise rejoins the grouped PR and comes back around; minor updates
|
||||
# are excluded here as well as majors until withColorPicker.js is adapted
|
||||
# to the new export shape.
|
||||
- dependency-name: "@simonwep/pickr"
|
||||
update-types:
|
||||
- "version-update:semver-major"
|
||||
- "version-update:semver-minor"
|
||||
@@ -14,7 +14,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
build-container:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -14,7 +14,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
build-docs:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -14,15 +14,16 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
check-javascript-style:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Upgrade yarn
|
||||
run: |
|
||||
yarn set version berry
|
||||
yarn set version 3
|
||||
# Corepack reads packageManager from web/package.json and provisions
|
||||
# exactly that Yarn: a single pinned download, with nothing written
|
||||
# into the checkout.
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
|
||||
- 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
|
||||
@@ -136,10 +141,11 @@ jobs:
|
||||
}
|
||||
EOF
|
||||
|
||||
- name: Upgrade yarn
|
||||
run: |
|
||||
yarn set version berry
|
||||
yarn set version 3
|
||||
# Corepack reads packageManager from web/package.json and provisions
|
||||
# exactly that Yarn: a single pinned download, with nothing written
|
||||
# into the checkout.
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
|
||||
- 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",
|
||||
@@ -139,10 +151,11 @@ jobs:
|
||||
}
|
||||
EOF
|
||||
|
||||
- name: Upgrade yarn
|
||||
run: |
|
||||
yarn set version berry
|
||||
yarn set version 3
|
||||
# Corepack reads packageManager from web/package.json and provisions
|
||||
# exactly that Yarn: a single pinned download, with nothing written
|
||||
# into the checkout.
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
|
||||
- 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 }}
|
||||
|
||||
@@ -28,10 +28,11 @@ jobs:
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Upgrade yarn
|
||||
run: |
|
||||
yarn set version berry
|
||||
yarn set version 3
|
||||
# Corepack reads packageManager from web/package.json and provisions
|
||||
# exactly that Yarn: a single pinned download, with nothing written
|
||||
# into the checkout.
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
|
||||
- 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
|
||||
@@ -43,7 +43,7 @@ jobs:
|
||||
sonar.test.inclusions=**/tests/**, web/regression
|
||||
|
||||
# Python compatibility
|
||||
sonar.python.version=3.7, 3.8, 3.9, 3.10, 3.11
|
||||
sonar.python.version=3.9, 3.10, 3.11, 3.12, 3.13, 3.14
|
||||
EOF
|
||||
|
||||
APP_RELEASE=`grep "^APP_RELEASE" web/config.py | cut -d"=" -f2 | sed 's/ //g'`
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
sed -i "s/%VERSION%/${APP_LONG_VERSION}/g" sonar-project.properties
|
||||
|
||||
- name: SonarQube Scan
|
||||
uses: sonarsource/sonarqube-scan-action@master
|
||||
uses: sonarsource/sonarqube-scan-action@22918119ff8e1ca75a623e15c8296b6ea4fbe28f # v8.2.1
|
||||
env:
|
||||
SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
|
||||
SONAR_HOST_URL: ${{ secrets.SONARQUBE_HOST }}
|
||||
@@ -59,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
|
||||
@@ -0,0 +1,341 @@
|
||||
# Contributing to pgAdmin 4
|
||||
|
||||
Thank you for your interest in contributing to pgAdmin 4.
|
||||
|
||||
## Contents
|
||||
|
||||
- Getting Started
|
||||
- Reporting Issues
|
||||
- Making Changes
|
||||
- Pull Requests
|
||||
- AI-assisted Contributions
|
||||
- Development Setup
|
||||
- Database Migrations
|
||||
- Security Issues
|
||||
- Community and Support
|
||||
- License
|
||||
|
||||
## Getting Started
|
||||
|
||||
Before starting work, please review the project documentation and familiarize yourself with the architecture and development workflow.
|
||||
|
||||
### Architecture
|
||||
|
||||
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/](runtime/) subdirectory contains an Electron-based runtime application intended to allow this, which will fork a Python server process and display the UI.
|
||||
|
||||
For a fuller introduction to the codebase, see the [code overview](docs/en_US/code_overview.rst).
|
||||
|
||||
If you are new to the codebase, consider starting with smaller bug fixes or documentation improvements before working on larger changes.
|
||||
|
||||
The Sphinx documentation also includes contributor guidance for [coding standards](docs/en_US/coding_standards.rst), [submitting pull requests](docs/en_US/submitting_pull_requests.rst), [code review](docs/en_US/code_review.rst), and [translations](docs/en_US/translations.rst).
|
||||
|
||||
## Reporting Issues
|
||||
|
||||
When reporting a bug:
|
||||
|
||||
- Search existing issues first.
|
||||
- If a similar issue exists, add any additional information or context you have. Do not create a duplicate issue.
|
||||
- Provide clear steps to reproduce the issue.
|
||||
- Include relevant environment and version information.
|
||||
- Attach screenshots, logs, or error messages when appropriate.
|
||||
|
||||
For feature requests, describe the problem being solved and the expected behavior.
|
||||
|
||||
|
||||
## Making Changes
|
||||
|
||||
When working on a contribution:
|
||||
|
||||
- Keep changes focused and easy to review.
|
||||
- Follow existing coding patterns and conventions, including the [coding standards](docs/en_US/coding_standards.rst).
|
||||
- Avoid unrelated refactoring and changes in the same commit.
|
||||
- Keep commit messages clear and descriptive.
|
||||
- Update tests or documentation when necessary.
|
||||
|
||||
## Pull Requests
|
||||
|
||||
Before opening a pull request:
|
||||
|
||||
- Ensure your changes build successfully.
|
||||
- Test your changes locally.
|
||||
- Review your code before submission.
|
||||
- Update your branch with the latest changes from `master` upstream when appropriate.
|
||||
|
||||
When opening a pull request:
|
||||
|
||||
- Clearly describe the change.
|
||||
- Explain the reason for the change.
|
||||
- Include screenshots or recordings for UI-related changes when applicable.
|
||||
- Submit any changes as Pull Requests against the `master` branch of the [pgadmin-org/pgadmin4](https://github.com/pgadmin-org/pgadmin4) repository.
|
||||
|
||||
Use a clear pull request title that describes the change. Short prefixes such as `feat:`, `fix:`, `docs:`, `test:`, `refactor:`, and `chore:` are useful when they match the change being made. Branch names are contributor-local and do not need to follow a project-specific naming convention.
|
||||
|
||||
For more detail, see the [pull request submission guide](docs/en_US/submitting_pull_requests.rst) and [code review guide](docs/en_US/code_review.rst).
|
||||
|
||||
## AI-assisted Contributions
|
||||
|
||||
Contributors are responsible for understanding, testing, and standing behind everything they submit, whether or not AI tools were used. Please do not open large numbers of auto-generated issues or pull requests without first discussing that work with the maintainers.
|
||||
|
||||
## Development Setup
|
||||
|
||||
In the following documentation and examples, `$PGADMIN4_SRC` is used to denote the top-level directory of your copy of the pgAdmin source tree (either from a tarball or a git checkout).
|
||||
|
||||
### 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
|
||||
corepack enable
|
||||
```
|
||||
|
||||
### Building 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
|
||||
$ cd $PGADMIN4_SRC
|
||||
$ make install-node
|
||||
$ make bundle
|
||||
```
|
||||
|
||||
On Windows systems (where "make" is not available), the following commands can be used:
|
||||
|
||||
```bat
|
||||
C:\> cd $PGADMIN4_SRC\web
|
||||
C:\$PGADMIN4_SRC\web> yarn install
|
||||
C:\$PGADMIN4_SRC\web> yarn run bundle
|
||||
```
|
||||
|
||||
### Python Environment
|
||||
|
||||
In order to run the Python code, a suitable runtime environment is required. 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:
|
||||
|
||||
1. Create a virtual environment in an appropriate directory. The last argument is the name of the environment; that can be changed as desired:
|
||||
|
||||
```bash
|
||||
$ python3 -m venv venv
|
||||
```
|
||||
|
||||
2. Now activate the virtual environment:
|
||||
|
||||
```bash
|
||||
$ source venv/bin/activate
|
||||
```
|
||||
|
||||
On Windows:
|
||||
|
||||
```bash
|
||||
venv\Scripts\activate
|
||||
```
|
||||
|
||||
3. Some of the components used by pgAdmin require a very recent version of *pip*, so update that to the latest:
|
||||
|
||||
```bash
|
||||
(venv) $ pip install --upgrade pip
|
||||
```
|
||||
|
||||
4. Ensure that a PostgreSQL installation's bin/ directory is in the path (so pg_config can be found for building psycopg3), and install the required packages:
|
||||
|
||||
```bash
|
||||
(venv) $ PATH=$PATH:/usr/local/pgsql/bin pip install -r $PGADMIN4_SRC/requirements.txt
|
||||
```
|
||||
|
||||
If you are planning to run the regression tests, you also need to install additional requirements from `web/regression/requirements.txt`:
|
||||
|
||||
```bash
|
||||
(venv) $ pip install -r $PGADMIN4_SRC/web/regression/requirements.txt
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
Create a local configuration file for pgAdmin. Edit `$PGADMIN4_SRC/web/config_local.py` and add any desired configuration options (use the `config.py` file as a reference - any settings duplicated in `config_local.py` will override those in `config.py`). A typical development configuration may look like:
|
||||
|
||||
```python
|
||||
import os
|
||||
import logging
|
||||
|
||||
# Change pgAdmin data directory
|
||||
DATA_DIR = '/Users/myuser/.pgadmin_dev'
|
||||
|
||||
# Change pgAdmin server and port
|
||||
DEFAULT_SERVER = '127.0.0.1'
|
||||
DEFAULT_SERVER_PORT = 5051
|
||||
|
||||
# Switch between server and desktop mode
|
||||
SERVER_MODE = True
|
||||
|
||||
# Change pgAdmin config DB path in case an external DB is used.
|
||||
CONFIG_DATABASE_URI="postgresql://postgres:postgres@localhost:5436/pgadmin"
|
||||
|
||||
# Set up SMTP
|
||||
MAIL_SERVER = 'smtp.gmail.com'
|
||||
MAIL_PORT = 465
|
||||
MAIL_USE_SSL = True
|
||||
MAIL_USERNAME = 'user@gmail.com'
|
||||
MAIL_PASSWORD = 'xxxxxxxxxx'
|
||||
|
||||
# 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'
|
||||
)
|
||||
```
|
||||
|
||||
This configuration allows easy switching between server and desktop modes for testing.
|
||||
|
||||
### Running pgAdmin
|
||||
|
||||
The initial setup of the configuration database is interactive in server mode, and non-interactive in desktop mode. You can run it either by running:
|
||||
|
||||
```bash
|
||||
(venv) $ python3 $PGADMIN4_SRC/web/setup.py
|
||||
```
|
||||
|
||||
or by starting pgAdmin 4:
|
||||
|
||||
```bash
|
||||
(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.
|
||||
|
||||
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.md` for complete details.
|
||||
|
||||
### Building the documentation
|
||||
|
||||
In order to build the docs, an additional Python package is required in the virtual environment. This can be installed with the pip package manager:
|
||||
|
||||
```bash
|
||||
$ source venv/bin/activate
|
||||
(venv) $ pip install Sphinx
|
||||
(venv) $ pip install sphinxcontrib-youtube
|
||||
```
|
||||
|
||||
The docs can then be built using the Makefile in `$PGADMIN4_SRC`, e.g.
|
||||
|
||||
```bash
|
||||
(venv) $ make docs
|
||||
```
|
||||
|
||||
The output can be found in `$PGADMIN4_SRC/docs/en_US/_build/html/index.html`
|
||||
|
||||
### Runtime Development
|
||||
|
||||
For Electron runtime development:
|
||||
|
||||
1. Navigate to the `runtime` directory.
|
||||
2. Install dependencies:
|
||||
|
||||
```bash
|
||||
yarn install
|
||||
```
|
||||
|
||||
3. Copy:
|
||||
|
||||
```text
|
||||
dev_config.json.in
|
||||
```
|
||||
|
||||
to:
|
||||
|
||||
```text
|
||||
dev_config.json
|
||||
```
|
||||
|
||||
4. Update the paths to your Python executable and `pgAdmin4.py`.
|
||||
|
||||
Start the runtime:
|
||||
|
||||
```bash
|
||||
yarn run start
|
||||
```
|
||||
|
||||
### Building packages
|
||||
|
||||
Most packages can be built using the Makefile in `$PGADMIN4_SRC`, provided all the setup and configuration above has been completed.
|
||||
|
||||
To build a source tarball:
|
||||
|
||||
```bash
|
||||
(venv) $ make src
|
||||
```
|
||||
|
||||
To build a PIP Wheel, activate either a Python 3 virtual environment, configured with all the required packages, and then run:
|
||||
|
||||
```bash
|
||||
(venv) $ make pip
|
||||
```
|
||||
|
||||
To build the macOS AppBundle, please see `pkg/mac/README.md`.
|
||||
|
||||
To build the Windows installer, please see `pkg/win32/README.md`.
|
||||
|
||||
## Database Migrations
|
||||
|
||||
In order to make changes to the SQLite DB, navigate to the 'web' directory:
|
||||
|
||||
```bash
|
||||
(venv) $ cd $PGADMIN4_SRC/web
|
||||
```
|
||||
|
||||
Create a migration file with the following command:
|
||||
|
||||
```bash
|
||||
(venv) $ FLASK_APP=pgAdmin4.py flask db revision
|
||||
```
|
||||
|
||||
This will create a file in `$PGADMIN4_SRC/web/migrations/versions/`. Add any changes to the `upgrade` function.
|
||||
|
||||
When making schema changes, update the `SCHEMA_VERSION` value in:
|
||||
|
||||
```text
|
||||
web/pgadmin/model/__init__.py
|
||||
```
|
||||
|
||||
There is no need to increment the `SETTINGS_SCHEMA_VERSION`.
|
||||
|
||||
## Security Issues
|
||||
|
||||
**Do not report security vulnerabilities through GitHub issues.**
|
||||
|
||||
Potential security issues should be reported to:
|
||||
`security@pgadmin.org`.
|
||||
|
||||
Note that this **address should only be used for reporting security issues** that you believe you've found in the design or code of pgAdmin, pgAgent, and the pgAdmin website. It **should not be used to ask security questions**.
|
||||
|
||||
If you are unsure whether an issue is a security vulnerability, please lean on the side of caution and report it to the above address. The pgAdmin team will review the report and respond as appropriate.
|
||||
|
||||
## Community and Support
|
||||
|
||||
For development discussions, use:
|
||||
|
||||
`pgadmin-hackers@postgresql.org`
|
||||
|
||||
For support options, visit the [pgAdmin support page](https://www.pgadmin.org/support/).
|
||||
|
||||
Use the [GitHub issue tracker](https://github.com/pgadmin-org/pgadmin4/issues) for reporting bugs and requesting features, but please follow the guidelines outlined in the "Reporting Issues" section above.
|
||||
|
||||
## License
|
||||
|
||||
By contributing to pgAdmin 4, you agree that your contributions will be licensed under the project's existing and future license terms.
|
||||
@@ -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,51 +31,36 @@ RUN apk add --no-cache \
|
||||
yarn \
|
||||
zlib-dev
|
||||
|
||||
COPY .git .git
|
||||
# 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 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 \
|
||||
/pgadmin4/.git
|
||||
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 \
|
||||
@@ -86,9 +71,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
|
||||
|
||||
@@ -120,20 +105,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/
|
||||
@@ -154,25 +135,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
|
||||
@@ -180,42 +185,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:\Python314"
|
||||
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%
|
||||
@@ -157,10 +161,14 @@ REM Main build sequence Ends
|
||||
CD "%TMPDIR%"
|
||||
|
||||
REM Note that we must use virtualenv.exe here, as the venv module doesn't allow python.exe to relocate.
|
||||
"%PGADMIN_PYTHON_DIR%\Scripts\virtualenv.exe" venv
|
||||
"%PGADMIN_PYTHON_DIR%\Scripts\virtualenv.exe" venv || EXIT /B 1
|
||||
|
||||
XCOPY /S /I /E /H /Y "%PGADMIN_PYTHON_DIR%\DLLs" "%TMPDIR%\venv\DLLs" > nul || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%PGADMIN_PYTHON_DIR%\Lib" "%TMPDIR%\venv\Lib" > nul || EXIT /B 1
|
||||
REM Copy the standard library, but NOT site-packages: the venv already has its
|
||||
REM own seeded pip there, and overwriting only the files the system Python also
|
||||
REM has leaves a mix of two pip versions behind.
|
||||
ROBOCOPY /E /R:3 /W:5 /NFL /NDL /NP "%PGADMIN_PYTHON_DIR%\Lib" "%TMPDIR%\venv\Lib" /XD site-packages
|
||||
CALL :CHECK_ROBOCOPY_ERROR || EXIT /B 1
|
||||
|
||||
ECHO Activating virtual environment - %TMPDIR%\venv...
|
||||
CALL "%TMPDIR%\venv\Scripts\activate" || EXIT /B 1
|
||||
@@ -212,13 +220,18 @@ REM Main build sequence Ends
|
||||
RD /Q /S "%WD%\web\pgadmin\static\js\generated\.cache" 1> nul 2>&1
|
||||
|
||||
ECHO Copying web directory...
|
||||
ROBOCOPY /S "%WD%\web" "%BUILDROOT%\web" > nul
|
||||
CALL :CHECK_ROBOCOPY_ERROR
|
||||
ROBOCOPY /S /NFL /NDL /NP "%WD%\web" "%BUILDROOT%\web"
|
||||
CALL :CHECK_ROBOCOPY_ERROR || EXIT /B 1
|
||||
|
||||
ECHO Installing javascript dependencies...
|
||||
CD "%BUILDROOT%\web"
|
||||
CALL yarn set version berry || EXIT /B 1
|
||||
CALL yarn set version 3 || EXIT /B 1
|
||||
SET "YARN_VERSION="
|
||||
FOR /f "delims=" %%v IN ('node -p "require('./package.json').packageManager.split('@')[1]"') DO SET "YARN_VERSION=%%v"
|
||||
IF "%YARN_VERSION%"=="" (
|
||||
ECHO ERROR: Could not determine Yarn version from package.json packageManager field.
|
||||
EXIT /B 1
|
||||
)
|
||||
CALL yarn set version %YARN_VERSION% || EXIT /B 1
|
||||
CALL yarn install || EXIT /B 1
|
||||
CALL npm rebuild || EXIT /B 1
|
||||
|
||||
@@ -233,15 +246,24 @@ 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...
|
||||
ECHO Removing the JavaScript build configuration...
|
||||
RD /Q /S "%BUILDROOT%\web\.yarn" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\yarn.lock" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\.yarnrc.yml" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\package.json" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\jest.config.js" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\babel.cfg" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\babel.config.json" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\webpack.config.js" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\webpack.shim.js" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\.eslintrc.js" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\.editorconfig" 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"
|
||||
@@ -273,9 +295,13 @@ REM Main build sequence Ends
|
||||
|
||||
CD "%BUILDROOT%\runtime\resources\app\"
|
||||
|
||||
CALL yarn set version berry || EXIT /B 1
|
||||
CALL yarn set version 3 || EXIT /B 1
|
||||
CALL yarn plugin import workspace-tools || EXIT /B 1
|
||||
SET "YARN_VERSION="
|
||||
FOR /f "delims=" %%v IN ('node -p "require('./package.json').packageManager.split('@')[1]"') DO SET "YARN_VERSION=%%v"
|
||||
IF "%YARN_VERSION%"=="" (
|
||||
ECHO ERROR: Could not determine Yarn version from package.json packageManager field.
|
||||
EXIT /B 1
|
||||
)
|
||||
CALL yarn set version %YARN_VERSION% || EXIT /B 1
|
||||
CALL yarn workspaces focus --production || EXIT /B 1
|
||||
|
||||
ECHO Removing yarn cache...
|
||||
@@ -286,6 +312,7 @@ REM Main build sequence Ends
|
||||
|
||||
REM WGET
|
||||
FOR /f "tokens=*" %%i IN ('npm info electron version') DO SET "ELECTRON_VERSION=%%i"
|
||||
|
||||
: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
|
||||
@@ -307,16 +334,20 @@ REM Main build sequence Ends
|
||||
%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%""
|
||||
%TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-product-version "%APP_VERSION%"
|
||||
|
||||
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
|
||||
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 Staging PostgreSQL components...
|
||||
@@ -325,6 +356,8 @@ REM Main build sequence Ends
|
||||
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%
|
||||
@@ -333,7 +366,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
|
||||
@@ -351,13 +384,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
|
||||
@@ -374,13 +411,19 @@ REM Main build sequence Ends
|
||||
|
||||
EXIT /B 0
|
||||
|
||||
:SIGN_INSTALLER
|
||||
ECHO Attempting to sign the installer...
|
||||
CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" sign /tr http://timestamp.digicert.com "%DISTROOT%\%INSTALLERNAME%"
|
||||
: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
|
||||
|
||||
@@ -9,40 +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 Electron 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
|
||||
## 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)
|
||||
|
||||
To build the runtime, the following packages must be installed:
|
||||
Start by enabling Corepack, if it isn't already;
|
||||
this will add the yarn binary to your PATH:
|
||||
```bash
|
||||
corepack enable
|
||||
```
|
||||
|
||||
* NodeJS 16+
|
||||
* Yarn
|
||||
# Building the Web Assets
|
||||
|
||||
Change into the runtime directory, and run *yarn install*. This will install the
|
||||
dependencies required.
|
||||
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.
|
||||
|
||||
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:
|
||||
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
|
||||
yarn run start
|
||||
$ 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:
|
||||
|
||||
@@ -63,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
|
||||
@@ -88,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
|
||||
@@ -137,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
|
||||
|
||||
@@ -210,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
|
||||
@@ -228,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,281 @@
|
||||
.. _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.
|
||||
|
||||
|
||||
.. _ai_data_handling:
|
||||
|
||||
Data Handling and Provider Selection
|
||||
************************************
|
||||
|
||||
When a cloud LLM provider is configured, pgAdmin transmits information about
|
||||
your database to that provider's API. Depending on the feature in use, this may
|
||||
include schema definitions such as table, column, index and constraint names
|
||||
and data types; server and database configuration settings read from
|
||||
``pg_settings``; query text; and EXPLAIN plan output. The *AI Assistant* in the
|
||||
Query Tool is also able to run queries against your database, within a read-only
|
||||
transaction and limited to 1000 rows, so row data may be included where the
|
||||
assistant determines it is needed to answer a question.
|
||||
|
||||
None of this is transmitted unless you invoke an AI feature, and none of it is
|
||||
transmitted at all when no provider has been configured, which is the default;
|
||||
when AI features have been disabled by the administrator through the
|
||||
``LLM_ENABLED`` setting; or when a locally hosted provider such as Ollama or
|
||||
Docker Model Runner is configured.
|
||||
|
||||
Each provider processes this data under its own terms of service, privacy policy
|
||||
and legal jurisdiction, and operates its infrastructure in locations of its own
|
||||
choosing. If you work in an environment subject to data residency requirements,
|
||||
procurement policies, or sector-specific rules governing the handling of
|
||||
database metadata, review both the provider's terms and your own organisation's
|
||||
policies before enabling a cloud provider.
|
||||
|
||||
The providers listed in pgAdmin reflect the APIs that pgAdmin is able to
|
||||
communicate with. Their inclusion is not a recommendation, and no provider is
|
||||
enabled by default.
|
||||
|
||||
|
||||
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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -43,36 +43,27 @@ browser and the Python server creating a standalone application.
|
||||
: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
|
||||
@@ -101,6 +101,11 @@ properties of the geometries directly in map, just click the specific geometry:
|
||||
viewer will render geometries with the same SRID in the map. If SRID=4326 the
|
||||
OSM tile layer will be added into the map.
|
||||
|
||||
- *Custom tile provider:* A custom map tile provider ({z}/{x}/{y} URL template,
|
||||
in EPSG:3857, EPSG:4326 or EPSG:3395) can be configured as a base layer via
|
||||
*Preferences > Query Tool > Geometry Viewer*. When configured, it is
|
||||
selected as the default base layer.
|
||||
|
||||
- *Data size:* For performance reasons, the viewer will render no more than
|
||||
100000 geometries, totaling up to 20MB.
|
||||
|
||||
@@ -110,9 +115,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 +125,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 +175,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 +217,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 +240,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 |
|
Before Width: | Height: | Size: 152 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 |
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 254 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 188 KiB |