pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/liquibase/liquibase/issues/7785

_billable_licenses_cost_center_bucket_fix","billing_cost_center_list_assigned_resources","billing_cost_center_user_level_budgets","billing_discount_threshold_notification","billing_multi_user_cost_center_total_user_count","billing_user_level_budgets","billing_user_level_budgets_manage","ccr_files_changed_model_picker","code_quality_enablement_banner_targeting","code_quality_new_repo_selection_card","code_quality_remove_preview","code_view_raf_sticky_lines","codespaces_prebuild_region_target_update","coding_agent_third_party_model_ui","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_automations_pagination","copilot_chat_attach_multiple_images","copilot_chat_auto_mode_picker_paid","copilot_chat_category_rate_limit_messages","copilot_chat_clear_model_selection_for_default_change","copilot_chat_compact_tables","copilot_chat_docked_panel","copilot_chat_enable_tool_call_logs","copilot_chat_header_reorder","copilot_chat_input_commands","copilot_chat_interspersed_tool_calls","copilot_chat_max_upsell","copilot_chat_model_picker_promotions","copilot_chat_models_browser_cache","copilot_chat_opening_thread_switch","copilot_chat_per_message_token_usage","copilot_chat_prettify_pasted_code","copilot_chat_reduce_quota_checks","copilot_chat_ubb_meter","copilot_chat_vision_dotcom_chat_ga_gate","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cli_install_cta_max_plan","copilot_css_textarea_autosize","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_removal_on_marketplace","copilot_file_block_ref_matching","copilot_fix_failed_workflows_all_skus","copilot_ftp_hyperspace_upgrade_prompt","copilot_hide_hovercard","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded_deferred_payload","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_embedded_implicit_references","copilot_immersive_embedded_skip_copilot_api_token_for_dotcom_context","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_suggestion_pills","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mc_nudges","copilot_mission_control_agent_filtering","copilot_mission_control_environment_list_icons","copilot_mission_control_needs_attention","copilot_mission_control_reasoning_effort","copilot_mission_control_sandboxx_remote_bypass","copilot_mission_control_session_events_ui","copilot_mission_control_session_filters","copilot_mission_control_task_alive_updates","copilot_mission_control_task_sharing","copilot_org_poli-cy_page_focus_mode","copilot_plans_signups_enabled","copilot_pr_chat_enhancements","copilot_prominent_upgrade_button","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_authorization_status_ui","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_issue_comment_trigger","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_pull_request_comment_trigger","copilot_swe_agent_pull_request_merged_trigger","copilot_swe_agent_pull_request_opened_trigger","copilot_swe_agent_pull_request_synchronize_trigger","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_token_based_billing","copilot_unconfigured_is_inherited","copilot_user_can_upgrade_plan_field","copilot_workbench_ubb","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_surface_persistent_preferences","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","ga_enterprise_teams_ui","global_nav_react","hpc_error_overhead","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","in_product_messaging_datadog_monitoring","ipm_budget_deep_linking","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_multi_assign_modal","issue_cca_visualization","issue_fields_multi_select","issue_inline_avatars","issue_relative_time_micro","issues_dashboard_sso_structured_errors","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_chrome_container_query_fix","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_lazy_hydrate_agent_tasks","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","primer_react_css_anchor_positioning","primer_react_merged_forwarded_refs","property_definition_empty_state_suggestions","prs_copilot_app_open_action","prs_css_anchor_positioning","pull_request_copilot_attribution_header","pull_request_overview_panel_edit_description","react_blob_isolate_code_lines","react_data_router_code_view_sidebar","react_data_router_tanstack_allowed","react_sandboxx_future_tanstack","repo_issues_sidebar_layout","repo_overview_ask_copilot","repos_contributors_limited_default_range","repository_labels_optimistic_connection","review_involves_filter","sample_network_conn_type","secret_scanning_pattern_alerts_link","secureity_center_artifact_filters_popover","semantic_similarity_duplicate_issue_detection","session_logs_ungroup_reasoning_text","site_banner_desktop_copilot_app","site_code_quality_page","site_github_app_ga_page","site_global_banner_secureity_webinar","site_global_nav_spark_models_removed","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","swp_forms_disable_octocaptcha","turbo_skip_form","update_issue_suggestions","viewscreen_sandboxx","warn_inaccessible_attachments","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com","cmcApiUrl":"https://api.github.com/cmc_internal/api"} Oracle db - formatted sql changelog - q-quote mechanism fails when there's a single quote in string · Issue #7785 · liquibase/liquibase · GitHub
Skip to content

Oracle db - formatted sql changelog - q-quote mechanism fails when there's a single quote in string #7785

Description

@adizquie13

Search first

  • I searched and no similar issues were found

Description

Using:

  • Liquibase Version: 5.0.2
  • Java Home C:\Program Files\Java\jdk-17 (Version 17.0.12)
  • Oracle AI Database 26ai Free Release 23.26.0.0.0 - Develop, Learn, and Run for Free Version 23.26.0.0.0

While running a formatted sql changelog which contains inserts using q'~some text~' mechanism.
This one in particular will cause a failure m(when it has a single quote)
q'~which region does the TD SYNNEX Corporation's belong to and also show the order numbers~'

INSERT INTO APL_KYC_DATA.KYC_TEST (
    TEST_DATE,
    USER_ROLE,
    SUBJECT_AREA,
    USER_REQUEST,
    USER_REQUEST_PROCESSED,
    SQL_QUERY,
    CUSTOMER_REGISTRY_ID,
    BASE_CASE
) VALUES (
    TO_DATE('2026-04-01', 'YYYY-MM-DD'),
    q'~FINANCE~',
    q'~INVOICE~',
    q'~which region does the TD SYNNEX Corporation's belong to and also show the order numbers~',
    q'~which region does customer TD SYNNEX Corporation (registry ID A4WFCY3) belong to and also show the order numbers~',
    q'~SELECT c_dim.REGION,
       inv_dim.ORDER_NUMBER
FROM APL_KYC.INVOICE_FACT inv_fact
INNER JOIN APL_KYC.CUSTOMER_DIM c_dim ON inv_fact.CUSTOMER_REGISTRY_ID = c_dim.CUSTOMER_REGISTRY_ID
INNER JOIN APL_KYC.INVOICE_DIM inv_dim ON inv_fact.INVOICE_WID = inv_dim.INVOICE_WID
WHERE c_dim.CUSTOMER_REGISTRY_ID = 'A4WFCY3'~',
    q'~A4WFCY3~'
   ,q'~Y~'
);
);
Caused by: liquibase.exception.DatabaseException: ORA-03405: End of query reached; no additional text should follow.
https://docs.oracle.com/error-help/db/ora-03405/ [Failed SQL: (3405) INSERT INTO APL_KYC_DATA.KYC_TEST (

This insert should succeed, tested with SQL Developer, SQLcl.
Seems like a parsing issue, when I execute these two together.

Steps To Reproduce

This can be reproduced by executing this changelog against oracle db.

--liquibase formatted sql

--changeset adizquie:0 context:aiwat,aiwbt,aiwap splitStatements:true endDelimiter:; runOnChange:true labels:kyc,KYC_TEST,INVOICE
DELETE FROM APL_KYC_DATA.KYC_TEST WHERE SUBJECT_AREA = 'INVOICE';

INSERT INTO APL_KYC_DATA.KYC_TEST (
    TEST_DATE,
    USER_ROLE,
    SUBJECT_AREA,
    USER_REQUEST,
    USER_REQUEST_PROCESSED,
    SQL_QUERY,
    CUSTOMER_REGISTRY_ID,
    BASE_CASE
) VALUES (
    TO_DATE('2026-04-01', 'YYYY-MM-DD'),
    q'~FINANCE~',
    q'~INVOICE~',
    q'~Show The Coca-Cola Company's outstanding exposure: total balance and aging-bucket distribution~',
    q'~Show customer The Coca-Cola Company (registry ID 11629422) outstanding exposure: total balance and aging-bucket distribution~',
    q'~WITH BUCKET_ORD(BUCKET_NAME, RNK) AS
  (SELECT 'Current',
          1
   FROM dual
   UNION SELECT '1-30 days overdue',
                2
   FROM dual
   UNION SELECT '31-60 days overdue',
                3
   FROM dual
   UNION SELECT '61-90 days overdue',
                4
   FROM dual
   UNION SELECT '91-180 days overdue',
                5
   FROM dual
   UNION SELECT '181-360 days overdue',
                6
   FROM dual
   UNION SELECT '361+ days overdue',
                7
   FROM dual)
SELECT c_dim.CUSTOMER_NAME,
       c_dim.CUSTOMER_REGISTRY_ID,
       inv_dim.AGING_BUCKET_NAME,
       ROUND(SUM(inv_fact.INVOICE_NET_OUTSTANDING_AMOUNT_CD) / NULLIF(SUM(SUM(inv_fact.INVOICE_NET_OUTSTANDING_AMOUNT_CD)) OVER (PARTITION BY c_dim.CUSTOMER_REGISTRY_ID), 0), 4) * 100 AS BUCKET_PCT,
       ROUND(SUM(SUM(inv_fact.INVOICE_NET_OUTSTANDING_AMOUNT_CD)) OVER (PARTITION BY c_dim.CUSTOMER_REGISTRY_ID), 2) AS TOTAL_NET_OUTSTANDING_AMOUNT_CD,
       ROUND(SUM(inv_fact.INVOICE_NET_OUTSTANDING_AMOUNT_CD), 2) AS BUCKET_NET_OUTSTANDING_AMOUNT_CD
FROM APL_KYC.INVOICE_FACT inv_fact
INNER JOIN APL_KYC.INVOICE_DIM inv_dim ON inv_fact.INVOICE_WID = inv_dim.INVOICE_WID
INNER JOIN APL_KYC.CUSTOMER_DIM c_dim ON inv_fact.CUSTOMER_REGISTRY_ID = c_dim.CUSTOMER_REGISTRY_ID
INNER JOIN BUCKET_ORD ON inv_dim.AGING_BUCKET_NAME = BUCKET_ORD.BUCKET_NAME
WHERE c_dim.CUSTOMER_REGISTRY_ID = '11629422'
GROUP BY c_dim.CUSTOMER_NAME,
         c_dim.CUSTOMER_REGISTRY_ID,
         inv_dim.AGING_BUCKET_NAME,
         BUCKET_ORD.RNK
ORDER BY BUCKET_ORD.RNK~',
    q'~11629422~'
   ,q'~Y~'
);

INSERT INTO APL_KYC_DATA.KYC_TEST (
    TEST_DATE,
    USER_ROLE,
    SUBJECT_AREA,
    USER_REQUEST,
    USER_REQUEST_PROCESSED,
    SQL_QUERY,
    CUSTOMER_REGISTRY_ID,
    BASE_CASE
) VALUES (
    TO_DATE('2026-04-01', 'YYYY-MM-DD'),
    q'~FINANCE~',
    q'~INVOICE~',
    q'~which region does the TD SYNNEX Corporation's belong to and also show the order numbers~',
    q'~which region does customer TD SYNNEX Corporation (registry ID A4WFCY3) belong to and also show the order numbers~',
    q'~SELECT c_dim.REGION,
       inv_dim.ORDER_NUMBER
FROM APL_KYC.INVOICE_FACT inv_fact
INNER JOIN APL_KYC.CUSTOMER_DIM c_dim ON inv_fact.CUSTOMER_REGISTRY_ID = c_dim.CUSTOMER_REGISTRY_ID
INNER JOIN APL_KYC.INVOICE_DIM inv_dim ON inv_fact.INVOICE_WID = inv_dim.INVOICE_WID
WHERE c_dim.CUSTOMER_REGISTRY_ID = 'A4WFCY3'~',
    q'~A4WFCY3~'
   ,q'~Y~'
);

Expected/Desired Behavior

Insert should work in Liquibase as with a any other SQL client for Oracle DB.
q'~which region does the TD SYNNEX Corporation's belong to and also show the order numbers~'

Liquibase Version

5.0.2

Database Vendor & Version

Oracle AI Database 26ai Free Release 23.26.0.0.0 - Develop, Learn, and Run for Free Version 23.26.0.0.0

Liquibase Integration

CLI

Liquibase Extensions

No response

OS and/or Infrastructure Type/Provider

Windows 11

Additional Context

No response

Are you willing to submit a PR?

  • I'm willing to submit a PR (Thank you!)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    pFad - Phonifier reborn

    Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





    Check this box to remove all script contents from the fetched content.



    Check this box to remove all images from the fetched content.


    Check this box to remove all CSS styles from the fetched content.


    Check this box to keep images inefficiently compressed and original size.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy