-
Notifications
You must be signed in to change notification settings - Fork 56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SingleNode deployment #206
SingleNode deployment #206
Conversation
|
f5a1f51
to
2651b1c
Compare
Hi, thanks for your contribution. |
2706ccb
to
ff14705
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Most codes look good.
27757d7
to
cf7f33c
Compare
e64d6c6
to
d724550
Compare
already fixed. apart from this, all reviewer comments are fixed or replied. could you please check whether my response addressed all your concerns? @avamingli |
4363279
to
1daf639
Compare
60e4396
to
70421cd
Compare
how to install single node with rpm package ? think about install like pg style: |
8d04121
to
4d3f71f
Compare
I've tried with proper |
4d3f71f
to
223997d
Compare
can we change default |
we can arbitrarily change dir of the coordinator and the coordinator standby. when using |
|
If we want singlenode deployment to have |
yes, make different dir. |
229bcab
to
2f8bdf3
Compare
fixed in cloudberrydb/gpAux/gpdemo/demo_cluster.sh Line 30 in c2d7dda
|
4fbc2ba
to
4534e4c
Compare
check_agg_arguments_walker() supposed that it needn't descend into the arguments of a lower-level aggregate function, but this is just wrong in the presence of multiple levels of sub-select. The oversight would lead to executor failures on queries that should be rejected. (Prior to v11, they actually were rejected, thanks to a "redundant" execution-time check.) Per bug #17835 from Anban Company. Back-patch to all supported branches. Discussion: https://postgr.es/m/17835-4f29f3098b2d0ba4@postgresql.org
Commit 3e310d837 taught isAssignmentIndirectionExpr() to look through CoerceToDomain nodes. That's not sufficient, because since commit 04fe805 it's been possible for the planner to simplify CoerceToDomain to RelabelType when the domain has no constraints to enforce. So we need to look through RelabelType too. Per bug #17897 from Alexander Lakhin. Although 3e310d837 was back-patched to v11, it seems sufficient to apply this change to v12 and later, since 04fe805 came in in v12. Dmitry Dolgov Discussion: https://postgr.es/m/17897-4216c546c3874044@postgresql.org
This commit is a squash of the following commits: - Fix all isolation2_schedule cases in single node mode - Pass all the selected isolation2_schedule tests in single node mode. - Copy tests from test/isolation2 for isolation2 schedule in single-node. - Fix all greenplum_schedule tests diffs in single node mode. - Fix all parallel_schedule tests diff in single node mode - Fix test singlenode_regress/xml (only failed on CI)
Since CBDB isn't fully compatible with Postgres, many features and grammars have been dependent upon. In a scenario where only one node is needed but CBDB is already relied by business logic, a singlenode mode can be used. Utility mode is different from singlenode because it still requires segments be created, it just connects to one of them in a special mode designated by PGOPTIONS. On the contrary, singlenode mode is fully supported by all deploying scripts, user can create a running node that have no segment and directly connect to it as if it were a normal cluster. Plus, there're some functionalities that aren't enabled in utility mode but should be in singlenode. This new mode is supported by adding a new GUC gp_internal_is_singlenode. We've settled to leverage the already-written code to support GP_ROLE_UTILITY by running singlenode deployment in GP_ROLE_UTILITY. This way seems leads to the minimum code change. There're several places where special care are needed: code that should run only under normal utility mode but not in singlenode are taken care of by IS_UTILITY_BUT_NOT_SINGLENODE() macro, and, conversely, code that should only run in singlenode are handled by Gp_role == GP_ROLE_DISPATCH || IS_SINGLENODE(). For the remaining code changes, they're all caused by several global replacements. Scripts has been changed to support singlenode deployment. When creating demo cluster, use NUM_PRIMARY_MIRROR_PAIRS=0 to create singlenode deployment. It'll write the GUC in postgresql.conf and only start QD and one standby. gpstart and gpstop behaves normally because singlenode mode is controlled by a GUC that only initialized in gpinitsystem. We delibrately pick a long name because we don't want user to accidentally change this after cluster initialization. See: Discussion#188 <https://github.com/orgs/cloudberrydb/discussions/188>
This PR adds a new GitHub Actions job, ic-singlenode-test, to build workflow. It has been verified that the build procedure and log uploading both work as expected.
4534e4c
to
a3c6f7e
Compare
closes #69, closes #53, closes #100, closes #123
Change logs
This PR implements singlenode deployment. All code, scripts and tests are incorporated.
Please see the full design proposal: https://github.com/orgs/cloudberrydb/discussions/188#discussion-5593615 which has already been discussed with and approved by reviewers.
Commit messages're still in a mess. I'll squash them into a nice write-up after we finish reviewing.This PR is heavily based on @wfnuser's previous work (#77).
Why are the changes needed?
Please refer to the Motivation section of the design proposal.