Skip to content
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

create proc/func/trigger, create/drop database, transaction statements are not being tracked by the extensions which utilize processutility hook #1424

Conversation

kritika-0601
Copy link
Contributor

@kritika-0601 kritika-0601 commented Apr 13, 2023

Currently statements like create proc/func/trigger/database, drop database and transaction statements are not being tracked by the extensions which utilises the processutility hooks in Babelfish. Above issue happens because bbf_processutility doesn't call subsequent/previous processutility hook for above statements due to which these subsequent extension hooks are not being executed.
This commit resolves above issue by adding a custom processutility hook in engine to execute above Babelfish statements so that execution happens at last step of processutility hook chain which makes sure that subsequent extension hooks are executed.

  • Before:
    processUtility_hooks()-> ... -> bbf_processUtility_hook() -> executes above statements -> execution completed/doesn't return to previous hook execution or doesn't execute subsequent hooks

  • After:
    processUtility_hooks()-> ... -> bbf_processUtility_hook() -> ... -> processUtility_hooks()-> ... -> Standard_processUtility()-> executes above statements using custom hook -> returns to previous hook execution

Task: BABEL-4218

Link for engine PR: babelfish-for-postgresql/postgresql_modified_for_babelfish#127

Since this PR includes calling the engine side function to extension side using hook, we do not require extra test scenarios to test it, it is already being covered in previous tests.
We have separate test PR for testing pg_stat_statements extension.

Test Scenarios Covered

  • Use case based -

  • Boundary conditions -

  • Arbitrary inputs -

  • Negative test cases -

  • Minor version upgrade tests -

  • Major version upgrade tests -

  • Performance tests -

  • Tooling impact -

  • Client tests -

Check List

  • Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is under the terms of the Apache 2.0 and PostgreSQL licenses, and grant any person obtaining a copy of the contribution permission to relicense all or a portion of my contribution to the PostgreSQL License solely to contribute all or a portion of my contribution to the PostgreSQL open source project.

For more information on following Developer Certificate of Origin and signing off your commits, please check here.

kritika-0601 and others added 24 commits March 31, 2023 17:00
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
contrib/babelfishpg_tsql/src/hooks.c Outdated Show resolved Hide resolved
contrib/babelfishpg_tsql/src/hooks.h Outdated Show resolved Hide resolved
contrib/babelfishpg_tsql/src/pl_handler.c Outdated Show resolved Hide resolved
contrib/babelfishpg_tsql/src/hooks.h Outdated Show resolved Hide resolved
Kritika and others added 5 commits April 19, 2023 04:51
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Kritika and others added 10 commits May 2, 2023 06:39
    Subsequent processutility hooks after bbf_processutilty are not being called.
    Created a hook for that and called it inside relevant
    ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
    Subsequent processutility hooks after bbf_processutilty are not being called.
    Created a hook for that and called it inside relevant
    ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
        Subsequent processutility hooks after bbf_processutilty are not being called.
        Created a hook for that and called it inside relevant
        ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
Kritika added 3 commits May 3, 2023 08:22
    Subsequent processutility hooks after bbf_processutilty are not being called.
    Created a hook for that and called it inside relevant
    ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
    Subsequent processutility hooks after bbf_processutilty are not being called.
    Created a hook for that and called it inside relevant
    ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
surendravishnoi
surendravishnoi previously approved these changes May 8, 2023
        Subsequent processutility hooks after bbf_processutilty are not being called.
        Created a hook for that and called it inside relevant
        ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
surendravishnoi
surendravishnoi previously approved these changes May 8, 2023
Kritika added 2 commits May 16, 2023 08:18
Subsequent processutility hooks after bbf_processutilty are not being called.
Created a hook for that and called it inside relevant
ProcessUtility function.

Signed-off-by: Kritika <[email protected]>
contrib/babelfishpg_tsql/src/pltsql_utils.c Outdated Show resolved Hide resolved
contrib/babelfishpg_tsql/src/pltsql_utils.c Outdated Show resolved Hide resolved
contrib/babelfishpg_tsql/src/pltsql_utils.c Outdated Show resolved Hide resolved
@kritika-0601 kritika-0601 changed the title Create proc/func/database etc not visible in pg_stat_statements view create proc/func/trigger, create/drop database, transaction statements are not being tracked by the extensions which utilize processutility hook Jun 12, 2023
@shardgupta shardgupta merged commit 23f0b11 into babelfish-for-postgresql:BABEL_3_X_DEV Jun 13, 2023
RIC06X pushed a commit to amazon-aurora/babelfish_extensions that referenced this pull request Jul 6, 2023
…s are not being tracked by the extensions which utilize processutility hook (babelfish-for-postgresql#1424)

Currently statements like create proc/func/trigger/database, drop database and transaction statements are not being tracked by the extensions which utilises the processutility hooks in Babelfish. Above issue happens because bbf_processutility doesn't call subsequent/previous processutility hook for above statements due to which these subsequent extension hooks are not being executed.
This commit resolves above issue by adding a custom processutility hook in engine to execute above Babelfish statements so that execution happens at last step of processutility hook chain which makes sure that subsequent extension hooks are executed.

Before:
processUtility_hooks()-> ... -> bbf_processUtility_hook() -> executes above statements -> execution completed/doesn't return to previous hook execution or doesn't execute subsequent hooks

After:
processUtility_hooks()-> ... -> bbf_processUtility_hook() -> ... -> processUtility_hooks()-> ... -> Standard_processUtility()-> executes above statements using custom hook -> returns to previous hook execution

Task: BABEL-4218

Link for engine PR: babelfish-for-postgresql/postgresql_modified_for_babelfish#127

Signed-off-by: Kritika <[email protected]>
Santifedz pushed a commit to amazon-aurora/babelfish_extensions that referenced this pull request Aug 7, 2023
…s are not being tracked by the extensions which utilize processutility hook (babelfish-for-postgresql#1424)

Currently statements like create proc/func/trigger/database, drop database and transaction statements are not being tracked by the extensions which utilises the processutility hooks in Babelfish. Above issue happens because bbf_processutility doesn't call subsequent/previous processutility hook for above statements due to which these subsequent extension hooks are not being executed.
This commit resolves above issue by adding a custom processutility hook in engine to execute above Babelfish statements so that execution happens at last step of processutility hook chain which makes sure that subsequent extension hooks are executed.

Before:
processUtility_hooks()-> ... -> bbf_processUtility_hook() -> executes above statements -> execution completed/doesn't return to previous hook execution or doesn't execute subsequent hooks

After:
processUtility_hooks()-> ... -> bbf_processUtility_hook() -> ... -> processUtility_hooks()-> ... -> Standard_processUtility()-> executes above statements using custom hook -> returns to previous hook execution

Task: BABEL-4218

Link for engine PR: babelfish-for-postgresql/postgresql_modified_for_babelfish#127

Signed-off-by: Kritika <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants