From 42a0a59ad2cc2dab843167493a78d96f2d242fec Mon Sep 17 00:00:00 2001 From: shubham-yb Date: Mon, 3 Feb 2025 14:30:19 +0000 Subject: [PATCH 01/15] Added Framework to test HTML reports --- migtests/scripts/compare-html-reports.py | 158 + .../scripts/run-validate-assessment-report.sh | 16 +- .../expectedAssessmentReport.html | 2392 +++ .../expectedAssessmentReport.html | 2319 +++ .../expectedAssessmentReport.html | 14457 ++++++++++++++++ 5 files changed, 19339 insertions(+), 3 deletions(-) create mode 100755 migtests/scripts/compare-html-reports.py create mode 100644 migtests/tests/oracle/assessment-report-test/expectedAssessmentReport.html create mode 100644 migtests/tests/pg/assessment-report-test-uqc/expectedAssessmentReport.html create mode 100644 migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html diff --git a/migtests/scripts/compare-html-reports.py b/migtests/scripts/compare-html-reports.py new file mode 100755 index 0000000000..1f3f661329 --- /dev/null +++ b/migtests/scripts/compare-html-reports.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 + +import argparse +import re +from bs4 import BeautifulSoup +import difflib +import sys + +def normalize_text(text): + # Replace non-breaking spaces and other similar characters + text = text.replace('\xa0', ' ') + text = text.replace('\u200B', '') + text = re.sub(r'\s+', ' ', text) + return text.strip() + +def extract_html_data(html_content): + """Extracts structured data from HTML content and normalizes it.""" + soup = BeautifulSoup(html_content, 'html.parser') + + def extract_texts(elements): + """Extract and normalize inner text while keeping structure.""" + return [normalize_text(el.get_text(separator=" ")) for el in elements] + + all_divs = soup.find_all("div") + filtered_divs = [] + should_sort = False + + for div in all_divs: + prev_h2 = div.find_previous("h2") + if prev_h2 and "Sharding Recommendations" in prev_h2.get_text(): + should_sort = True + + if "wrapper" not in div.get("class", []): # Keep the wrapper exclusion + filtered_divs.append((div, should_sort)) + + # Extract and process div text + div_texts_sorted = [] + for div, should_sort in filtered_divs: + div_text = normalize_text(div.get_text(separator=" ")).strip() + if should_sort: + div_text = " ".join(sorted(div_text.split())) # Sort content within div + div_texts_sorted.append(div_text) + + div_texts_sorted = sorted(div_texts_sorted) if any(s for _, s in filtered_divs) else div_texts_sorted + + paragraphs = soup.find_all("p") + + # Flag to skip the first

after the

Migration Complexity Explanation + skip_first_paragraph = False + filtered_paragraphs = [] + + for p in paragraphs: + prev_element = p.find_previous("h2") + if prev_element and "Migration Complexity Explanation" in prev_element.get_text(): + if not skip_first_paragraph: + skip_first_paragraph = True + continue + filtered_paragraphs.append(p) + + def normalize_table_names(tds): + """Extract and normalize the table names from and sort them.""" + table_names = [] + for td in tds: + names = [normalize_text(name).strip() for name in td.get_text(separator="\n").split("\n") if name.strip()] + table_names.extend(names) + return sorted(table_names) + + def sort_table_data(tables): + """Sort tables by rows and within rows by their contents.""" + sorted_tables = [] + for table in tables: + rows = table.find_all("tr") + table_data = [] + for row in rows: + cols = row.find_all("td") + if len(cols) > 1: + table_data.append(normalize_table_names(cols)) + if table_data: + sorted_tables.append(table_data) + return sorted_tables + + data = { + "title": normalize_text(soup.title.string) if soup.title and soup.title.string else "No Title", + "headings": extract_texts(soup.find_all(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])), + "paragraphs": extract_texts(filtered_paragraphs), + "tables": sort_table_data(soup.find_all("table")), + "links": { + k: v for k, v in sorted( + {normalize_text(a.get("href") or ""): normalize_text(a.text) for a in soup.find_all("a")}.items() + ) + }, + "spans": extract_texts(soup.find_all("span")), + "divs": div_texts_sorted + } + + return data + + +def generate_diff_list(list1, list2, section_name, file1_path, file2_path): + """Generate a structured diff for ordered lists (headings, paragraphs, spans, divs) showing only differences.""" + if section_name == "tables": + # If list1 and list2 are already lists of table names, directly sort them + list1 = [sorted(table) if isinstance(table, list) else table for table in list1] + list2 = [sorted(table) if isinstance(table, list) else table for table in list2] + diff = list(difflib.unified_diff( + [f"{i+1}. {item}" for i, item in enumerate(list1)], + [f"{i+1}. {item}" for i, item in enumerate(list2)], + fromfile=f"{file1_path}", + tofile=f"{file2_path}", + lineterm="", + n=0 # Ensures ONLY differences are shown (no context lines) + )) + return "\n".join(diff) or None # Return None if no differences + +def dict_to_list(dict_data): + """Convert dictionary to list of formatted strings.""" + return [f"{k} -> {v}" for k, v in dict_data.items()] + +def compare_html_reports(file1, file2): + """Compares two HTML reports and prints structured differences.""" + with open(file1, "r", encoding="utf-8") as f1, open(file2, "r", encoding="utf-8") as f2: + html_data1 = extract_html_data(f1.read()) + html_data2 = extract_html_data(f2.read()) + + differences = {} + + for key in html_data1.keys(): + if html_data1[key] != html_data2[key]: + if isinstance(html_data1[key], list): # For headings, paragraphs, spans, divs + diff = generate_diff_list(html_data1[key], html_data2[key], key, file1, file2) + elif isinstance(html_data1[key], dict): # For links dictionary + diff = generate_diff_list( + dict_to_list(html_data1[key]), + dict_to_list(html_data2[key]), + key, file1, file2 + ) + else: # Title (single string) + diff = generate_diff_list([html_data1[key]], [html_data2[key]], key, file1, file2) + + if diff: # Only store sections that have differences + differences[key] = diff + + if not differences: + print("The reports are identical.") + else: + print("Differences found:") + for section, diff_text in differences.items(): + print(f"\n=== {section.upper()} DIFFERENCES ===") + print(diff_text) + sys.exit(1) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Compare two HTML reports.") + parser.add_argument("report1", help="Path to the first HTML report") + parser.add_argument("report2", help="Path to the second HTML report") + + args = parser.parse_args() + compare_html_reports(args.report1, args.report2) \ No newline at end of file diff --git a/migtests/scripts/run-validate-assessment-report.sh b/migtests/scripts/run-validate-assessment-report.sh index 75e3d8875c..0650f22b53 100755 --- a/migtests/scripts/run-validate-assessment-report.sh +++ b/migtests/scripts/run-validate-assessment-report.sh @@ -70,12 +70,22 @@ main() { # Checking if the assessment reports were created if [ -f "${EXPORT_DIR}/assessment/reports/migration_assessment_report.html" ] && [ -f "${EXPORT_DIR}/assessment/reports/migration_assessment_report.json" ]; then echo "Assessment reports created successfully." + echo "Checking for Failures" validate_failure_reasoning "${EXPORT_DIR}/assessment/reports/migration_assessment_report.json" + echo "Comparing Report contents" - expected_file="${TEST_DIR}/expectedAssessmentReport.json" - actual_file="${EXPORT_DIR}/assessment/reports/migration_assessment_report.json" - compare_json_reports ${expected_file} ${actual_file} + + echo "Comparing JSON report" + expected_json_file="${TEST_DIR}/expectedAssessmentReport.json" + actual_json_file="${EXPORT_DIR}/assessment/reports/migration_assessment_report.json" + compare_json_reports ${expected_json_file} ${actual_json_file} + + echo "Comparing HTML report" + expected_html_file="${TEST_DIR}/expectedAssessmentReport.html" + actual_html_file="${EXPORT_DIR}/assessment/reports/migration_assessment_report.html" + ${SCRIPTS}/compare-html-reports.py ${expected_html_file} ${actual_html_file} + else echo "Error: Assessment reports were not created successfully." cat_log_file "yb-voyager-assess-migration.log" diff --git a/migtests/tests/oracle/assessment-report-test/expectedAssessmentReport.html b/migtests/tests/oracle/assessment-report-test/expectedAssessmentReport.html new file mode 100644 index 0000000000..18ded31a94 --- /dev/null +++ b/migtests/tests/oracle/assessment-report-test/expectedAssessmentReport.html @@ -0,0 +1,2392 @@ + + + + Migration Assessment Report + + + + +
+

Migration Assessment Report

+

Voyager Version: main

+

Database Name: ORCLPDB1

+ +

Schema Name: + + TEST_SCHEMA  + +

+ + +

Database Version: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

+ + +

Target YB Version: 2024.2.0.0

+ + +

Migration Complexity: MEDIUM

+ + +

Database Objects

+

Objects that will be created on the target YugabyteDB. Some of the index and sequence names might be different from those in the source database.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Object TypeTotal ObjectsObject Names
SEQUENCE1 +
+ + simple_log_seq
+ +
+
TABLE90 +
+ + "
+ + simple_car_type
+ + accounts_list_partitioned
+ + bfile_table
+ + blob_table
+ + c
+ + c1
+ + c2
+ + clob_table
+ + customers
+ + case_sensitive_columns
+ + departments
+ + dept
+ + emp
+ + employees
+ + employees2
+ + employees_misc
+ + empty_partition_table
+ + empty_partition_table2
+ + foo
+ + func_based_table
+ + func_rev_table
+ + generated_column_table
+ + iot_table
+ + mixed_case_table_name_test
+ + nclob_table
+ + orders
+ + orders_interval_partition
+ + order_items_range_partitioned
+ + reserved_column
+ + rev_table
+ + sales
+ + sales_bitmap_idx_table
+ + sales_hash
+ + session_log
+ + session_log1
+ + session_log2
+ + session_log3
+ + session_log4
+ + simple_cars_table
+ + simple_log
+ + simple_table
+ + sub_par_test
+ + synonym_table
+ + test_timezone
+ + text_table
+ + trunc_test
+ + view_table1
+ + view_table2
+ + xml_table
+ + "check"
+ + "group"
+ + accounts_list_partitioned_p_northwest
+ + accounts_list_partitioned_p_southwest
+ + accounts_list_partitioned_p_northeast
+ + accounts_list_partitioned_p_southeast
+ + accounts_list_partitioned_p_northcentral
+ + accounts_list_partitioned_p_southcentral
+ + departments_p1
+ + departments_p2
+ + departments_p3
+ + empty_partition_table_p_west
+ + empty_partition_table_p_east
+ + empty_partition_table2_p_west
+ + empty_partition_table2_p_east
+ + orders_interval_partition_interval_partition_less_than_2015
+ + orders_interval_partition_interval_partition_less_than_2016
+ + orders_interval_partition_interval_partition_less_than_2017
+ + orders_interval_partition_interval_partition_less_than_2018
+ + order_items_range_partitioned_p1
+ + order_items_range_partitioned_p2
+ + order_items_range_partitioned_p3
+ + sales_hash_p1
+ + sales_hash_p2
+ + sales_hash_p3
+ + sales_hash_p4
+ + sub_par_test_p1
+ + sub_par_test_p1_sp1
+ + sub_par_test_p1_sp11
+ + sub_par_test_p2
+ + sub_par_test_p2_sp2
+ + sub_par_test_p2_sp22
+ + sub_par_test_p3
+ + sub_par_test_p3_sp3
+ + sub_par_test_p3_sp33
+ + sub_par_test_p4
+ + sub_par_test_p4_sp4
+ + sub_par_test_p4_sp44
+ + sub_par_test_p5
+ + sub_par_test_p5_sp5
+ +
+
INDEX3 +
+ + func_based_table_data ON func_based_table
+ + orders_customer_id ON orders
+ + sales_bitmap_idx_table_product_id ON sales_bitmap_idx_table
+ +
+
TRIGGER1 +
+ + trg_simple_insert
+ +
+
FUNCTION2 +
+ + trunc_date
+ + trunc_time_stamp
+ +
+
PROCEDURE1 +
+ + insert_session_logs
+ +
+
SYNONYM1 +
+ + test_schema.syn
+ +
+
+ + +

Sharding Recommendations

+ + + + + + + + + + + +
Colocated TablesSharded Tables
+
+ + DEPARTMENTS_P1
+ + DEPARTMENTS_P2
+ + DEPARTMENTS_P3
+ + DEPT
+ + EMP
+ + EMPTY_PARTITION_TABLE2_P_EAST
+ + EMPTY_PARTITION_TABLE2_P_WEST
+ + EMPTY_PARTITION_TABLE_P_EAST
+ + EMPTY_PARTITION_TABLE_P_WEST
+ + GENERATED_COLUMN_TABLE
+ + IOT_TABLE
+ + SALES_HASH_P1
+ + SALES_HASH_P3
+ + SIMPLE_LOG
+ + SIMPLE_TABLE
+ + SYNONYM_TABLE
+ + BFILE_TABLE
+ + BLOB_TABLE
+ + C
+ + C1
+ + C2
+ + CLOB_TABLE
+ + CUSTOMERS
+ + Case_Sensitive_Columns
+ + EMPLOYEES
+ + EMPLOYEES_MISC
+ + EMPLOYEE_MV_IMMEDIATE
+ + FOO
+ + FUNC_BASED_TABLE
+ + FUNC_REV_TABLE
+ + Mixed_Case_Table_Name_Test
+ + NCLOB_TABLE
+ + ORDERS
+ + RESERVED_COLUMN
+ + REV_TABLE
+ + SALES_BITMAP_IDX_TABLE
+ + SESSION_LOG
+ + SESSION_LOG1
+ + SESSION_LOG2
+ + SESSION_LOG3
+ + SESSION_LOG4
+ + SIMPLE_CARS_TABLE
+ + TEST_TIMEZONE
+ + TEXT_TABLE
+ + TRUNC_TEST
+ + VIEW_TABLE1
+ + VIEW_TABLE2
+ + XML_TABLE
+ + check
+ + group
+ + ACCOUNTS_LIST_PARTITIONED_P_NORTHCENTRAL
+ + ACCOUNTS_LIST_PARTITIONED_P_NORTHEAST
+ + ACCOUNTS_LIST_PARTITIONED_P_NORTHWEST
+ + ACCOUNTS_LIST_PARTITIONED_P_SOUTHCENTRAL
+ + ACCOUNTS_LIST_PARTITIONED_P_SOUTHEAST
+ + ACCOUNTS_LIST_PARTITIONED_P_SOUTHWEST
+ + ORDERS_INTERVAL_PARTITION_INTERVAL_PARTITION_LESS_THAN_2015
+ + ORDERS_INTERVAL_PARTITION_INTERVAL_PARTITION_LESS_THAN_2016
+ + ORDERS_INTERVAL_PARTITION_INTERVAL_PARTITION_LESS_THAN_2017
+ + ORDERS_INTERVAL_PARTITION_INTERVAL_PARTITION_LESS_THAN_2018
+ + ORDER_ITEMS_RANGE_PARTITIONED_P1
+ + ORDER_ITEMS_RANGE_PARTITIONED_P2
+ + ORDER_ITEMS_RANGE_PARTITIONED_P3
+ + SALES_HASH_P2
+ + SALES_HASH_P4
+ + SUB_PAR_TEST_P1_SP1
+ + SUB_PAR_TEST_P1_SP11
+ + SUB_PAR_TEST_P2_SP2
+ + SUB_PAR_TEST_P2_SP22
+ + SUB_PAR_TEST_P3_SP3
+ + SUB_PAR_TEST_P3_SP33
+ + SUB_PAR_TEST_P4_SP4
+ + SUB_PAR_TEST_P4_SP44
+ + SUB_PAR_TEST_P5_SP5
+ +
+
+
+ +
+
+

Sizing Recommendations

+ + + + + + + + + + + + +
ParameterRecommendation
Num of Nodes3
vCPU per instance4
Memory per instance(GiB)16
Optimal select connections per node8
Optimal insert connections per node12
Parallel Voyager Jobs1
Estimated time taken for data import 1 min
+

Reasoning:

+

Recommended instance type with 4 vCPU and 16 GiB memory could fit 78 objects (74 tables/materialized views and 4 explicit/implicit indexes) with 192.00 MB size and throughput requirement of 0 reads/sec and 0 writes/sec as colocated. Non leaf partition tables/indexes and unsupported tables/indexes were not considered.

+ + + + + + +

Assessment Issues

+ +
+ +
+

Total Issues: 17

+

Below is a detailed breakdown of each issue.

+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Category + + Type + Object/SQL Preview + Impact +
+ +    + Unsupported Features + Compound Trigger + + trg_simple_insert + + -
+ +    + Unsupported Features + Unsupported Indexes + + Index Name: TEXT_INDEX, Index Type=DOMAIN INDEX + + -
+ +    + Unsupported Features + Unsupported Indexes + + Index Name: REV_INDEX, Index Type=NORMAL/REV INDEX + + -
+ +    + Unsupported Features + Unsupported Indexes + + Index Name: FUNC_REV_INDEX, Index Type=FUNCTION-BASED NORMAL/REV INDEX + + -
+ +    + Unsupported Features + Unsupported Indexes + + Index Name: IDX_EMP_DEPT_CLUSTER, Index Type=CLUSTER INDEX + + -
+ +    + Unsupported Features + Unsupported Indexes + + Index Name: PK_IOT_TABLE, Index Type=IOT - TOP INDEX + + -
+ +    + Unsupported Features + Inherited Types + + SIMPLE_CAR_TYPE + + -
+ +    + Unsupported Features + Virtual Columns + + XML_TABLE.DATA + + -
+ +    + Unsupported Features + Virtual Columns + + GENERATED_COLUMN_TABLE.TOTAL_PRICE + + -
+ +    + Unsupported Features + Unsupported Partitioning Methods + + Table Name: SALES, Partition Method: SYSTEM PARTITION + + -
+ +    + Unsupported Features + Unsupported Partitioning Methods + + Table Name: EMPLOYEES2, Partition Method: REFERENCE PARTITION + + -
+ +    + Unsupported Datatypes + Xmltype + + TEST_SCHEMA.XML_TABLE.DATA + + -
+ +    + Unsupported Datatypes + Nclob + + TEST_SCHEMA.NCLOB_TABLE.DATA + + -
+ +    + Unsupported Datatypes + Clob + + TEST_SCHEMA.CLOB_TABLE.DATA + + -
+ +    + Unsupported Datatypes + Blob + + TEST_SCHEMA.BLOB_TABLE.DATA + + -
+ +    + Unsupported Datatypes + Clob + + TEST_SCHEMA.TEXT_TABLE.TEXT_DATA + + -
+ +    + Unsupported Datatypes + Bfile + + TEST_SCHEMA.BFILE_TABLE.DATA + + -
+ + + +
+
+
+

Notes

+
    + +
  • For sharding/colocation recommendations, each partition is treated individually. During the export schema phase, all the partitions of a partitioned table are currently created as colocated by default. +To manually modify the schema, please refer: https://github.com/yugabyte/yb-voyager/issues/1581.
  • + +
  • Reference and System Partitioned tables are created as normal tables, but are not considered for target cluster sizing recommendations.
  • + +
  • There are some BITMAP indexes present in the schema that will get converted to GIN indexes, but GIN indexes are partially supported in YugabyteDB as mentioned in https://github.com/yugabyte/yugabyte-db/issues/7850 so take a look and modify them if not supported.
  • + +
+
+ + +
+ + diff --git a/migtests/tests/pg/assessment-report-test-uqc/expectedAssessmentReport.html b/migtests/tests/pg/assessment-report-test-uqc/expectedAssessmentReport.html new file mode 100644 index 0000000000..5bb27f779d --- /dev/null +++ b/migtests/tests/pg/assessment-report-test-uqc/expectedAssessmentReport.html @@ -0,0 +1,2319 @@ + + + + Migration Assessment Report + + + + +
+

Migration Assessment Report

+

Voyager Version: main

+

Database Name: pg_assessment_report_uqc

+ + +

Database Version: 17.2 (Ubuntu 17.2-1.pgdg22.04+1)

+ + +

Target YB Version: 2024.2.0.0

+ + +

Migration Complexity: MEDIUM

+ + +

Database Objects

+

Objects that will be created on the target YugabyteDB.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Object TypeTotal ObjectsObject Names
SCHEMA2 +
+ + analytics
+ + sales
+ +
+
EXTENSION1 +
+ + pg_stat_statements
+ +
+
SEQUENCE1 +
+ + sales.recent_transactions_transaction_id_seq
+ +
+
TABLE8 +
+ + analytics.metrics
+ + sales.big_table
+ + sales.customer_account
+ + sales.events
+ + sales.json_data
+ + sales.orders
+ + sales.recent_transactions
+ + sales.test_json_chk
+ +
+
FUNCTION1 +
+ + sales.get_user_info
+ +
+
VIEW3 +
+ + sales.employ_depart_view
+ + sales.event_analysis_view
+ + sales.event_analysis_view2
+ +
+
+ + +

Sharding Recommendations

+ + + + + + + + + + + +
Colocated TablesSharded Tables
+
+ + sales.big_table
+ + sales.json_data
+ + sales.customer_account
+ + sales.test_json_chk
+ + sales.orders
+ + sales.events
+ + sales.recent_transactions
+ + analytics.metrics
+ +
+
+
+ +
+
+

Sizing Recommendations

+ + + + + + + + + + + + +
ParameterRecommendation
Num of Nodes3
vCPU per instance4
Memory per instance(GiB)16
Optimal select connections per node8
Optimal insert connections per node12
Parallel Voyager Jobs1
Estimated time taken for data import 1 min
+

Reasoning:

+

Recommended instance type with 4 vCPU and 16 GiB memory could fit 8 objects (8 tables/materialized views and 0 explicit/implicit indexes) with 0.00 MB size and throughput requirement of 0 reads/sec and 0 writes/sec as colocated. Non leaf partition tables/indexes and unsupported tables/indexes were not considered.

+ + + + + +

Migration Complexity Explanation

+

+

Below is a breakdown of the issues detected in different categories for each impact level.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CategoryLevel 1Level 2Level 3Total
Unsupported Query Constructs013013
Unsupported Datatypes0011
Unsupported Features0505
Unsupported Plpgsql Objects0101
+ +

+ Complexity: MEDIUM
+ Reasoning: Found 0 Level 1 issue(s), 19 Level 2 issue(s) and 1 Level 3 issue(s), resulting in MEDIUM migration complexity +

+ +

+Impact Levels:
+ Level 1: Resolutions are available with minimal effort.
+ Level 2: Resolutions are available requiring moderate effort.
+ Level 3: Resolutions may not be available or are complex. +

+

+ + +

Assessment Issues

+ +
+ +
+

Total Issues: 20

+

Below is a detailed breakdown of each issue.

+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Category + + Type + Object/SQL Preview + Impact +
+ +    + Unsupported Features + Any Value Aggregate Function + + sales.employ_depart_view + + Level 2
+ +    + Unsupported Features + Range Aggregate Function + + sales.event_analysis_view + + Level 2
+ +    + Unsupported Features + Range Aggregate Function + + sales.event_analysis_view2 + + Level 2
+ +    + Unsupported Features + Jsonb Subscripting + + sales.test_json_chk + + Level 2
+ +    + Unsupported Features + Json Type Predicate + + sales.json_data + + Level 2
+ +    + Unsupported Plpgsql Objects + Jsonb Subscripting + + sales.get_user_info + + Level 2
+ +    + Unsupported Query Constructs + Range Aggregate Function + + SELECT range_agg(event_range) AS union_of_ranges +FROM sales.events + + Level 2
+ +    + Unsupported Query Constructs + Jsonb Subscripting + + SELECT (jsonb_build_object($1, $2, $3, $4, $5, $6) || $7)[$8] AS json_obj + + Level 2
+ +    + Unsupported Query Constructs + Any Value Aggregate Function + + SELECT + any_value(name) AS any_employee + FROM employees + + Level 2
+ +    + Unsupported Query Constructs + Jsonb Subscripting + + SELECT + data, + data[$1] AS name, + (data[$2]) as active +FROM sales.tes ... + + Level 2
+ +    + Unsupported Query Constructs + Jsonb Subscripting + + SELECT ($1 :: jsonb)[$2][$3] as b + + Level 2
+ +    + Unsupported Query Constructs + Json Type Predicate + + SELECT * +FROM sales.json_data +WHERE array_column IS JSON ARRAY + + Level 2
+ +    + Unsupported Query Constructs + Merge Statement + + MERGE INTO sales.customer_account ca +USING sales.recent_transactions t +ON ... + + Level 2
+ +    + Unsupported Query Constructs + Cte With Materialized Clause + + WITH w AS MATERIALIZED ( ... + + Level 2
+ +    + Unsupported Query Constructs + Range Aggregate Function + + SELECT range_intersect_agg(event_range) AS intersection_of_ranges +FROM sales.eve ... + + Level 2
+ +    + Unsupported Query Constructs + Jsonb Subscripting + + SELECT (sales.get_user_info($1))[$2] AS user_info + + Level 2
+ +    + Unsupported Query Constructs + Listen Notify + + LISTEN my_table_changes + + Level 2
+ +    + Unsupported Query Constructs + Advisory Locks + + SELECT metric_name, pg_advisory_lock(metric_id) +FROM analytics.metrics +WHERE met ... + + Level 2
+ +    + Unsupported Query Constructs + Cte With Materialized Clause + + WITH w AS NOT MATERIALIZED ( ... + + Level 2
+ +    + Unsupported Datatypes + Datemultirange + + sales.event_analysis_view.all_event_ranges + + Level 3
+ + + + +
+ + diff --git a/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html b/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html new file mode 100644 index 0000000000..a924b3cb55 --- /dev/null +++ b/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html @@ -0,0 +1,14457 @@ + + + + Migration Assessment Report + + + + +
+

Migration Assessment Report

+

Voyager Version: main

+

Database Name: pg_assessment_report

+ + +

Database Version: 17.2 (Ubuntu 17.2-1.pgdg22.04+1)

+ + +

Target YB Version: 2024.2.0.0

+ + +

Migration Complexity: HIGH

+ + +

Database Objects

+

Objects that will be created on the target YugabyteDB.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Object TypeTotal ObjectsObject Names
SCHEMA3 +
+ + public
+ + schema2
+ + test_views
+ +
+
COLLATION2 +
+ + public."numeric"
+ + schema2.ignore_accents
+ +
+
EXTENSION5 +
+ + citext
+ + hstore
+ + lo
+ + pg_stat_statements
+ + pgcrypto
+ +
+
TYPE5 +
+ + public.address_type
+ + public.enum_kind
+ + public.item_details
+ + schema2.enum_kind
+ + schema2.item_details
+ +
+
DOMAIN2 +
+ + public.person_name
+ + schema2.person_name
+ +
+
SEQUENCE42 +
+ + public."Case_Sensitive_Columns_id_seq"
+ + public."Mixed_Case_Table_Name_Test_id_seq"
+ + public."Recipients_id_seq"
+ + public."WITH_id_seq"
+ + public.bigint_multirange_table_id_seq
+ + public.date_multirange_table_id_seq
+ + public.employees2_id_seq
+ + public.employees_employee_id_seq
+ + public.employeesforview_id_seq
+ + public.ext_test_id_seq
+ + public.int_multirange_table_id_seq
+ + public.mixed_data_types_table1_id_seq
+ + public.mixed_data_types_table2_id_seq
+ + public.numeric_multirange_table_id_seq
+ + public.orders2_id_seq
+ + public.ordersentry_order_id_seq
+ + public.parent_table_id_seq
+ + public.timestamp_multirange_table_id_seq
+ + public.timestamptz_multirange_table_id_seq
+ + public.with_example1_id_seq
+ + public.with_example2_id_seq
+ + schema2."Case_Sensitive_Columns_id_seq"
+ + schema2."Mixed_Case_Table_Name_Test_id_seq"
+ + schema2."Recipients_id_seq"
+ + schema2."WITH_id_seq"
+ + schema2.bigint_multirange_table_id_seq
+ + schema2.date_multirange_table_id_seq
+ + schema2.employees2_id_seq
+ + schema2.employeesforview_id_seq
+ + schema2.ext_test_id_seq
+ + schema2.int_multirange_table_id_seq
+ + schema2.mixed_data_types_table1_id_seq
+ + schema2.mixed_data_types_table2_id_seq
+ + schema2.numeric_multirange_table_id_seq
+ + schema2.orders2_id_seq
+ + schema2.parent_table_id_seq
+ + schema2.timestamp_multirange_table_id_seq
+ + schema2.timestamptz_multirange_table_id_seq
+ + schema2.with_example1_id_seq
+ + schema2.with_example2_id_seq
+ + test_views.view_table1_id_seq
+ + test_views.view_table2_id_seq
+ +
+
TABLE93 +
+ + public."Case_Sensitive_Columns"
+ + public."Mixed_Case_Table_Name_Test"
+ + public."Recipients"
+ + public."WITH"
+ + public.audit
+ + public.bigint_multirange_table
+ + public.sales_region
+ + public.boston
+ + public.c
+ + public.parent_table
+ + public.child_table
+ + public.citext_type
+ + public.combined_tbl
+ + public.date_multirange_table
+ + public.documents
+ + public.employees
+ + public.employees2
+ + public.employeescopyfromwhere
+ + public.employeescopyonerror
+ + public.employeesforview
+ + public.ext_test
+ + public.foo
+ + public.inet_type
+ + public.int_multirange_table
+ + public.library_nested
+ + public.london
+ + public.mixed_data_types_table1
+ + public.mixed_data_types_table2
+ + public.numeric_multirange_table
+ + public.orders
+ + public.orders2
+ + public.orders_lateral
+ + public.ordersentry
+ + public.products
+ + public.sales_unique_nulls_not_distinct
+ + public.sales_unique_nulls_not_distinct_alter
+ + public.session_log
+ + public.session_log1
+ + public.session_log2
+ + public.sydney
+ + public.test_exclude_basic
+ + public.test_jsonb
+ + public.test_xml_type
+ + public.timestamp_multirange_table
+ + public.timestamptz_multirange_table
+ + public.ts_query_table
+ + public.tt
+ + public.users_unique_nulls_distinct
+ + public.users_unique_nulls_not_distinct
+ + public.users_unique_nulls_not_distinct_index
+ + public.with_example1
+ + public.with_example2
+ + schema2."Case_Sensitive_Columns"
+ + schema2."Mixed_Case_Table_Name_Test"
+ + schema2."Recipients"
+ + schema2."WITH"
+ + schema2.audit
+ + schema2.bigint_multirange_table
+ + schema2.sales_region
+ + schema2.boston
+ + schema2.c
+ + schema2.parent_table
+ + schema2.child_table
+ + schema2.date_multirange_table
+ + schema2.employees2
+ + schema2.employeesforview
+ + schema2.ext_test
+ + schema2.foo
+ + schema2.int_multirange_table
+ + schema2.london
+ + schema2.mixed_data_types_table1
+ + schema2.mixed_data_types_table2
+ + schema2.numeric_multirange_table
+ + schema2.orders
+ + schema2.orders2
+ + schema2.products
+ + schema2.sales_unique_nulls_not_distinct
+ + schema2.sales_unique_nulls_not_distinct_alter
+ + schema2.session_log
+ + schema2.session_log1
+ + schema2.session_log2
+ + schema2.sydney
+ + schema2.test_xml_type
+ + schema2.timestamp_multirange_table
+ + schema2.timestamptz_multirange_table
+ + schema2.tt
+ + schema2.users_unique_nulls_distinct
+ + schema2.users_unique_nulls_not_distinct
+ + schema2.users_unique_nulls_not_distinct_index
+ + schema2.with_example1
+ + schema2.with_example2
+ + test_views.view_table1
+ + test_views.view_table2
+ +
+
INDEX28 +
+ + idx1 ON public.combined_tbl
+ + idx2 ON public.combined_tbl
+ + idx3 ON public.combined_tbl
+ + idx4 ON public.combined_tbl
+ + idx5 ON public.combined_tbl
+ + idx6 ON public.combined_tbl
+ + idx7 ON public.combined_tbl
+ + idx8 ON public.combined_tbl
+ + idx9 ON public.combined_tbl
+ + idx_array ON public.documents
+ + idx_box_data ON public.mixed_data_types_table1
+ + idx_box_data_brin ON public.mixed_data_types_table1
+ + idx_citext ON public.citext_type
+ + idx_citext1 ON public.citext_type
+ + idx_citext2 ON public.citext_type
+ + idx_inet ON public.inet_type
+ + idx_inet1 ON public.inet_type
+ + idx_json ON public.test_jsonb
+ + idx_json2 ON public.test_jsonb
+ + idx_point_data ON public.mixed_data_types_table1
+ + idx_valid ON public.test_jsonb
+ + tsquery_idx ON public.ts_query_table
+ + tsvector_idx ON public.documents
+ + users_unique_nulls_not_distinct_index_email ON public.users_unique_nulls_not_distinct_index
+ + idx_box_data ON schema2.mixed_data_types_table1
+ + idx_box_data_spgist ON schema2.mixed_data_types_table1
+ + idx_point_data ON schema2.mixed_data_types_table1
+ + users_unique_nulls_not_distinct_index_email ON schema2.users_unique_nulls_not_distinct_index
+ +
+
FUNCTION19 +
+ + public.asterisks
+ + public.asterisks1
+ + public.auditlogfunc
+ + public.check_sales_region
+ + public.insert_non_decimal
+ + public.manage_large_object
+ + public.notify_and_insert
+ + public.prevent_update_shipped_without_date
+ + public.process_combined_tbl
+ + public.process_order
+ + public.total
+ + schema2.asterisks
+ + schema2.asterisks1
+ + schema2.auditlogfunc
+ + schema2.insert_non_decimal
+ + schema2.notify_and_insert
+ + schema2.prevent_update_shipped_without_date
+ + schema2.process_order
+ + schema2.total
+ +
+
AGGREGATE2 +
+ + public.inc_sum
+ + schema2.inc_sum
+ +
+
PROCEDURE3 +
+ + public.tt_insert_data
+ + public.update_combined_tbl_data
+ + schema2.tt_insert_data
+ +
+
VIEW10 +
+ + public.ordersentry_view
+ + public.sales_employees
+ + public.top_employees_view
+ + public.view_explicit_security_invoker
+ + schema2.sales_employees
+ + schema2.top_employees_view
+ + test_views.v1
+ + test_views.v2
+ + test_views.v3
+ + test_views.v4
+ +
+
TRIGGER4 +
+ + audit_trigger ON public.tt
+ + before_sales_region_insert_update ON public.sales_region
+ + t_raster ON public.combined_tbl
+ + audit_trigger ON schema2.tt
+ +
+
MVIEW3 +
+ + test_views.xyz_mview
+ + test_views.abc_mview
+ + test_views.mv1
+ +
+
RULE4 +
+ + protect_test_views_v1
+ + protect_test_views_v2
+ + protect_test_views_v3
+ + protect_test_views_view_table1
+ +
+
POLICY4 +
+ + policy_test_fine ON public.test_exclude_basic
+ + policy_test_fine_2 ON public.employees2
+ + policy_test_report ON public.test_xml_type
+ + policy_test_report ON schema2.test_xml_type
+ +
+
+ + +

Sharding Recommendations

+ + + + + + + + + + + +
Colocated TablesSharded Tables
+
+ + public.timestamptz_multirange_table
+ + public.sales_unique_nulls_not_distinct_alter
+ + public.employeesforview
+ + public.date_multirange_table
+ + public.london
+ + public.orders_lateral
+ + public.employees2
+ + public.documents
+ + public.int_multirange_table
+ + public.bigint_multirange_table
+ + public.parent_table
+ + public.ts_query_table
+ + public.timestamp_multirange_table
+ + public.boston
+ + public.mixed_data_types_table2
+ + public.numeric_multirange_table
+ + public.tbl_unlogged
+ + public.test_exclude_basic
+ + public.inet_type
+ + public.orders2
+ + public.child_table
+ + public.sydney
+ + public.users_unique_nulls_not_distinct_index
+ + public.users_unique_nulls_distinct
+ + public.users_unique_nulls_not_distinct
+ + public.sales_unique_nulls_not_distinct
+ + schema2.timestamp_multirange_table
+ + schema2.int_multirange_table
+ + schema2.tbl_unlogged
+ + schema2.numeric_multirange_table
+ + schema2.ext_test
+ + schema2.parent_table
+ + schema2.boston
+ + schema2.timestamptz_multirange_table
+ + schema2.employeesforview
+ + schema2.sales_unique_nulls_not_distinct
+ + schema2.employees2
+ + schema2.date_multirange_table
+ + schema2.users_unique_nulls_not_distinct_index
+ + schema2.london
+ + schema2.mixed_data_types_table2
+ + schema2.child_table
+ + schema2.sales_unique_nulls_not_distinct_alter
+ + schema2.users_unique_nulls_not_distinct
+ + schema2.orders2
+ + schema2.bigint_multirange_table
+ + schema2.tt
+ + schema2.users_unique_nulls_distinct
+ + schema2.sydney
+ + public.Mixed_Case_Table_Name_Test
+ + public.employees
+ + public.Case_Sensitive_Columns
+ + public.WITH
+ + public.session_log1
+ + public.session_log
+ + public.employeescopyfromwhere
+ + public.orders
+ + public.ordersentry
+ + public.foo
+ + public.with_example1
+ + public.c
+ + public.tt
+ + public.test_xml_type
+ + public.session_log2
+ + public.ext_test
+ + public.products
+ + public.employeescopyonerror
+ + public.with_example2
+ + public.Recipients
+ + public.library_nested
+ + public.audit
+ + schema2.Recipients
+ + schema2.with_example2
+ + schema2.WITH
+ + schema2.session_log1
+ + schema2.c
+ + schema2.orders
+ + schema2.test_xml_type
+ + schema2.foo
+ + schema2.audit
+ + schema2.products
+ + schema2.Mixed_Case_Table_Name_Test
+ + schema2.Case_Sensitive_Columns
+ + schema2.session_log2
+ + schema2.session_log
+ + schema2.with_example1
+ + test_views.abc_mview
+ + test_views.view_table1
+ + test_views.xyz_mview
+ + test_views.view_table2
+ + test_views.mv1
+ +
+
+
+ + public.test_jsonb
+ + public.combined_tbl
+ + public.mixed_data_types_table1
+ + public.citext_type
+ + schema2.mixed_data_types_table1
+ +
+
+

Sizing Recommendations

+ + + + + + + + + + + + +
ParameterRecommendation
Num of Nodes3
vCPU per instance4
Memory per instance(GiB)16
Optimal select connections per node8
Optimal insert connections per node12
Parallel Voyager Jobs1
Estimated time taken for data import 1 min
+

Reasoning:

+

Recommended instance type with 4 vCPU and 16 GiB memory could fit 109 objects (91 tables/materialized views and 18 explicit/implicit indexes) with 0.00 MB size and throughput requirement of 0 reads/sec and 0 writes/sec as colocated. Rest 28 objects (5 tables/materialized views and 23 explicit/implicit indexes) with 0.00 MB size and throughput requirement of 0 reads/sec and 0 writes/sec need to be migrated as range partitioned tables. Non leaf partition tables/indexes and unsupported tables/indexes were not considered.

+ + + + + +

Migration Complexity Explanation

+

+

Below is a breakdown of the issues detected in different categories for each impact level.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CategoryLevel 1Level 2Level 3Total
Unsupported Query Constructs016016
Unsupported Datatypes002525
Migration Caveats220022
Unsupported Features487459
Unsupported Plpgsql Objects213015
+ +

+ Complexity: HIGH
+ Reasoning: Found 36 Level 2 issue(s) and 29 Level 3 issue(s), resulting in HIGH migration complexity +

+ +

+Impact Levels:
+ Level 1: Resolutions are available with minimal effort.
+ Level 2: Resolutions are available requiring moderate effort.
+ Level 3: Resolutions may not be available or are complex. +

+

+ + + +

Assessment Issues

+ +
+ +
+

Total Issues: 137

+

Below is a detailed breakdown of each issue.

+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Category + + Type + Object/SQL Preview + Impact +
+ +    + Unsupported Features + Unsupported Index Method + + idx_box_data ON public.mixed_data_types_table1 + + Level 1
+ +    + Unsupported Features + Unsupported Index Method + + idx_point_data ON public.mixed_data_types_table1 + + Level 1
+ +    + Unsupported Features + Unsupported Index Method + + idx_box_data ON schema2.mixed_data_types_table1 + + Level 1
+ +    + Unsupported Features + Unsupported Index Method + + idx_point_data ON schema2.mixed_data_types_table1 + + Level 1
+ +    + Unsupported Features + Unsupported Index Method + + idx_box_data_brin ON public.mixed_data_types_table1 + + Level 1
+ +    + Unsupported Features + Unsupported Index Method + + idx_box_data_spgist ON schema2.mixed_data_types_table1 + + Level 1
+ +    + Unsupported Features + Constraint Trigger + + enforce_shipped_date_constraint ON public.orders2 + + Level 1
+ +    + Unsupported Features + Constraint Trigger + + enforce_shipped_date_constraint ON schema2.orders2 + + Level 1
+ +    + Unsupported Features + Inheritance + + public.child_table + + Level 3
+ +    + Unsupported Features + Inheritance + + schema2.child_table + + Level 3
+ +    + Unsupported Features + Stored Generated Columns + + public.employees2 + + Level 1
+ +    + Unsupported Features + Stored Generated Columns + + schema2.employees2 + + Level 1
+ +    + Unsupported Features + Exclusion Constraints + + public.test_exclude_basic, constraint: (no_same_name_address) + + Level 1
+ +    + Unsupported Features + Deferrable Constraints + + public.orders2, constraint: (orders2_order_number_key) + + Level 3
+ +    + Unsupported Features + Deferrable Constraints + + schema2.orders2, constraint: (orders2_order_number_key) + + Level 3
+ +    + Unsupported Features + View With Check Option + + public.sales_employees + + Level 1
+ +    + Unsupported Features + View With Check Option + + schema2.sales_employees + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx_citext ON public.citext_type + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + tsvector_idx ON public.documents + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + tsquery_idx ON public.ts_query_table + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx_json ON public.test_jsonb + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx_json2 ON public.test_jsonb + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx_inet ON public.inet_type + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx2 ON public.combined_tbl + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx3 ON public.combined_tbl + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx1 ON public.combined_tbl + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx5 ON public.combined_tbl + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx6 ON public.combined_tbl + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx8 ON public.combined_tbl + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx9 ON public.combined_tbl + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx4 ON public.combined_tbl + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx_array ON public.documents + + Level 1
+ +    + Unsupported Features + Index On Complex Datatype + + idx7 ON public.combined_tbl + + Level 1
+ +    + Unsupported Features + Pk Uk On Complex Datatype + + public.combined_tbl, constraint: (combined_tbl_bittv_key) + + Level 1
+ +    + Unsupported Features + Pk Uk On Complex Datatype + + public.combined_tbl, constraint: (combined_tbl_pkey) + + Level 1
+ +    + Unsupported Features + Pk Uk On Complex Datatype + + public.combined_tbl, constraint: (uk) + + Level 1
+ +    + Unsupported Features + Before Row Trigger On Partitioned Table + + before_sales_region_insert_update ON public.sales_region + + Level 1
+ +    + Unsupported Features + Advisory Locks + + public.ordersentry_view + + Level 2
+ +    + Unsupported Features + Xml Functions + + public.ordersentry_view + + Level 2
+ +    + Unsupported Features + System Columns + + public.ordersentry_view + + Level 2
+ +    + Unsupported Features + Large Object Functions + + t_raster ON public.combined_tbl + + Level 2
+ +    + Unsupported Features + Regex Functions + + public.ordersentry + + Level 2
+ +    + Unsupported Features + Fetch With Ties + + public.top_employees_view + + Level 2
+ +    + Unsupported Features + Fetch With Ties + + schema2.top_employees_view + + Level 2
+ +    + Unsupported Features + Security Invoker Views + + public.view_explicit_security_invoker + + Level 1
+ +    + Unsupported Features + Non Deterministic Collation + + schema2.ignore_accents + + Level 1
+ +    + Unsupported Features + Unique Nulls Not Distinct + + public.sales_unique_nulls_not_distinct + + Level 1
+ +    + Unsupported Features + Unique Nulls Not Distinct + + public.sales_unique_nulls_not_distinct_alter + + Level 1
+ +    + Unsupported Features + Unique Nulls Not Distinct + + public.users_unique_nulls_not_distinct + + Level 1
+ +    + Unsupported Features + Unique Nulls Not Distinct + + schema2.sales_unique_nulls_not_distinct + + Level 1
+ +    + Unsupported Features + Unique Nulls Not Distinct + + schema2.sales_unique_nulls_not_distinct_alter + + Level 1
+ +    + Unsupported Features + Unique Nulls Not Distinct + + schema2.users_unique_nulls_not_distinct + + Level 1
+ +    + Unsupported Features + Unique Nulls Not Distinct + + users_unique_nulls_not_distinct_index_email ON public.users_unique_nulls_not_distinct_index + + Level 1
+ +    + Unsupported Features + Unique Nulls Not Distinct + + users_unique_nulls_not_distinct_index_email ON schema2.users_unique_nulls_not_distinct_index + + Level 1
+ +    + Unsupported Features + Foreign Key Referenced Partitioned Table + + public.test_jsonb, constraint: (test_jsonb_id_region_fkey) + + Level 1
+ +    + Unsupported Features + Sql Body In Function + + public.asterisks + + Level 1
+ +    + Unsupported Features + Sql Body In Function + + public.asterisks1 + + Level 1
+ +    + Unsupported Features + Sql Body In Function + + schema2.asterisks + + Level 1
+ +    + Unsupported Features + Sql Body In Function + + schema2.asterisks1 + + Level 1
+ +    + Unsupported Plpgsql Objects + Non Decimal Integer Literal + + public.insert_non_decimal + + Level 2
+ +    + Unsupported Plpgsql Objects + Non Decimal Integer Literal + + schema2.insert_non_decimal + + Level 2
+ +    + Unsupported Plpgsql Objects + Large Object Functions + + public.manage_large_object + + Level 2
+ +    + Unsupported Plpgsql Objects + Listen Notify + + public.notify_and_insert + + Level 2
+ +    + Unsupported Plpgsql Objects + Listen Notify + + public.notify_and_insert + + Level 2
+ +    + Unsupported Plpgsql Objects + Listen Notify + + public.notify_and_insert + + Level 2
+ +    + Unsupported Plpgsql Objects + Listen Notify + + public.notify_and_insert + + Level 2
+ +    + Unsupported Plpgsql Objects + Listen Notify + + schema2.notify_and_insert + + Level 2
+ +    + Unsupported Plpgsql Objects + Listen Notify + + schema2.notify_and_insert + + Level 2
+ +    + Unsupported Plpgsql Objects + Listen Notify + + schema2.notify_and_insert + + Level 2
+ +    + Unsupported Plpgsql Objects + Listen Notify + + schema2.notify_and_insert + + Level 2
+ +    + Unsupported Plpgsql Objects + Referenced Type Declaration + + public.process_combined_tbl + + Level 1
+ +    + Unsupported Plpgsql Objects + Referenced Type Declaration + + public.update_combined_tbl_data + + Level 1
+ +    + Unsupported Plpgsql Objects + Advisory Locks + + public.process_order + + Level 2
+ +    + Unsupported Plpgsql Objects + Advisory Locks + + schema2.process_order + + Level 2
+ +    + Unsupported Query Constructs + Xml Functions + + SELECT + s.section_name, + b.title, + b.author +FROM + library_nested l, + ... + + Level 2
+ +    + Unsupported Query Constructs + Xml Functions + + SELECT * +FROM xmltable( + $1 + PASSING $2 + COLUMNS + name TEXT PAT ... + + Level 2
+ +    + Unsupported Query Constructs + Xml Functions + + SELECT xmlelement(name root, xmlelement(name child, $1)) + + Level 2
+ +    + Unsupported Query Constructs + Xml Functions + + SELECT xmlparse(document $1) as xmldata + + Level 2
+ +    + Unsupported Query Constructs + Xml Functions + + SELECT table_to_xml($1, $2, $3, $4) + + Level 2
+ +    + Unsupported Query Constructs + Large Object Functions + + SELECT lo_create($1) + + Level 2
+ +    + Unsupported Query Constructs + Copy From ... Where + + COPY employeesCopyFromWhere (id, name, age) +FROM STDIN WITH (FORMAT csv) +WHERE a ... + + Level 2
+ +    + Unsupported Query Constructs + System Columns + + SELECT ctid, tableoid, xmin, xmax, cmin, cmax +FROM employees2 + + Level 2
+ +    + Unsupported Query Constructs + Xml Functions + + SELECT + o.order_id, + items.product, + items.quantity::INT +FROM + order ... + + Level 2
+ +    + Unsupported Query Constructs + Advisory Locks + + SELECT pg_advisory_unlock_all() + + Level 2
+ +    + Unsupported Query Constructs + Xml Functions + + SELECT xmlforest(first_name AS element1, last_name AS element2) FROM employees2 + + Level 2
+ +    + Unsupported Query Constructs + Advisory Locks + + SELECT pg_advisory_xact_lock($1,$2) + + Level 2
+ +    + Unsupported Query Constructs + Advisory Locks + + SELECT pg_advisory_lock($1,$2) + + Level 2
+ +    + Unsupported Query Constructs + Xml Functions + + SELECT xml_is_well_formed($1) + + Level 2
+ +    + Unsupported Query Constructs + Copy ... On Error + + COPY employeesCopyOnError (id, name, age) +FROM STDIN WITH (FORMAT csv, ON_ERROR ... + + Level 2
+ +    + Unsupported Query Constructs + Advisory Locks + + SELECT pg_advisory_unlock($1,$2) + + Level 2
+ +    + Unsupported Datatypes + Tsmultirange + + schema2.timestamp_multirange_table.event_times + + Level 3
+ +    + Unsupported Datatypes + Xml + + public.ordersentry_view.summary_xml + + Level 3
+ +    + Unsupported Datatypes + Int8multirange + + schema2.bigint_multirange_table.value_ranges + + Level 3
+ +    + Unsupported Datatypes + Datemultirange + + public.date_multirange_table.project_dates + + Level 3
+ +    + Unsupported Datatypes + Int4multirange + + schema2.int_multirange_table.value_ranges + + Level 3
+ +    + Unsupported Datatypes + Pg Lsn + + public.mixed_data_types_table2.lsn_data + + Level 3
+ +    + Unsupported Datatypes + Xml + + schema2.test_xml_type.data + + Level 3
+ +    + Unsupported Datatypes + Nummultirange + + public.numeric_multirange_table.price_ranges + + Level 3
+ +    + Unsupported Datatypes + Int8multirange + + public.bigint_multirange_table.value_ranges + + Level 3
+ +    + Unsupported Datatypes + Xml + + public.orders_lateral.order_details + + Level 3
+ +    + Unsupported Datatypes + Txid Snapshot + + schema2.mixed_data_types_table1.snapshot_data + + Level 3
+ +    + Unsupported Datatypes + Xml + + public.ordersentry_view.order_xml + + Level 3
+ +    + Unsupported Datatypes + Txid Snapshot + + public.mixed_data_types_table1.snapshot_data + + Level 3
+ +    + Unsupported Datatypes + Xml + + public.library_nested.lib_data + + Level 3
+ +    + Unsupported Datatypes + Datemultirange + + schema2.date_multirange_table.project_dates + + Level 3
+ +    + Unsupported Datatypes + Pg Lsn + + schema2.mixed_data_types_table2.lsn_data + + Level 3
+ +    + Unsupported Datatypes + Xml + + public.test_xml_type.data + + Level 3
+ +    + Unsupported Datatypes + Tstzmultirange + + schema2.timestamptz_multirange_table.global_event_times + + Level 3
+ +    + Unsupported Datatypes + Pg Lsn + + public.combined_tbl.lsn + + Level 3
+ +    + Unsupported Datatypes + Lo + + public.combined_tbl.raster + + Level 3
+ +    + Unsupported Datatypes + Nummultirange + + schema2.numeric_multirange_table.price_ranges + + Level 3
+ +    + Unsupported Datatypes + Xid + + public.ordersentry_view.transaction_id + + Level 3
+ +    + Unsupported Datatypes + Tsmultirange + + public.timestamp_multirange_table.event_times + + Level 3
+ +    + Unsupported Datatypes + Int4multirange + + public.int_multirange_table.value_ranges + + Level 3
+ +    + Unsupported Datatypes + Tstzmultirange + + public.timestamptz_multirange_table.global_event_times + + Level 3
+ +    + Migration Caveats + Policy With Roles + + policy_test_report ON public.test_xml_type + + Level 1
+ +    + Migration Caveats + Policy With Roles + + policy_test_report ON schema2.test_xml_type + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration + + public.mixed_data_types_table1.box_data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration + + schema2.mixed_data_types_table2.path_data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration + + public.mixed_data_types_table1.point_data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration + + schema2.mixed_data_types_table2.lseg_data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration + + schema2.mixed_data_types_table1.lseg_data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration + + schema2.mixed_data_types_table1.point_data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration + + public.mixed_data_types_table1.lseg_data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration + + public.mixed_data_types_table2.path_data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration + + schema2.mixed_data_types_table1.box_data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration + + public.mixed_data_types_table2.lseg_data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration With Ff Fb + + public.documents.content_tsvector + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration With Ff Fb + + schema2.orders.item + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration With Ff Fb + + public.products.item + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration With Ff Fb + + public.documents.title_tsvector + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration With Ff Fb + + public.combined_tbl.data + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration With Ff Fb + + public.orders.item + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration With Ff Fb + + public.combined_tbl.arr_enum + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration With Ff Fb + + public.combined_tbl.address + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration With Ff Fb + + schema2.products.item + + Level 1
+ +    + Migration Caveats + Unsupported Datatype Live Migration With Ff Fb + + public.ts_query_table.query + + Level 1
+ + + +
+
+
+

Notes

+
    + +
  • There are some Unlogged tables in the schema. They will be created as regular LOGGED tables in YugabyteDB as unlogged tables are not supported.
  • + +
+
+ + +
+ + From bfea9c5a8c50b818a5b4639bddf9d0abd2a92692 Mon Sep 17 00:00:00 2001 From: shubham-yb Date: Mon, 3 Feb 2025 15:05:34 +0000 Subject: [PATCH 02/15] Install bs4 on GH Actions --- .github/workflows/misc-migtests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/misc-migtests.yml b/.github/workflows/misc-migtests.yml index 053de031e4..3c9c1e7107 100644 --- a/.github/workflows/misc-migtests.yml +++ b/.github/workflows/misc-migtests.yml @@ -54,6 +54,7 @@ jobs: sudo apt install -y python3 sudo apt install -y libpq-dev sudo apt install python3-psycopg2 + sudo pip3 install bs4 #TODO Remove the install PG 17 command once we do that in installer script - name: Run installer script to setup voyager From c517f8cf15f751d9333e1e17efd1d12824bdd295 Mon Sep 17 00:00:00 2001 From: shubham-yb Date: Mon, 3 Feb 2025 15:05:49 +0000 Subject: [PATCH 03/15] Install bs4 on GH Actions --- .github/workflows/misc-migtests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/misc-migtests.yml b/.github/workflows/misc-migtests.yml index 3c9c1e7107..9482ecec9c 100644 --- a/.github/workflows/misc-migtests.yml +++ b/.github/workflows/misc-migtests.yml @@ -54,7 +54,7 @@ jobs: sudo apt install -y python3 sudo apt install -y libpq-dev sudo apt install python3-psycopg2 - sudo pip3 install bs4 + pip3 install bs4 #TODO Remove the install PG 17 command once we do that in installer script - name: Run installer script to setup voyager From 5a8c9f09d45eb9e45bdfeea0ba9e6e6e2a4a8f12 Mon Sep 17 00:00:00 2001 From: shubham-yb Date: Mon, 3 Feb 2025 15:25:25 +0000 Subject: [PATCH 04/15] Skip comparing database version --- migtests/scripts/compare-html-reports.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/migtests/scripts/compare-html-reports.py b/migtests/scripts/compare-html-reports.py index 1f3f661329..a4d723b952 100755 --- a/migtests/scripts/compare-html-reports.py +++ b/migtests/scripts/compare-html-reports.py @@ -6,17 +6,17 @@ import difflib import sys -def normalize_text(text): - # Replace non-breaking spaces and other similar characters - text = text.replace('\xa0', ' ') - text = text.replace('\u200B', '') - text = re.sub(r'\s+', ' ', text) - return text.strip() - def extract_html_data(html_content): """Extracts structured data from HTML content and normalizes it.""" soup = BeautifulSoup(html_content, 'html.parser') + def normalize_text(text): + # Replace non-breaking spaces and other similar characters + text = text.replace('\xa0', ' ') + text = text.replace('\u200B', '') + text = re.sub(r'\s+', ' ', text) + return text.strip() + def extract_texts(elements): """Extract and normalize inner text while keeping structure.""" return [normalize_text(el.get_text(separator=" ")) for el in elements] @@ -55,6 +55,9 @@ def extract_texts(elements): if not skip_first_paragraph: skip_first_paragraph = True continue + # Skip paragraph that start with "Database Version:" + if p.find("strong") and "Database Version:" in p.get_text(): + continue filtered_paragraphs.append(p) def normalize_table_names(tds): From d295bd80fb895d32d601bab4d23ad8c42d221196 Mon Sep 17 00:00:00 2001 From: shubham-yb Date: Mon, 3 Feb 2025 16:33:49 +0000 Subject: [PATCH 05/15] Added debug for Oracle report --- migtests/scripts/compare-html-reports.py | 48 +++++++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/migtests/scripts/compare-html-reports.py b/migtests/scripts/compare-html-reports.py index a4d723b952..b30e519189 100755 --- a/migtests/scripts/compare-html-reports.py +++ b/migtests/scripts/compare-html-reports.py @@ -119,11 +119,50 @@ def dict_to_list(dict_data): """Convert dictionary to list of formatted strings.""" return [f"{k} -> {v}" for k, v in dict_data.items()] +# def compare_html_reports(file1, file2): +# """Compares two HTML reports and prints structured differences.""" +# with open(file1, "r", encoding="utf-8") as f1, open(file2, "r", encoding="utf-8") as f2: +# html_data1 = extract_html_data(f1.read()) +# html_data2 = extract_html_data(f2.read()) + +# differences = {} + +# for key in html_data1.keys(): +# if html_data1[key] != html_data2[key]: +# if isinstance(html_data1[key], list): # For headings, paragraphs, spans, divs +# diff = generate_diff_list(html_data1[key], html_data2[key], key, file1, file2) +# elif isinstance(html_data1[key], dict): # For links dictionary +# diff = generate_diff_list( +# dict_to_list(html_data1[key]), +# dict_to_list(html_data2[key]), +# key, file1, file2 +# ) +# else: # Title (single string) +# diff = generate_diff_list([html_data1[key]], [html_data2[key]], key, file1, file2) + +# if diff: # Only store sections that have differences +# differences[key] = diff + +# if not differences: +# print("The reports are identical.") +# else: +# print("Differences found:") +# for section, diff_text in differences.items(): +# print(f"\n=== {section.upper()} DIFFERENCES ===") +# print(diff_text) +# sys.exit(1) + + + def compare_html_reports(file1, file2): """Compares two HTML reports and prints structured differences.""" with open(file1, "r", encoding="utf-8") as f1, open(file2, "r", encoding="utf-8") as f2: - html_data1 = extract_html_data(f1.read()) - html_data2 = extract_html_data(f2.read()) + file1_content = f1.read() + file2_content = f2.read() + + # Extract structured data from HTML content + html_data1 = extract_html_data(file1_content) + html_data2 = extract_html_data(file2_content) differences = {} @@ -150,6 +189,11 @@ def compare_html_reports(file1, file2): for section, diff_text in differences.items(): print(f"\n=== {section.upper()} DIFFERENCES ===") print(diff_text) + + # Print entire file2 before exiting + print("\n=== FULL CONTENT OF FILE 2 ===") + print(file2_content) + sys.exit(1) if __name__ == "__main__": From e6dd2fc3546d78779842f2536ee5ce5c9d054e7b Mon Sep 17 00:00:00 2001 From: shubham-yb Date: Mon, 3 Feb 2025 17:37:45 +0000 Subject: [PATCH 06/15] Cleanup --- migtests/scripts/compare-html-reports.py | 48 +----------------------- 1 file changed, 2 insertions(+), 46 deletions(-) diff --git a/migtests/scripts/compare-html-reports.py b/migtests/scripts/compare-html-reports.py index b30e519189..a4d723b952 100755 --- a/migtests/scripts/compare-html-reports.py +++ b/migtests/scripts/compare-html-reports.py @@ -119,50 +119,11 @@ def dict_to_list(dict_data): """Convert dictionary to list of formatted strings.""" return [f"{k} -> {v}" for k, v in dict_data.items()] -# def compare_html_reports(file1, file2): -# """Compares two HTML reports and prints structured differences.""" -# with open(file1, "r", encoding="utf-8") as f1, open(file2, "r", encoding="utf-8") as f2: -# html_data1 = extract_html_data(f1.read()) -# html_data2 = extract_html_data(f2.read()) - -# differences = {} - -# for key in html_data1.keys(): -# if html_data1[key] != html_data2[key]: -# if isinstance(html_data1[key], list): # For headings, paragraphs, spans, divs -# diff = generate_diff_list(html_data1[key], html_data2[key], key, file1, file2) -# elif isinstance(html_data1[key], dict): # For links dictionary -# diff = generate_diff_list( -# dict_to_list(html_data1[key]), -# dict_to_list(html_data2[key]), -# key, file1, file2 -# ) -# else: # Title (single string) -# diff = generate_diff_list([html_data1[key]], [html_data2[key]], key, file1, file2) - -# if diff: # Only store sections that have differences -# differences[key] = diff - -# if not differences: -# print("The reports are identical.") -# else: -# print("Differences found:") -# for section, diff_text in differences.items(): -# print(f"\n=== {section.upper()} DIFFERENCES ===") -# print(diff_text) -# sys.exit(1) - - - def compare_html_reports(file1, file2): """Compares two HTML reports and prints structured differences.""" with open(file1, "r", encoding="utf-8") as f1, open(file2, "r", encoding="utf-8") as f2: - file1_content = f1.read() - file2_content = f2.read() - - # Extract structured data from HTML content - html_data1 = extract_html_data(file1_content) - html_data2 = extract_html_data(file2_content) + html_data1 = extract_html_data(f1.read()) + html_data2 = extract_html_data(f2.read()) differences = {} @@ -189,11 +150,6 @@ def compare_html_reports(file1, file2): for section, diff_text in differences.items(): print(f"\n=== {section.upper()} DIFFERENCES ===") print(diff_text) - - # Print entire file2 before exiting - print("\n=== FULL CONTENT OF FILE 2 ===") - print(file2_content) - sys.exit(1) if __name__ == "__main__": From 8e689c477a1d04852fbc7f9a8b9e038e55d3652c Mon Sep 17 00:00:00 2001 From: shubham-yb Date: Wed, 5 Feb 2025 12:25:01 +0000 Subject: [PATCH 07/15] Addressed the review comments --- .github/workflows/misc-migtests.yml | 2 +- migtests/scripts/compare-html-reports.py | 128 ++++++++++++----------- 2 files changed, 66 insertions(+), 64 deletions(-) diff --git a/.github/workflows/misc-migtests.yml b/.github/workflows/misc-migtests.yml index 9482ecec9c..5fa4f872bf 100644 --- a/.github/workflows/misc-migtests.yml +++ b/.github/workflows/misc-migtests.yml @@ -49,7 +49,7 @@ jobs: docker restart ${{ job.services.postgres.id }} sleep 10 - - name: Install python3 and psycopg2 + - name: Install python3, psycopg2 and bs4 module for HTML report verification run: | sudo apt install -y python3 sudo apt install -y libpq-dev diff --git a/migtests/scripts/compare-html-reports.py b/migtests/scripts/compare-html-reports.py index a4d723b952..1a273df721 100755 --- a/migtests/scripts/compare-html-reports.py +++ b/migtests/scripts/compare-html-reports.py @@ -6,34 +6,32 @@ import difflib import sys -def extract_html_data(html_content): - """Extracts structured data from HTML content and normalizes it.""" - soup = BeautifulSoup(html_content, 'html.parser') - - def normalize_text(text): - # Replace non-breaking spaces and other similar characters - text = text.replace('\xa0', ' ') - text = text.replace('\u200B', '') - text = re.sub(r'\s+', ' ', text) - return text.strip() - - def extract_texts(elements): - """Extract and normalize inner text while keeping structure.""" - return [normalize_text(el.get_text(separator=" ")) for el in elements] - +def normalize_text(text): + """Normalize and clean up text content.""" + text = text.replace('\xa0', ' ') # Replace non-breaking spaces with regular spaces + text = text.replace('\u200B', '') # Remove zero-width spaces + text = re.sub(r'\s+', ' ', text) # Collapse any whitespace sequences + return text.strip() # Remove leading/trailing spaces + +def extract_and_normalize_texts(elements): + """Extract and normalize inner text from HTML elements.""" + return [normalize_text(el.get_text(separator=" ")) for el in elements] + +def extract_divs(soup): + """Extract and normalize divs, optionally sorting them based on certain conditions.""" all_divs = soup.find_all("div") filtered_divs = [] should_sort = False for div in all_divs: + # Sorting the content within "Sharding Recommendations" since the tables can be in different order prev_h2 = div.find_previous("h2") if prev_h2 and "Sharding Recommendations" in prev_h2.get_text(): should_sort = True - - if "wrapper" not in div.get("class", []): # Keep the wrapper exclusion + # Skipping the parent wrapper div since it causes issues to be reported twice + if "wrapper" not in div.get("class", []): # Exclude wrapper divs filtered_divs.append((div, should_sort)) - # Extract and process div text div_texts_sorted = [] for div, should_sort in filtered_divs: div_text = normalize_text(div.get_text(separator=" ")).strip() @@ -41,64 +39,71 @@ def extract_texts(elements): div_text = " ".join(sorted(div_text.split())) # Sort content within div div_texts_sorted.append(div_text) - div_texts_sorted = sorted(div_texts_sorted) if any(s for _, s in filtered_divs) else div_texts_sorted + return sorted(div_texts_sorted) if any(s for _, s in filtered_divs) else div_texts_sorted +def extract_paragraphs(soup): + """Extract and filter paragraphs, skipping specific ones based on conditions.""" paragraphs = soup.find_all("p") - - # Flag to skip the first

after the

Migration Complexity Explanation skip_first_paragraph = False filtered_paragraphs = [] for p in paragraphs: + # Skip the first

after the

Migration Complexity Explanation since nesting causes issues to be reported twice prev_element = p.find_previous("h2") if prev_element and "Migration Complexity Explanation" in prev_element.get_text(): if not skip_first_paragraph: skip_first_paragraph = True continue - # Skip paragraph that start with "Database Version:" + # Skip paragraph that starts with "Database Version:" as it vary according to the environment if p.find("strong") and "Database Version:" in p.get_text(): continue filtered_paragraphs.append(p) - def normalize_table_names(tds): - """Extract and normalize the table names from and sort them.""" - table_names = [] - for td in tds: - names = [normalize_text(name).strip() for name in td.get_text(separator="\n").split("\n") if name.strip()] - table_names.extend(names) - return sorted(table_names) - - def sort_table_data(tables): - """Sort tables by rows and within rows by their contents.""" - sorted_tables = [] - for table in tables: - rows = table.find_all("tr") - table_data = [] - for row in rows: - cols = row.find_all("td") - if len(cols) > 1: - table_data.append(normalize_table_names(cols)) - if table_data: - sorted_tables.append(table_data) - return sorted_tables + return extract_and_normalize_texts(filtered_paragraphs) + +def normalize_table_names(tds): + """Extract and normalize the table names from elements.""" + table_names = [] + for td in tds: + names = [normalize_text(name).strip() for name in td.get_text(separator="\n").split("\n") if name.strip()] + table_names.extend(names) + return sorted(table_names) + +def sort_table_data(tables): + """Sort tables by rows and their contents, including headers.""" + sorted_tables = [] + for table in tables: + rows = table.find_all("tr") + table_data = [] + for row_index, row in enumerate(rows): + cols = row.find_all("th") + row.find_all("td") + if cols: + normalized_cols = [normalize_text(col.get_text(separator="\n")).strip() for col in cols] + table_data.append(normalized_cols) + if table_data: + sorted_tables.append(table_data) + return sorted_tables + +def extract_html_data(html_content): + """Main function to extract structured data from HTML content.""" + soup = BeautifulSoup(html_content, 'html.parser') data = { "title": normalize_text(soup.title.string) if soup.title and soup.title.string else "No Title", - "headings": extract_texts(soup.find_all(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])), - "paragraphs": extract_texts(filtered_paragraphs), + "headings": extract_and_normalize_texts(soup.find_all(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])), + "paragraphs": extract_paragraphs(soup), "tables": sort_table_data(soup.find_all("table")), "links": { k: v for k, v in sorted( {normalize_text(a.get("href") or ""): normalize_text(a.text) for a in soup.find_all("a")}.items() ) }, - "spans": extract_texts(soup.find_all("span")), - "divs": div_texts_sorted + "spans": extract_and_normalize_texts(soup.find_all("span")), + "divs": extract_divs(soup) } return data - def generate_diff_list(list1, list2, section_name, file1_path, file2_path): """Generate a structured diff for ordered lists (headings, paragraphs, spans, divs) showing only differences.""" if section_name == "tables": @@ -127,26 +132,23 @@ def compare_html_reports(file1, file2): differences = {} - for key in html_data1.keys(): + def compare_and_store(key): if html_data1[key] != html_data2[key]: - if isinstance(html_data1[key], list): # For headings, paragraphs, spans, divs - diff = generate_diff_list(html_data1[key], html_data2[key], key, file1, file2) - elif isinstance(html_data1[key], dict): # For links dictionary - diff = generate_diff_list( - dict_to_list(html_data1[key]), - dict_to_list(html_data2[key]), - key, file1, file2 - ) - else: # Title (single string) - diff = generate_diff_list([html_data1[key]], [html_data2[key]], key, file1, file2) - - if diff: # Only store sections that have differences + diff = generate_diff_list( + dict_to_list(html_data1[key]) if isinstance(html_data1[key], dict) else html_data1[key], + dict_to_list(html_data2[key]) if isinstance(html_data2[key], dict) else html_data2[key], + key, file1, file2 + ) + if diff: differences[key] = diff + for key in html_data1.keys(): + compare_and_store(key) + if not differences: - print("The reports are identical.") + print("The reports are matching.") else: - print("Differences found:") + print("The reports are not matching.") for section, diff_text in differences.items(): print(f"\n=== {section.upper()} DIFFERENCES ===") print(diff_text) From 58a897a44ec8a98539605cdfef4fe9c803446fe9 Mon Sep 17 00:00:00 2001 From: shubham-yb Date: Wed, 5 Feb 2025 19:24:45 +0000 Subject: [PATCH 08/15] Fixed the script and the expected reports --- migtests/scripts/compare-html-reports.py | 55 +- .../expectedAssessmentReport.html | 70 +- .../expectedAssessmentReport.html | 399 +++--- .../expectedAssessmentReport.html | 1198 ++++++++--------- 4 files changed, 864 insertions(+), 858 deletions(-) diff --git a/migtests/scripts/compare-html-reports.py b/migtests/scripts/compare-html-reports.py index 1a273df721..aade50cf6c 100755 --- a/migtests/scripts/compare-html-reports.py +++ b/migtests/scripts/compare-html-reports.py @@ -61,13 +61,13 @@ def extract_paragraphs(soup): return extract_and_normalize_texts(filtered_paragraphs) -def normalize_table_names(tds): - """Extract and normalize the table names from elements.""" - table_names = [] - for td in tds: - names = [normalize_text(name).strip() for name in td.get_text(separator="\n").split("\n") if name.strip()] - table_names.extend(names) - return sorted(table_names) +def normalize_table_names(values): + """Extract and normalize the table names from and and sort them.""" + table_names = [] + for v in values: + names = [normalize_text(name).strip() for name in v.get_text(separator="\n").split("\n") if name.strip()] + table_names.extend(names) + return sorted(table_names) def sort_table_data(tables): """Sort tables by rows and their contents, including headers.""" @@ -75,15 +75,21 @@ def sort_table_data(tables): for table in tables: rows = table.find_all("tr") table_data = [] - for row_index, row in enumerate(rows): - cols = row.find_all("th") + row.find_all("td") - if cols: - normalized_cols = [normalize_text(col.get_text(separator="\n")).strip() for col in cols] - table_data.append(normalized_cols) + table_headers = [] + for row in rows: + columns = row.find_all("td") + headers = row.find_all("th") + if len(columns) > 1: + table_data.append(normalize_table_names(columns)) + if len(headers) > 1: + table_headers.append(normalize_table_names(headers)) if table_data: sorted_tables.append(table_data) + if table_headers: + sorted_tables.append(table_headers) return sorted_tables + def extract_html_data(html_content): """Main function to extract structured data from HTML content.""" soup = BeautifulSoup(html_content, 'html.parser') @@ -132,23 +138,26 @@ def compare_html_reports(file1, file2): differences = {} - def compare_and_store(key): + for key in html_data1.keys(): if html_data1[key] != html_data2[key]: - diff = generate_diff_list( - dict_to_list(html_data1[key]) if isinstance(html_data1[key], dict) else html_data1[key], - dict_to_list(html_data2[key]) if isinstance(html_data2[key], dict) else html_data2[key], - key, file1, file2 - ) - if diff: + if isinstance(html_data1[key], list): # For headings, paragraphs, spans, divs + diff = generate_diff_list(html_data1[key], html_data2[key], key, file1, file2) + elif isinstance(html_data1[key], dict): # For links dictionary + diff = generate_diff_list( + dict_to_list(html_data1[key]), + dict_to_list(html_data2[key]), + key, file1, file2 + ) + else: # Title (single string) + diff = generate_diff_list([html_data1[key]], [html_data2[key]], key, file1, file2) + + if diff: # Only store sections that have differences differences[key] = diff - for key in html_data1.keys(): - compare_and_store(key) - if not differences: print("The reports are matching.") else: - print("The reports are not matching.") + print("The reports are not matching:") for section, diff_text in differences.items(): print(f"\n=== {section.upper()} DIFFERENCES ===") print(diff_text) diff --git a/migtests/tests/oracle/assessment-report-test/expectedAssessmentReport.html b/migtests/tests/oracle/assessment-report-test/expectedAssessmentReport.html index 18ded31a94..4664a9000d 100644 --- a/migtests/tests/oracle/assessment-report-test/expectedAssessmentReport.html +++ b/migtests/tests/oracle/assessment-report-test/expectedAssessmentReport.html @@ -144,7 +144,7 @@ // Keep track of the current sort direction per field, so we can toggle it let sortState = { category: 'asc', - type: 'asc', + name: 'asc', impact: 'asc' }; function sortTableBy(field) { @@ -690,7 +690,7 @@

Assessment Issues

- + @@ -700,8 +700,8 @@

Assessment Issues

Category - - Type + + Issue Object/SQL Preview @@ -714,7 +714,7 @@

Assessment Issues

@@ -815,7 +815,7 @@

Assessment Issues

@@ -912,7 +912,7 @@

Assessment Issues

@@ -1009,7 +1009,7 @@

Assessment Issues

@@ -1106,7 +1106,7 @@

Assessment Issues

@@ -1203,7 +1203,7 @@

Assessment Issues

@@ -1300,7 +1300,7 @@

Assessment Issues

@@ -1397,7 +1397,7 @@

Assessment Issues

@@ -1494,7 +1494,7 @@

Assessment Issues

@@ -1591,7 +1591,7 @@

Assessment Issues

@@ -1688,7 +1688,7 @@

Assessment Issues

@@ -1785,7 +1785,7 @@

Assessment Issues

@@ -1794,7 +1794,7 @@

Assessment Issues

   Unsupported Datatypes - Xmltype + XMLTYPE TEST_SCHEMA.XML_TABLE.DATA @@ -1882,7 +1882,7 @@

Assessment Issues

@@ -1891,10 +1891,10 @@

Assessment Issues

   Unsupported Datatypes - Nclob + BFILE - TEST_SCHEMA.NCLOB_TABLE.DATA + TEST_SCHEMA.BFILE_TABLE.DATA @@ -1933,7 +1933,7 @@

Assessment Issues

Object Name - TEST_SCHEMA.NCLOB_TABLE.DATA + TEST_SCHEMA.BFILE_TABLE.DATA @@ -1979,7 +1979,7 @@

Assessment Issues

@@ -1988,10 +1988,10 @@

Assessment Issues

   Unsupported Datatypes - Clob + BLOB - TEST_SCHEMA.CLOB_TABLE.DATA + TEST_SCHEMA.BLOB_TABLE.DATA @@ -2030,7 +2030,7 @@

Assessment Issues

Object Name - TEST_SCHEMA.CLOB_TABLE.DATA + TEST_SCHEMA.BLOB_TABLE.DATA @@ -2076,7 +2076,7 @@

Assessment Issues

@@ -2085,10 +2085,10 @@

Assessment Issues

   Unsupported Datatypes - Blob + CLOB - TEST_SCHEMA.BLOB_TABLE.DATA + TEST_SCHEMA.CLOB_TABLE.DATA @@ -2127,7 +2127,7 @@

Assessment Issues

Object Name - TEST_SCHEMA.BLOB_TABLE.DATA + TEST_SCHEMA.CLOB_TABLE.DATA @@ -2173,7 +2173,7 @@

Assessment Issues

@@ -2182,7 +2182,7 @@

Assessment Issues

   Unsupported Datatypes - Clob + CLOB TEST_SCHEMA.TEXT_TABLE.TEXT_DATA @@ -2270,7 +2270,7 @@

Assessment Issues

@@ -2279,10 +2279,10 @@

Assessment Issues

   Unsupported Datatypes - Bfile + NCLOB - TEST_SCHEMA.BFILE_TABLE.DATA + TEST_SCHEMA.NCLOB_TABLE.DATA @@ -2321,7 +2321,7 @@

Assessment Issues

Object Name - TEST_SCHEMA.BFILE_TABLE.DATA + TEST_SCHEMA.NCLOB_TABLE.DATA diff --git a/migtests/tests/pg/assessment-report-test-uqc/expectedAssessmentReport.html b/migtests/tests/pg/assessment-report-test-uqc/expectedAssessmentReport.html index 5bb27f779d..463cf71e13 100644 --- a/migtests/tests/pg/assessment-report-test-uqc/expectedAssessmentReport.html +++ b/migtests/tests/pg/assessment-report-test-uqc/expectedAssessmentReport.html @@ -144,7 +144,7 @@ // Keep track of the current sort direction per field, so we can toggle it let sortState = { category: 'asc', - type: 'asc', + name: 'asc', impact: 'asc' }; function sortTableBy(field) { @@ -315,15 +315,15 @@

Sharding Recommendations

sales.json_data
- sales.customer_account
- - sales.test_json_chk
+ sales.recent_transactions
sales.orders
sales.events
- sales.recent_transactions
+ sales.customer_account
+ + sales.test_json_chk
analytics.metrics
@@ -358,63 +358,62 @@

Reasoning:

Migration Complexity Explanation

+

Below is a breakdown of the issues detected in different categories for each impact level.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CategoryLevel 1Level 2Level 3Total
Unsupported Features0505
Unsupported Plpgsql Objects0101
Unsupported Query Constructs013013
Unsupported Datatypes0011
+

-

Below is a breakdown of the issues detected in different categories for each impact level.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CategoryLevel 1Level 2Level 3Total
Unsupported Query Constructs013013
Unsupported Datatypes0011
Unsupported Features0505
Unsupported Plpgsql Objects0101
- -

- Complexity: MEDIUM
- Reasoning: Found 0 Level 1 issue(s), 19 Level 2 issue(s) and 1 Level 3 issue(s), resulting in MEDIUM migration complexity -

- -

-Impact Levels:
- Level 1: Resolutions are available with minimal effort.
- Level 2: Resolutions are available requiring moderate effort.
- Level 3: Resolutions may not be available or are complex. -

-

- + Complexity: MEDIUM
+ Reasoning: Found 0 Level 1 issue(s), 19 Level 2 issue(s) and 1 Level 3 issue(s), resulting in MEDIUM migration complexity +

+ +

+ Impact Levels:
+ Level 1: Resolutions are available with minimal effort.
+ Level 2: Resolutions are available requiring moderate effort.
+ Level 3: Resolutions may not be available or are complex. +

+

Assessment Issues

@@ -434,7 +433,7 @@

Assessment Issues

- + @@ -444,8 +443,8 @@

Assessment Issues

Category - - Type + + Issue Object/SQL Preview @@ -458,7 +457,7 @@

Assessment Issues

@@ -467,7 +466,7 @@

Assessment Issues

   Unsupported Features - Any Value Aggregate Function + ANY_VALUE() aggregate Function sales.employ_depart_view @@ -558,7 +557,7 @@

Assessment Issues

@@ -567,7 +566,7 @@

Assessment Issues

   Unsupported Features - Range Aggregate Function + Range aggregate Functions sales.event_analysis_view @@ -665,7 +664,7 @@

Assessment Issues

@@ -674,7 +673,7 @@

Assessment Issues

   Unsupported Features - Range Aggregate Function + Range aggregate Functions sales.event_analysis_view2 @@ -772,7 +771,7 @@

Assessment Issues

@@ -884,7 +883,7 @@

Assessment Issues

@@ -988,7 +987,7 @@

Assessment Issues

@@ -1088,7 +1087,7 @@

Assessment Issues

@@ -1097,11 +1096,12 @@

Assessment Issues

   Unsupported Query Constructs - Range Aggregate Function + ANY_VALUE() aggregate Function - SELECT range_agg(event_range) AS union_of_ranges -FROM sales.events + SELECT + any_value(name) AS any_employee + FROM employees @@ -1130,8 +1130,9 @@

Assessment Issues

-
SELECT range_agg(event_range) AS union_of_ranges
-FROM sales.events
+
SELECT
+        any_value(name) AS any_employee
+    FROM employees
@@ -1149,20 +1150,13 @@

Assessment Issues

- - Supported In (versions) - - >=2.25.0.0 (2.25 series) - - - Description
-
range_agg, range_intersect_agg function are not supported yet in YugabyteDB.
+
any_value function are not supported yet in YugabyteDB.
@@ -1176,7 +1170,7 @@

Assessment Issues

@@ -1185,10 +1179,11 @@

Assessment Issues

   Unsupported Query Constructs - Jsonb Subscripting + Range aggregate Functions - SELECT (jsonb_build_object($1, $2, $3, $4, $5, $6) || $7)[$8] AS json_obj + SELECT range_agg(event_range) AS union_of_ranges +FROM sales.events @@ -1217,7 +1212,8 @@

Assessment Issues

-
SELECT (jsonb_build_object($1, $2, $3, $4, $5, $6) || $7)[$8] AS json_obj
+
SELECT range_agg(event_range) AS union_of_ranges
+FROM sales.events
@@ -1227,7 +1223,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -1248,7 +1244,7 @@

Assessment Issues

-
Jsonb subscripting is not yet supported in YugabyteDB.
+
range_agg, range_intersect_agg function are not supported yet in YugabyteDB.
@@ -1262,7 +1258,7 @@

Assessment Issues

@@ -1271,12 +1267,10 @@

Assessment Issues

   Unsupported Query Constructs - Any Value Aggregate Function + Jsonb Subscripting - SELECT - any_value(name) AS any_employee - FROM employees + SELECT ($1 :: jsonb)[$2][$3] as b @@ -1305,9 +1299,7 @@

Assessment Issues

-
SELECT
-        any_value(name) AS any_employee
-    FROM employees
+
SELECT ($1 :: jsonb)[$2][$3] as b
@@ -1317,7 +1309,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -1325,13 +1317,20 @@

Assessment Issues

+ + Supported In (versions) + + >=2.25.0.0 (2.25 series) + + + Description
-
any_value function are not supported yet in YugabyteDB.
+
Jsonb subscripting is not yet supported in YugabyteDB.
@@ -1345,7 +1344,7 @@

Assessment Issues

@@ -1439,7 +1438,7 @@

Assessment Issues

@@ -1448,10 +1447,12 @@

Assessment Issues

   Unsupported Query Constructs - Jsonb Subscripting + Merge Statement - SELECT ($1 :: jsonb)[$2][$3] as b + MERGE INTO sales.customer_account ca +USING sales.recent_transactions t +ON ... @@ -1480,7 +1481,14 @@

Assessment Issues

-
SELECT ($1 :: jsonb)[$2][$3] as b
+
MERGE INTO sales.customer_account ca
+USING sales.recent_transactions t      
+ON t.customer_id = ca.customer_id
+WHEN MATCHED THEN
+  UPDATE SET balance = balance + transaction_value
+WHEN NOT MATCHED THEN
+  INSERT (customer_id, balance)
+  VALUES (t.customer_id, t.transaction_value)
@@ -1490,7 +1498,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -1498,20 +1506,13 @@

Assessment Issues

- - Supported In (versions) - - >=2.25.0.0 (2.25 series) - - - Description
-
Jsonb subscripting is not yet supported in YugabyteDB.
+
MERGE statement is not yet supported in YugabyteDB.
@@ -1525,7 +1526,7 @@

Assessment Issues

@@ -1608,7 +1609,7 @@

Assessment Issues

@@ -1617,12 +1618,10 @@

Assessment Issues

   Unsupported Query Constructs - Merge Statement + CTE with MATERIALIZE clause - MERGE INTO sales.customer_account ca -USING sales.recent_transactions t -ON ... + WITH w AS MATERIALIZED ( ... @@ -1651,14 +1650,11 @@

Assessment Issues

-
MERGE INTO sales.customer_account ca
-USING sales.recent_transactions t      
-ON t.customer_id = ca.customer_id
-WHEN MATCHED THEN
-  UPDATE SET balance = balance + transaction_value
-WHEN NOT MATCHED THEN
-  INSERT (customer_id, balance)
-  VALUES (t.customer_id, t.transaction_value)
+
WITH w AS MATERIALIZED (                                                               
+    SELECT * FROM sales.big_table
+)           
+SELECT * FROM w AS w1 JOIN w AS w2 ON w1.key = w2.ref
+WHERE w2.key = $1
@@ -1668,7 +1664,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -1676,13 +1672,20 @@

Assessment Issues

+ + Supported In (versions) + + >=2.25.0.0 (2.25 series) + + + Description
-
MERGE statement is not yet supported in YugabyteDB.
+
Modifying the materialization of CTE is not supported yet in YugabyteDB.
@@ -1696,7 +1699,7 @@

Assessment Issues

@@ -1705,10 +1708,12 @@

Assessment Issues

   Unsupported Query Constructs - Cte With Materialized Clause + Advisory Locks - WITH w AS MATERIALIZED ( ... + SELECT metric_name, pg_advisory_lock(metric_id) +FROM analytics.metrics +WHERE met ... @@ -1737,11 +1742,9 @@

Assessment Issues

-
WITH w AS MATERIALIZED (                                                               
-    SELECT * FROM sales.big_table
-)           
-SELECT * FROM w AS w1 JOIN w AS w2 ON w1.key = w2.ref
-WHERE w2.key = $1
+
SELECT metric_name, pg_advisory_lock(metric_id)
+FROM analytics.metrics
+WHERE metric_value > $1
@@ -1751,7 +1754,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -1759,20 +1762,13 @@

Assessment Issues

- - Supported In (versions) - - >=2.25.0.0 (2.25 series) - - - Description
-
Modifying the materialization of CTE is not supported yet in YugabyteDB.
+
Advisory locks are not yet implemented in YugabyteDB.
@@ -1786,7 +1782,7 @@

Assessment Issues

@@ -1795,11 +1791,10 @@

Assessment Issues

   Unsupported Query Constructs - Range Aggregate Function + Events Listen / Notify - SELECT range_intersect_agg(event_range) AS intersection_of_ranges -FROM sales.eve ... + LISTEN my_table_changes @@ -1828,8 +1823,7 @@

Assessment Issues

-
SELECT range_intersect_agg(event_range) AS intersection_of_ranges
-FROM sales.events
+
LISTEN my_table_changes
@@ -1839,7 +1833,8 @@

Assessment Issues

Docs Link - Documentation + + N/A @@ -1847,20 +1842,13 @@

Assessment Issues

- - Supported In (versions) - - >=2.25.0.0 (2.25 series) - - - Description
-
range_agg, range_intersect_agg function are not supported yet in YugabyteDB.
+
LISTEN / NOTIFY is not supported yet in YugabyteDB.
@@ -1874,7 +1862,7 @@

Assessment Issues

@@ -1883,10 +1871,10 @@

Assessment Issues

   Unsupported Query Constructs - Jsonb Subscripting + CTE with MATERIALIZE clause - SELECT (sales.get_user_info($1))[$2] AS user_info + WITH w AS NOT MATERIALIZED ( ... @@ -1915,7 +1903,11 @@

Assessment Issues

-
SELECT (sales.get_user_info($1))[$2] AS user_info
+
WITH w AS NOT MATERIALIZED (                                                               
+    SELECT * FROM sales.big_table
+)           
+SELECT * FROM w AS w1 JOIN w AS w2 ON w1.key = w2.ref
+WHERE w2.key = $1
@@ -1925,7 +1917,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -1946,7 +1938,7 @@

Assessment Issues

-
Jsonb subscripting is not yet supported in YugabyteDB.
+
Modifying the materialization of CTE is not supported yet in YugabyteDB.
@@ -1960,7 +1952,7 @@

Assessment Issues

@@ -1969,10 +1961,11 @@

Assessment Issues

   Unsupported Query Constructs - Listen Notify + Range aggregate Functions - LISTEN my_table_changes + SELECT range_intersect_agg(event_range) AS intersection_of_ranges +FROM sales.eve ... @@ -2001,7 +1994,8 @@

Assessment Issues

-
LISTEN my_table_changes
+
SELECT range_intersect_agg(event_range) AS intersection_of_ranges
+FROM sales.events
@@ -2011,8 +2005,7 @@

Assessment Issues

Docs Link - - N/A + Documentation @@ -2020,13 +2013,20 @@

Assessment Issues

+ + Supported In (versions) + + >=2.25.0.0 (2.25 series) + + + Description
-
LISTEN / NOTIFY is not supported yet in YugabyteDB.
+
range_agg, range_intersect_agg function are not supported yet in YugabyteDB.
@@ -2040,7 +2040,7 @@

Assessment Issues

@@ -2049,12 +2049,10 @@

Assessment Issues

   Unsupported Query Constructs - Advisory Locks + Jsonb Subscripting - SELECT metric_name, pg_advisory_lock(metric_id) -FROM analytics.metrics -WHERE met ... + SELECT (sales.get_user_info($1))[$2] AS user_info @@ -2083,9 +2081,7 @@

Assessment Issues

-
SELECT metric_name, pg_advisory_lock(metric_id)
-FROM analytics.metrics
-WHERE metric_value > $1
+
SELECT (sales.get_user_info($1))[$2] AS user_info
@@ -2095,7 +2091,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -2103,13 +2099,20 @@

Assessment Issues

+ + Supported In (versions) + + >=2.25.0.0 (2.25 series) + + + Description
-
Advisory locks are not yet implemented in YugabyteDB.
+
Jsonb subscripting is not yet supported in YugabyteDB.
@@ -2123,7 +2126,7 @@

Assessment Issues

@@ -2132,10 +2135,10 @@

Assessment Issues

   Unsupported Query Constructs - Cte With Materialized Clause + Jsonb Subscripting - WITH w AS NOT MATERIALIZED ( ... + SELECT (jsonb_build_object($1, $2, $3, $4, $5, $6) || $7)[$8] AS json_obj @@ -2164,11 +2167,7 @@

Assessment Issues

-
WITH w AS NOT MATERIALIZED (                                                               
-    SELECT * FROM sales.big_table
-)           
-SELECT * FROM w AS w1 JOIN w AS w2 ON w1.key = w2.ref
-WHERE w2.key = $1
+
SELECT (jsonb_build_object($1, $2, $3, $4, $5, $6) || $7)[$8] AS json_obj
@@ -2178,7 +2177,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -2199,7 +2198,7 @@

Assessment Issues

-
Modifying the materialization of CTE is not supported yet in YugabyteDB.
+
Jsonb subscripting is not yet supported in YugabyteDB.
@@ -2213,7 +2212,7 @@

Assessment Issues

@@ -2222,7 +2221,7 @@

Assessment Issues

   Unsupported Datatypes - Datemultirange + datemultirange sales.event_analysis_view.all_event_ranges diff --git a/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html b/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html index a924b3cb55..b300a20fc8 100644 --- a/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html +++ b/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html @@ -144,7 +144,7 @@ // Keep track of the current sort direction per field, so we can toggle it let sortState = { category: 'asc', - type: 'asc', + name: 'asc', impact: 'asc' }; function sortTableBy(field) { @@ -837,199 +837,199 @@

Sharding Recommendations

- public.timestamptz_multirange_table
- - public.sales_unique_nulls_not_distinct_alter
- - public.employeesforview
- public.date_multirange_table
- public.london
+ public.users_unique_nulls_not_distinct
- public.orders_lateral
+ public.sydney
- public.employees2
+ public.mixed_data_types_table2
- public.documents
+ public.orders2
+ + public.users_unique_nulls_not_distinct_index
public.int_multirange_table
- public.bigint_multirange_table
+ public.inet_type
- public.parent_table
+ public.test_exclude_basic
- public.ts_query_table
+ public.users_unique_nulls_distinct
- public.timestamp_multirange_table
+ public.sales_unique_nulls_not_distinct
- public.boston
+ public.london
- public.mixed_data_types_table2
+ public.child_table
- public.numeric_multirange_table
+ public.bigint_multirange_table
- public.tbl_unlogged
+ public.timestamptz_multirange_table
- public.test_exclude_basic
+ public.sales_unique_nulls_not_distinct_alter
- public.inet_type
+ public.boston
- public.orders2
+ public.employees2
- public.child_table
+ public.employeesforview
- public.sydney
+ public.documents
- public.users_unique_nulls_not_distinct_index
+ public.orders_lateral
- public.users_unique_nulls_distinct
+ public.parent_table
- public.users_unique_nulls_not_distinct
+ public.tbl_unlogged
- public.sales_unique_nulls_not_distinct
+ public.timestamp_multirange_table
- schema2.timestamp_multirange_table
+ public.numeric_multirange_table
- schema2.int_multirange_table
+ public.ts_query_table
- schema2.tbl_unlogged
+ schema2.users_unique_nulls_not_distinct
- schema2.numeric_multirange_table
+ schema2.sales_unique_nulls_not_distinct
- schema2.ext_test
+ schema2.orders2
- schema2.parent_table
+ schema2.ext_test
- schema2.boston
+ schema2.tt
- schema2.timestamptz_multirange_table
+ schema2.bigint_multirange_table
- schema2.employeesforview
+ schema2.int_multirange_table
- schema2.sales_unique_nulls_not_distinct
+ schema2.london
schema2.employees2
schema2.date_multirange_table
- schema2.users_unique_nulls_not_distinct_index
+ schema2.tbl_unlogged
- schema2.london
+ schema2.timestamp_multirange_table
- schema2.mixed_data_types_table2
+ schema2.sales_unique_nulls_not_distinct_alter
schema2.child_table
- schema2.sales_unique_nulls_not_distinct_alter
+ schema2.sydney
- schema2.users_unique_nulls_not_distinct
+ schema2.mixed_data_types_table2
- schema2.orders2
+ schema2.users_unique_nulls_not_distinct_index
- schema2.bigint_multirange_table
+ schema2.numeric_multirange_table
- schema2.tt
+ schema2.timestamptz_multirange_table
- schema2.users_unique_nulls_distinct
+ schema2.parent_table
- schema2.sydney
+ schema2.employeesforview
- public.Mixed_Case_Table_Name_Test
+ schema2.boston
- public.employees
+ schema2.users_unique_nulls_distinct
- public.Case_Sensitive_Columns
+ public.employeescopyfromwhere
- public.WITH
+ public.employees
- public.session_log1
+ public.audit
- public.session_log
+ public.employeescopyonerror
- public.employeescopyfromwhere
+ public.Case_Sensitive_Columns
- public.orders
+ public.products
- public.ordersentry
+ public.c
- public.foo
+ public.Recipients
- public.with_example1
+ public.session_log2
- public.c
+ public.library_nested
public.tt
- public.test_xml_type
- - public.session_log2
+ public.foo
public.ext_test
- public.products
+ public.WITH
- public.employeescopyonerror
+ public.test_xml_type
- public.with_example2
+ public.session_log1
- public.Recipients
+ public.with_example2
- public.library_nested
+ public.ordersentry
- public.audit
+ public.with_example1
- schema2.Recipients
+ public.Mixed_Case_Table_Name_Test
- schema2.with_example2
+ public.orders
- schema2.WITH
+ public.session_log
- schema2.session_log1
+ schema2.session_log2
schema2.c
- schema2.orders
+ schema2.Recipients
- schema2.test_xml_type
+ schema2.with_example1
schema2.foo
- schema2.audit
+ schema2.test_xml_type
- schema2.products
+ schema2.audit
- schema2.Mixed_Case_Table_Name_Test
+ schema2.WITH
schema2.Case_Sensitive_Columns
- schema2.session_log2
+ schema2.products
schema2.session_log
- schema2.with_example1
+ schema2.session_log1
- test_views.abc_mview
+ schema2.with_example2
- test_views.view_table1
+ schema2.Mixed_Case_Table_Name_Test
- test_views.xyz_mview
+ schema2.orders
+ + test_views.abc_mview
test_views.view_table2
test_views.mv1
+ test_views.xyz_mview
+ + test_views.view_table1
+
- public.test_jsonb
- public.combined_tbl
public.mixed_data_types_table1
+ public.test_jsonb
+ public.citext_type
schema2.mixed_data_types_table1
@@ -1060,71 +1060,69 @@

Reasoning:

Migration Complexity Explanation

+

Below is a breakdown of the issues detected in different categories for each impact level.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CategoryLevel 1Level 2Level 3Total
Migration Caveats220022
Unsupported Features487459
Unsupported Plpgsql Objects213015
Unsupported Query Constructs016016
Unsupported Datatypes002525
+

-

Below is a breakdown of the issues detected in different categories for each impact level.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CategoryLevel 1Level 2Level 3Total
Unsupported Query Constructs016016
Unsupported Datatypes002525
Migration Caveats220022
Unsupported Features487459
Unsupported Plpgsql Objects213015
- -

- Complexity: HIGH
- Reasoning: Found 36 Level 2 issue(s) and 29 Level 3 issue(s), resulting in HIGH migration complexity -

- -

-Impact Levels:
- Level 1: Resolutions are available with minimal effort.
- Level 2: Resolutions are available requiring moderate effort.
- Level 3: Resolutions may not be available or are complex. -

-

+ Complexity: HIGH
+ Reasoning: Found 36 Level 2 issue(s) and 29 Level 3 issue(s), resulting in HIGH migration complexity +

- +

+ Impact Levels:
+ Level 1: Resolutions are available with minimal effort.
+ Level 2: Resolutions are available requiring moderate effort.
+ Level 3: Resolutions may not be available or are complex. +

+

Assessment Issues

@@ -1144,7 +1142,7 @@

Assessment Issues

- + @@ -1154,8 +1152,8 @@

Assessment Issues

Category - - Type + + Issue Object/SQL Preview @@ -1168,7 +1166,7 @@

Assessment Issues

@@ -1177,7 +1175,7 @@

Assessment Issues

   Unsupported Features - Unsupported Index Method + Index with access method idx_box_data ON public.mixed_data_types_table1 @@ -1266,7 +1264,7 @@

Assessment Issues

@@ -1275,7 +1273,7 @@

Assessment Issues

   Unsupported Features - Unsupported Index Method + Index with access method idx_point_data ON public.mixed_data_types_table1 @@ -1364,7 +1362,7 @@

Assessment Issues

@@ -1373,7 +1371,7 @@

Assessment Issues

   Unsupported Features - Unsupported Index Method + Index with access method idx_box_data ON schema2.mixed_data_types_table1 @@ -1462,7 +1460,7 @@

Assessment Issues

@@ -1471,7 +1469,7 @@

Assessment Issues

   Unsupported Features - Unsupported Index Method + Index with access method idx_point_data ON schema2.mixed_data_types_table1 @@ -1560,7 +1558,7 @@

Assessment Issues

@@ -1569,7 +1567,7 @@

Assessment Issues

   Unsupported Features - Unsupported Index Method + Index with access method idx_box_data_brin ON public.mixed_data_types_table1 @@ -1658,7 +1656,7 @@

Assessment Issues

@@ -1667,7 +1665,7 @@

Assessment Issues

   Unsupported Features - Unsupported Index Method + Index with access method idx_box_data_spgist ON schema2.mixed_data_types_table1 @@ -1756,7 +1754,7 @@

Assessment Issues

@@ -1854,7 +1852,7 @@

Assessment Issues

@@ -1952,7 +1950,7 @@

Assessment Issues

@@ -1961,7 +1959,7 @@

Assessment Issues

   Unsupported Features - Inheritance + Table Inheritance public.child_table @@ -2053,7 +2051,7 @@

Assessment Issues

@@ -2062,7 +2060,7 @@

Assessment Issues

   Unsupported Features - Inheritance + Table Inheritance schema2.child_table @@ -2154,7 +2152,7 @@

Assessment Issues

@@ -2265,7 +2263,7 @@

Assessment Issues

@@ -2376,7 +2374,7 @@

Assessment Issues

@@ -2475,7 +2473,7 @@

Assessment Issues

@@ -2574,7 +2572,7 @@

Assessment Issues

@@ -2673,7 +2671,7 @@

Assessment Issues

@@ -2778,7 +2776,7 @@

Assessment Issues

@@ -2883,7 +2881,7 @@

Assessment Issues

@@ -2892,7 +2890,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx_citext ON public.citext_type @@ -2981,7 +2979,7 @@

Assessment Issues

@@ -2990,7 +2988,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype tsvector_idx ON public.documents @@ -3079,7 +3077,7 @@

Assessment Issues

@@ -3088,7 +3086,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype tsquery_idx ON public.ts_query_table @@ -3177,7 +3175,7 @@

Assessment Issues

@@ -3186,7 +3184,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx_json ON public.test_jsonb @@ -3275,7 +3273,7 @@

Assessment Issues

@@ -3284,7 +3282,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx_json2 ON public.test_jsonb @@ -3373,7 +3371,7 @@

Assessment Issues

@@ -3382,7 +3380,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx_inet ON public.inet_type @@ -3471,7 +3469,7 @@

Assessment Issues

@@ -3480,7 +3478,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx2 ON public.combined_tbl @@ -3569,7 +3567,7 @@

Assessment Issues

@@ -3578,7 +3576,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx3 ON public.combined_tbl @@ -3667,7 +3665,7 @@

Assessment Issues

@@ -3676,7 +3674,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx1 ON public.combined_tbl @@ -3765,7 +3763,7 @@

Assessment Issues

@@ -3774,7 +3772,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx5 ON public.combined_tbl @@ -3863,7 +3861,7 @@

Assessment Issues

@@ -3872,7 +3870,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx6 ON public.combined_tbl @@ -3961,7 +3959,7 @@

Assessment Issues

@@ -3970,7 +3968,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx8 ON public.combined_tbl @@ -4059,7 +4057,7 @@

Assessment Issues

@@ -4068,7 +4066,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx9 ON public.combined_tbl @@ -4157,7 +4155,7 @@

Assessment Issues

@@ -4166,7 +4164,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx4 ON public.combined_tbl @@ -4255,7 +4253,7 @@

Assessment Issues

@@ -4264,7 +4262,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx_array ON public.documents @@ -4353,7 +4351,7 @@

Assessment Issues

@@ -4362,7 +4360,7 @@

Assessment Issues

   Unsupported Features - Index On Complex Datatype + Index on column with complex datatype idx7 ON public.combined_tbl @@ -4451,7 +4449,7 @@

Assessment Issues

@@ -4460,7 +4458,7 @@

Assessment Issues

   Unsupported Features - Pk Uk On Complex Datatype + Primary/Unique key on column with complex datatype public.combined_tbl, constraint: (combined_tbl_bittv_key) @@ -4550,7 +4548,7 @@

Assessment Issues

@@ -4559,7 +4557,7 @@

Assessment Issues

   Unsupported Features - Pk Uk On Complex Datatype + Primary/Unique key on column with complex datatype public.combined_tbl, constraint: (combined_tbl_pkey) @@ -4649,7 +4647,7 @@

Assessment Issues

@@ -4658,7 +4656,7 @@

Assessment Issues

   Unsupported Features - Pk Uk On Complex Datatype + Primary/Unique key on column with complex datatype public.combined_tbl, constraint: (uk) @@ -4748,7 +4746,7 @@

Assessment Issues

@@ -4757,7 +4755,7 @@

Assessment Issues

   Unsupported Features - Before Row Trigger On Partitioned Table + BEFORE ROW triggers on partitioned tables before_sales_region_insert_update ON public.sales_region @@ -4853,7 +4851,7 @@

Assessment Issues

@@ -4962,7 +4960,7 @@

Assessment Issues

@@ -4971,7 +4969,7 @@

Assessment Issues

   Unsupported Features - Xml Functions + XML Functions public.ordersentry_view @@ -5071,7 +5069,7 @@

Assessment Issues

@@ -5180,7 +5178,7 @@

Assessment Issues

@@ -5278,7 +5276,7 @@

Assessment Issues

@@ -5391,7 +5389,7 @@

Assessment Issues

@@ -5400,7 +5398,7 @@

Assessment Issues

   Unsupported Features - Fetch With Ties + FETCH .. WITH TIES public.top_employees_view @@ -5500,7 +5498,7 @@

Assessment Issues

@@ -5509,7 +5507,7 @@

Assessment Issues

   Unsupported Features - Fetch With Ties + FETCH .. WITH TIES schema2.top_employees_view @@ -5609,7 +5607,7 @@

Assessment Issues

@@ -5717,7 +5715,7 @@

Assessment Issues

@@ -5726,7 +5724,7 @@

Assessment Issues

   Unsupported Features - Non Deterministic Collation + Non-Deterministic collations schema2.ignore_accents @@ -5815,7 +5813,7 @@

Assessment Issues

@@ -5921,7 +5919,7 @@

Assessment Issues

@@ -6027,7 +6025,7 @@

Assessment Issues

@@ -6133,7 +6131,7 @@

Assessment Issues

@@ -6239,7 +6237,7 @@

Assessment Issues

@@ -6345,7 +6343,7 @@

Assessment Issues

@@ -6451,7 +6449,7 @@

Assessment Issues

@@ -6556,7 +6554,7 @@

Assessment Issues

@@ -6661,7 +6659,7 @@

Assessment Issues

@@ -6670,7 +6668,7 @@

Assessment Issues

   Unsupported Features - Foreign Key Referenced Partitioned Table + Foreign key constraint references partitioned table public.test_jsonb, constraint: (test_jsonb_id_region_fkey) @@ -6767,7 +6765,7 @@

Assessment Issues

@@ -6776,7 +6774,7 @@

Assessment Issues

   Unsupported Features - Sql Body In Function + SQL Body in function public.asterisks @@ -6877,7 +6875,7 @@

Assessment Issues

@@ -6886,7 +6884,7 @@

Assessment Issues

   Unsupported Features - Sql Body In Function + SQL Body in function public.asterisks1 @@ -6984,7 +6982,7 @@

Assessment Issues

@@ -6993,7 +6991,7 @@

Assessment Issues

   Unsupported Features - Sql Body In Function + SQL Body in function schema2.asterisks @@ -7094,7 +7092,7 @@

Assessment Issues

@@ -7103,7 +7101,7 @@

Assessment Issues

   Unsupported Features - Sql Body In Function + SQL Body in function schema2.asterisks1 @@ -7201,7 +7199,7 @@

Assessment Issues

@@ -7210,7 +7208,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Non Decimal Integer Literal + Non-decimal integer literal public.insert_non_decimal @@ -7290,7 +7288,7 @@

Assessment Issues

@@ -7299,7 +7297,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Non Decimal Integer Literal + Non-decimal integer literal schema2.insert_non_decimal @@ -7379,7 +7377,7 @@

Assessment Issues

@@ -7468,7 +7466,7 @@

Assessment Issues

@@ -7477,7 +7475,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Listen Notify + Events Listen / Notify public.notify_and_insert @@ -7558,7 +7556,7 @@

Assessment Issues

@@ -7567,7 +7565,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Listen Notify + Events Listen / Notify public.notify_and_insert @@ -7648,7 +7646,7 @@

Assessment Issues

@@ -7657,7 +7655,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Listen Notify + Events Listen / Notify public.notify_and_insert @@ -7738,7 +7736,7 @@

Assessment Issues

@@ -7747,7 +7745,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Listen Notify + Events Listen / Notify public.notify_and_insert @@ -7828,7 +7826,7 @@

Assessment Issues

@@ -7837,7 +7835,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Listen Notify + Events Listen / Notify schema2.notify_and_insert @@ -7918,7 +7916,7 @@

Assessment Issues

@@ -7927,7 +7925,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Listen Notify + Events Listen / Notify schema2.notify_and_insert @@ -8008,7 +8006,7 @@

Assessment Issues

@@ -8017,7 +8015,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Listen Notify + Events Listen / Notify schema2.notify_and_insert @@ -8098,7 +8096,7 @@

Assessment Issues

@@ -8107,7 +8105,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Listen Notify + Events Listen / Notify schema2.notify_and_insert @@ -8188,7 +8186,7 @@

Assessment Issues

@@ -8197,7 +8195,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Referenced Type Declaration + Referencing type declaration of variables public.process_combined_tbl @@ -8277,7 +8275,7 @@

Assessment Issues

@@ -8286,7 +8284,7 @@

Assessment Issues

   Unsupported Plpgsql Objects - Referenced Type Declaration + Referencing type declaration of variables public.update_combined_tbl_data @@ -8366,7 +8364,7 @@

Assessment Issues

@@ -8455,7 +8453,7 @@

Assessment Issues

@@ -8544,7 +8542,7 @@

Assessment Issues

@@ -8553,16 +8551,10 @@

Assessment Issues

   Unsupported Query Constructs - Xml Functions + Large Object Functions - SELECT - s.section_name, - b.title, - b.author -FROM - library_nested l, - ... + SELECT lo_create($1) @@ -8591,26 +8583,7 @@

Assessment Issues

-
SELECT
-    s.section_name,
-    b.title,
-    b.author
-FROM
-    library_nested l,
-    XMLTABLE(
-        $1
-        PASSING l.lib_data
-        COLUMNS
-            section_name TEXT PATH $2,
-            books XML PATH $3
-    ) AS s,
-    XMLTABLE(
-        $4
-        PASSING s.books
-        COLUMNS
-            title TEXT PATH $5,
-            author TEXT PATH $6
-) AS b
+
SELECT lo_create($1)
@@ -8620,7 +8593,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -8634,7 +8607,7 @@

Assessment Issues

-
XML functions are not yet supported in YugabyteDB.
+
Large Objects functions are not supported in YugabyteDB.
@@ -8648,7 +8621,7 @@

Assessment Issues

@@ -8657,15 +8630,10 @@

Assessment Issues

   Unsupported Query Constructs - Xml Functions + XML Functions - SELECT * -FROM xmltable( - $1 - PASSING $2 - COLUMNS - name TEXT PAT ... + SELECT xmlforest(first_name AS element1, last_name AS element2) FROM employees2 @@ -8694,13 +8662,7 @@

Assessment Issues

-
SELECT *
-FROM xmltable(
-    $1
-    PASSING $2
-    COLUMNS 
-        name TEXT PATH $3
-)
+
SELECT xmlforest(first_name AS element1, last_name AS element2) FROM employees2
@@ -8738,7 +8700,7 @@

Assessment Issues

@@ -8747,10 +8709,10 @@

Assessment Issues

   Unsupported Query Constructs - Xml Functions + Advisory Locks - SELECT xmlelement(name root, xmlelement(name child, $1)) + SELECT pg_advisory_unlock_all() @@ -8779,7 +8741,7 @@

Assessment Issues

-
SELECT xmlelement(name root, xmlelement(name child, $1))
+
SELECT pg_advisory_unlock_all()
@@ -8789,7 +8751,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -8803,7 +8765,7 @@

Assessment Issues

-
XML functions are not yet supported in YugabyteDB.
+
Advisory locks are not yet implemented in YugabyteDB.
@@ -8817,7 +8779,7 @@

Assessment Issues

@@ -8826,10 +8788,15 @@

Assessment Issues

   Unsupported Query Constructs - Xml Functions + XML Functions - SELECT xmlparse(document $1) as xmldata + SELECT + o.order_id, + items.product, + items.quantity::INT +FROM + order ... @@ -8858,7 +8825,19 @@

Assessment Issues

-
SELECT xmlparse(document $1) as xmldata
+
SELECT
+    o.order_id,
+    items.product,
+    items.quantity::INT
+FROM
+    orders_lateral o
+    CROSS JOIN LATERAL XMLTABLE(
+        $1
+        PASSING o.order_details
+        COLUMNS
+            product TEXT PATH $2,
+            quantity TEXT PATH $3
+) AS items
@@ -8896,7 +8875,7 @@

Assessment Issues

@@ -8905,13 +8884,19 @@

Assessment Issues

   Unsupported Query Constructs - Xml Functions + XML Functions - SELECT table_to_xml($1, $2, $3, $4) - - - + SELECT + s.section_name, + b.title, + b.author +FROM + library_nested l, + ... + + + Level 2 @@ -8937,7 +8922,26 @@

Assessment Issues

-
SELECT table_to_xml($1, $2, $3, $4)
+
SELECT
+    s.section_name,
+    b.title,
+    b.author
+FROM
+    library_nested l,
+    XMLTABLE(
+        $1
+        PASSING l.lib_data
+        COLUMNS
+            section_name TEXT PATH $2,
+            books XML PATH $3
+    ) AS s,
+    XMLTABLE(
+        $4
+        PASSING s.books
+        COLUMNS
+            title TEXT PATH $5,
+            author TEXT PATH $6
+) AS b
@@ -8975,7 +8979,7 @@

Assessment Issues

@@ -8984,10 +8988,12 @@

Assessment Issues

   Unsupported Query Constructs - Large Object Functions + COPY FROM ... WHERE - SELECT lo_create($1) + COPY employeesCopyFromWhere (id, name, age) +FROM STDIN WITH (FORMAT csv) +WHERE a ... @@ -9016,7 +9022,9 @@

Assessment Issues

-
SELECT lo_create($1)
+
COPY employeesCopyFromWhere (id, name, age)
+FROM STDIN WITH (FORMAT csv)
+WHERE age > 30
@@ -9026,7 +9034,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9034,13 +9042,20 @@

Assessment Issues

+ + Supported In (versions) + + >=2.25.0.0 (2.25 series) + + + Description
-
Large Objects functions are not supported in YugabyteDB.
+
COPY FROM ... WHERE is not yet supported in YugabyteDB.
@@ -9054,7 +9069,7 @@

Assessment Issues

@@ -9063,12 +9078,11 @@

Assessment Issues

   Unsupported Query Constructs - Copy From ... Where + COPY ... ON_ERROR - COPY employeesCopyFromWhere (id, name, age) -FROM STDIN WITH (FORMAT csv) -WHERE a ... + COPY employeesCopyOnError (id, name, age) +FROM STDIN WITH (FORMAT csv, ON_ERROR ... @@ -9097,9 +9111,8 @@

Assessment Issues

-
COPY employeesCopyFromWhere (id, name, age)
-FROM STDIN WITH (FORMAT csv)
-WHERE age > 30
+
COPY employeesCopyOnError (id, name, age)
+FROM STDIN WITH (FORMAT csv, ON_ERROR IGNORE )
@@ -9117,20 +9130,13 @@

Assessment Issues

- - Supported In (versions) - - >=2.25.0.0 (2.25 series) - - - Description
-
COPY FROM ... WHERE is not yet supported in YugabyteDB.
+
COPY ... ON_ERROR is not yet supported in YugabyteDB.
@@ -9144,7 +9150,7 @@

Assessment Issues

@@ -9153,11 +9159,15 @@

Assessment Issues

   Unsupported Query Constructs - System Columns + XML Functions - SELECT ctid, tableoid, xmin, xmax, cmin, cmax -FROM employees2 + SELECT * +FROM xmltable( + $1 + PASSING $2 + COLUMNS + name TEXT PAT ... @@ -9186,8 +9196,13 @@

Assessment Issues

-
SELECT ctid, tableoid, xmin, xmax, cmin, cmax
-FROM employees2
+
SELECT *
+FROM xmltable(
+    $1
+    PASSING $2
+    COLUMNS 
+        name TEXT PATH $3
+)
@@ -9197,7 +9212,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9211,7 +9226,7 @@

Assessment Issues

-
System columns are not yet supported in YugabyteDB.
+
XML functions are not yet supported in YugabyteDB.
@@ -9225,7 +9240,7 @@

Assessment Issues

@@ -9234,15 +9249,11 @@

Assessment Issues

   Unsupported Query Constructs - Xml Functions + System Columns - SELECT - o.order_id, - items.product, - items.quantity::INT -FROM - order ... + SELECT ctid, tableoid, xmin, xmax, cmin, cmax +FROM employees2 @@ -9271,19 +9282,8 @@

Assessment Issues

-
SELECT
-    o.order_id,
-    items.product,
-    items.quantity::INT
-FROM
-    orders_lateral o
-    CROSS JOIN LATERAL XMLTABLE(
-        $1
-        PASSING o.order_details
-        COLUMNS
-            product TEXT PATH $2,
-            quantity TEXT PATH $3
-) AS items
+
SELECT ctid, tableoid, xmin, xmax, cmin, cmax
+FROM employees2
@@ -9293,7 +9293,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9307,7 +9307,7 @@

Assessment Issues

-
XML functions are not yet supported in YugabyteDB.
+
System columns are not yet supported in YugabyteDB.
@@ -9321,7 +9321,7 @@

Assessment Issues

@@ -9333,7 +9333,7 @@

Assessment Issues

Advisory Locks - SELECT pg_advisory_unlock_all() + SELECT pg_advisory_lock($1,$2) @@ -9362,7 +9362,7 @@

Assessment Issues

-
SELECT pg_advisory_unlock_all()
+
SELECT pg_advisory_lock($1,$2)
@@ -9400,7 +9400,7 @@

Assessment Issues

@@ -9409,10 +9409,10 @@

Assessment Issues

   Unsupported Query Constructs - Xml Functions + XML Functions - SELECT xmlforest(first_name AS element1, last_name AS element2) FROM employees2 + SELECT xmlparse(document $1) as xmldata @@ -9441,7 +9441,7 @@

Assessment Issues

-
SELECT xmlforest(first_name AS element1, last_name AS element2) FROM employees2
+
SELECT xmlparse(document $1) as xmldata
@@ -9479,7 +9479,7 @@

Assessment Issues

@@ -9488,10 +9488,10 @@

Assessment Issues

   Unsupported Query Constructs - Advisory Locks + XML Functions - SELECT pg_advisory_xact_lock($1,$2) + SELECT xml_is_well_formed($1) @@ -9520,7 +9520,7 @@

Assessment Issues

-
SELECT pg_advisory_xact_lock($1,$2)
+
SELECT xml_is_well_formed($1)
@@ -9530,7 +9530,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9544,7 +9544,7 @@

Assessment Issues

-
Advisory locks are not yet implemented in YugabyteDB.
+
XML functions are not yet supported in YugabyteDB.
@@ -9558,7 +9558,7 @@

Assessment Issues

@@ -9570,7 +9570,7 @@

Assessment Issues

Advisory Locks - SELECT pg_advisory_lock($1,$2) + SELECT pg_advisory_xact_lock($1,$2) @@ -9599,7 +9599,7 @@

Assessment Issues

-
SELECT pg_advisory_lock($1,$2)
+
SELECT pg_advisory_xact_lock($1,$2)
@@ -9637,7 +9637,7 @@

Assessment Issues

@@ -9646,10 +9646,10 @@

Assessment Issues

   Unsupported Query Constructs - Xml Functions + Advisory Locks - SELECT xml_is_well_formed($1) + SELECT pg_advisory_unlock($1,$2) @@ -9678,7 +9678,7 @@

Assessment Issues

-
SELECT xml_is_well_formed($1)
+
SELECT pg_advisory_unlock($1,$2)
@@ -9688,7 +9688,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9702,7 +9702,7 @@

Assessment Issues

-
XML functions are not yet supported in YugabyteDB.
+
Advisory locks are not yet implemented in YugabyteDB.
@@ -9716,7 +9716,7 @@

Assessment Issues

@@ -9725,11 +9725,10 @@

Assessment Issues

   Unsupported Query Constructs - Copy ... On Error + XML Functions - COPY employeesCopyOnError (id, name, age) -FROM STDIN WITH (FORMAT csv, ON_ERROR ... + SELECT table_to_xml($1, $2, $3, $4) @@ -9758,8 +9757,7 @@

Assessment Issues

-
COPY employeesCopyOnError (id, name, age)
-FROM STDIN WITH (FORMAT csv, ON_ERROR IGNORE )
+
SELECT table_to_xml($1, $2, $3, $4)
@@ -9769,7 +9767,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9783,7 +9781,7 @@

Assessment Issues

-
COPY ... ON_ERROR is not yet supported in YugabyteDB.
+
XML functions are not yet supported in YugabyteDB.
@@ -9797,7 +9795,7 @@

Assessment Issues

@@ -9806,10 +9804,10 @@

Assessment Issues

   Unsupported Query Constructs - Advisory Locks + XML Functions - SELECT pg_advisory_unlock($1,$2) + SELECT xmlelement(name root, xmlelement(name child, $1)) @@ -9838,7 +9836,7 @@

Assessment Issues

-
SELECT pg_advisory_unlock($1,$2)
+
SELECT xmlelement(name root, xmlelement(name child, $1))
@@ -9848,7 +9846,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9862,7 +9860,7 @@

Assessment Issues

-
Advisory locks are not yet implemented in YugabyteDB.
+
XML functions are not yet supported in YugabyteDB.
@@ -9876,7 +9874,7 @@

Assessment Issues

@@ -9885,10 +9883,10 @@

Assessment Issues

   Unsupported Datatypes - Tsmultirange + nummultirange - schema2.timestamp_multirange_table.event_times + schema2.numeric_multirange_table.price_ranges @@ -9927,7 +9925,7 @@

Assessment Issues

Object Name - schema2.timestamp_multirange_table.event_times + schema2.numeric_multirange_table.price_ranges @@ -9973,7 +9971,7 @@

Assessment Issues

@@ -9982,10 +9980,10 @@

Assessment Issues

   Unsupported Datatypes - Xml + lo - public.ordersentry_view.summary_xml + public.combined_tbl.raster @@ -10024,7 +10022,7 @@

Assessment Issues

Object Name - public.ordersentry_view.summary_xml + public.combined_tbl.raster @@ -10070,7 +10068,7 @@

Assessment Issues

@@ -10079,10 +10077,10 @@

Assessment Issues

   Unsupported Datatypes - Int8multirange + tstzmultirange - schema2.bigint_multirange_table.value_ranges + public.timestamptz_multirange_table.global_event_times @@ -10121,7 +10119,7 @@

Assessment Issues

Object Name - schema2.bigint_multirange_table.value_ranges + public.timestamptz_multirange_table.global_event_times @@ -10167,7 +10165,7 @@

Assessment Issues

@@ -10176,10 +10174,10 @@

Assessment Issues

   Unsupported Datatypes - Datemultirange + xml - public.date_multirange_table.project_dates + public.library_nested.lib_data @@ -10218,7 +10216,7 @@

Assessment Issues

Object Name - public.date_multirange_table.project_dates + public.library_nested.lib_data @@ -10264,7 +10262,7 @@

Assessment Issues

@@ -10273,10 +10271,10 @@

Assessment Issues

   Unsupported Datatypes - Int4multirange + txid_snapshot - schema2.int_multirange_table.value_ranges + schema2.mixed_data_types_table1.snapshot_data @@ -10315,7 +10313,7 @@

Assessment Issues

Object Name - schema2.int_multirange_table.value_ranges + schema2.mixed_data_types_table1.snapshot_data @@ -10361,7 +10359,7 @@

Assessment Issues

@@ -10370,10 +10368,10 @@

Assessment Issues

   Unsupported Datatypes - Pg Lsn + txid_snapshot - public.mixed_data_types_table2.lsn_data + public.mixed_data_types_table1.snapshot_data @@ -10412,7 +10410,7 @@

Assessment Issues

Object Name - public.mixed_data_types_table2.lsn_data + public.mixed_data_types_table1.snapshot_data @@ -10458,7 +10456,7 @@

Assessment Issues

@@ -10467,10 +10465,10 @@

Assessment Issues

   Unsupported Datatypes - Xml + pg_lsn - schema2.test_xml_type.data + public.combined_tbl.lsn @@ -10509,7 +10507,7 @@

Assessment Issues

Object Name - schema2.test_xml_type.data + public.combined_tbl.lsn @@ -10555,7 +10553,7 @@

Assessment Issues

@@ -10564,10 +10562,10 @@

Assessment Issues

   Unsupported Datatypes - Nummultirange + xml - public.numeric_multirange_table.price_ranges + public.orders_lateral.order_details @@ -10606,7 +10604,7 @@

Assessment Issues

Object Name - public.numeric_multirange_table.price_ranges + public.orders_lateral.order_details @@ -10652,7 +10650,7 @@

Assessment Issues

@@ -10661,10 +10659,10 @@

Assessment Issues

   Unsupported Datatypes - Int8multirange + pg_lsn - public.bigint_multirange_table.value_ranges + public.mixed_data_types_table2.lsn_data @@ -10703,7 +10701,7 @@

Assessment Issues

Object Name - public.bigint_multirange_table.value_ranges + public.mixed_data_types_table2.lsn_data @@ -10749,7 +10747,7 @@

Assessment Issues

@@ -10758,10 +10756,10 @@

Assessment Issues

   Unsupported Datatypes - Xml + xml - public.orders_lateral.order_details + public.test_xml_type.data @@ -10800,7 +10798,7 @@

Assessment Issues

Object Name - public.orders_lateral.order_details + public.test_xml_type.data @@ -10846,7 +10844,7 @@

Assessment Issues

@@ -10855,10 +10853,10 @@

Assessment Issues

   Unsupported Datatypes - Txid Snapshot + tsmultirange - schema2.mixed_data_types_table1.snapshot_data + public.timestamp_multirange_table.event_times @@ -10897,7 +10895,7 @@

Assessment Issues

Object Name - schema2.mixed_data_types_table1.snapshot_data + public.timestamp_multirange_table.event_times @@ -10943,7 +10941,7 @@

Assessment Issues

@@ -10952,10 +10950,10 @@

Assessment Issues

   Unsupported Datatypes - Xml + xid - public.ordersentry_view.order_xml + public.ordersentry_view.transaction_id @@ -10994,7 +10992,7 @@

Assessment Issues

Object Name - public.ordersentry_view.order_xml + public.ordersentry_view.transaction_id @@ -11040,7 +11038,7 @@

Assessment Issues

@@ -11049,10 +11047,10 @@

Assessment Issues

   Unsupported Datatypes - Txid Snapshot + int8multirange - public.mixed_data_types_table1.snapshot_data + schema2.bigint_multirange_table.value_ranges @@ -11091,7 +11089,7 @@

Assessment Issues

Object Name - public.mixed_data_types_table1.snapshot_data + schema2.bigint_multirange_table.value_ranges @@ -11137,7 +11135,7 @@

Assessment Issues

@@ -11146,10 +11144,10 @@

Assessment Issues

   Unsupported Datatypes - Xml + pg_lsn - public.library_nested.lib_data + schema2.mixed_data_types_table2.lsn_data @@ -11188,7 +11186,7 @@

Assessment Issues

Object Name - public.library_nested.lib_data + schema2.mixed_data_types_table2.lsn_data @@ -11234,7 +11232,7 @@

Assessment Issues

@@ -11243,7 +11241,7 @@

Assessment Issues

   Unsupported Datatypes - Datemultirange + datemultirange schema2.date_multirange_table.project_dates @@ -11331,7 +11329,7 @@

Assessment Issues

@@ -11340,10 +11338,10 @@

Assessment Issues

   Unsupported Datatypes - Pg Lsn + tstzmultirange - schema2.mixed_data_types_table2.lsn_data + schema2.timestamptz_multirange_table.global_event_times @@ -11382,7 +11380,7 @@

Assessment Issues

Object Name - schema2.mixed_data_types_table2.lsn_data + schema2.timestamptz_multirange_table.global_event_times @@ -11428,7 +11426,7 @@

Assessment Issues

@@ -11437,10 +11435,10 @@

Assessment Issues

   Unsupported Datatypes - Xml + tsmultirange - public.test_xml_type.data + schema2.timestamp_multirange_table.event_times @@ -11479,7 +11477,7 @@

Assessment Issues

Object Name - public.test_xml_type.data + schema2.timestamp_multirange_table.event_times @@ -11525,7 +11523,7 @@

Assessment Issues

@@ -11534,10 +11532,10 @@

Assessment Issues

   Unsupported Datatypes - Tstzmultirange + datemultirange - schema2.timestamptz_multirange_table.global_event_times + public.date_multirange_table.project_dates @@ -11576,7 +11574,7 @@

Assessment Issues

Object Name - schema2.timestamptz_multirange_table.global_event_times + public.date_multirange_table.project_dates @@ -11622,7 +11620,7 @@

Assessment Issues

@@ -11631,10 +11629,10 @@

Assessment Issues

   Unsupported Datatypes - Pg Lsn + int4multirange - public.combined_tbl.lsn + schema2.int_multirange_table.value_ranges @@ -11673,7 +11671,7 @@

Assessment Issues

Object Name - public.combined_tbl.lsn + schema2.int_multirange_table.value_ranges @@ -11719,7 +11717,7 @@

Assessment Issues

@@ -11728,10 +11726,10 @@

Assessment Issues

   Unsupported Datatypes - Lo + xml - public.combined_tbl.raster + public.ordersentry_view.summary_xml @@ -11770,7 +11768,7 @@

Assessment Issues

Object Name - public.combined_tbl.raster + public.ordersentry_view.summary_xml @@ -11816,7 +11814,7 @@

Assessment Issues

@@ -11825,10 +11823,10 @@

Assessment Issues

   Unsupported Datatypes - Nummultirange + nummultirange - schema2.numeric_multirange_table.price_ranges + public.numeric_multirange_table.price_ranges @@ -11867,7 +11865,7 @@

Assessment Issues

Object Name - schema2.numeric_multirange_table.price_ranges + public.numeric_multirange_table.price_ranges @@ -11913,7 +11911,7 @@

Assessment Issues

@@ -11922,10 +11920,10 @@

Assessment Issues

   Unsupported Datatypes - Xid + int8multirange - public.ordersentry_view.transaction_id + public.bigint_multirange_table.value_ranges @@ -11964,7 +11962,7 @@

Assessment Issues

Object Name - public.ordersentry_view.transaction_id + public.bigint_multirange_table.value_ranges @@ -12010,7 +12008,7 @@

Assessment Issues

@@ -12019,10 +12017,10 @@

Assessment Issues

   Unsupported Datatypes - Tsmultirange + xml - public.timestamp_multirange_table.event_times + schema2.test_xml_type.data @@ -12061,7 +12059,7 @@

Assessment Issues

Object Name - public.timestamp_multirange_table.event_times + schema2.test_xml_type.data @@ -12107,7 +12105,7 @@

Assessment Issues

@@ -12116,7 +12114,7 @@

Assessment Issues

   Unsupported Datatypes - Int4multirange + int4multirange public.int_multirange_table.value_ranges @@ -12204,7 +12202,7 @@

Assessment Issues

@@ -12213,10 +12211,10 @@

Assessment Issues

   Unsupported Datatypes - Tstzmultirange + xml - public.timestamptz_multirange_table.global_event_times + public.ordersentry_view.order_xml @@ -12255,7 +12253,7 @@

Assessment Issues

Object Name - public.timestamptz_multirange_table.global_event_times + public.ordersentry_view.order_xml @@ -12301,7 +12299,7 @@

Assessment Issues

@@ -12310,7 +12308,7 @@

Assessment Issues

   Migration Caveats - Policy With Roles + Policy with Roles policy_test_report ON public.test_xml_type @@ -12399,7 +12397,7 @@

Assessment Issues

@@ -12408,7 +12406,7 @@

Assessment Issues

   Migration Caveats - Policy With Roles + Policy with Roles policy_test_report ON schema2.test_xml_type @@ -12497,7 +12495,7 @@

Assessment Issues

@@ -12506,10 +12504,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration + Unsupported datatype for Live migration - public.mixed_data_types_table1.box_data + schema2.mixed_data_types_table2.lseg_data @@ -12548,7 +12546,7 @@

Assessment Issues

Object Name - public.mixed_data_types_table1.box_data + schema2.mixed_data_types_table2.lseg_data @@ -12594,7 +12592,7 @@

Assessment Issues

@@ -12603,10 +12601,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration + Unsupported datatype for Live migration - schema2.mixed_data_types_table2.path_data + schema2.mixed_data_types_table1.lseg_data @@ -12645,7 +12643,7 @@

Assessment Issues

Object Name - schema2.mixed_data_types_table2.path_data + schema2.mixed_data_types_table1.lseg_data @@ -12691,7 +12689,7 @@

Assessment Issues

@@ -12700,10 +12698,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration + Unsupported datatype for Live migration - public.mixed_data_types_table1.point_data + public.mixed_data_types_table1.lseg_data @@ -12742,7 +12740,7 @@

Assessment Issues

Object Name - public.mixed_data_types_table1.point_data + public.mixed_data_types_table1.lseg_data @@ -12788,7 +12786,7 @@

Assessment Issues

@@ -12797,10 +12795,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration + Unsupported datatype for Live migration - schema2.mixed_data_types_table2.lseg_data + schema2.mixed_data_types_table2.path_data @@ -12839,7 +12837,7 @@

Assessment Issues

Object Name - schema2.mixed_data_types_table2.lseg_data + schema2.mixed_data_types_table2.path_data @@ -12885,7 +12883,7 @@

Assessment Issues

@@ -12894,10 +12892,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration + Unsupported datatype for Live migration - schema2.mixed_data_types_table1.lseg_data + public.mixed_data_types_table2.lseg_data @@ -12936,7 +12934,7 @@

Assessment Issues

Object Name - schema2.mixed_data_types_table1.lseg_data + public.mixed_data_types_table2.lseg_data @@ -12982,7 +12980,7 @@

Assessment Issues

@@ -12991,7 +12989,7 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration + Unsupported datatype for Live migration schema2.mixed_data_types_table1.point_data @@ -13079,7 +13077,7 @@

Assessment Issues

@@ -13088,10 +13086,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration + Unsupported datatype for Live migration - public.mixed_data_types_table1.lseg_data + public.mixed_data_types_table1.point_data @@ -13130,7 +13128,7 @@

Assessment Issues

Object Name - public.mixed_data_types_table1.lseg_data + public.mixed_data_types_table1.point_data @@ -13176,7 +13174,7 @@

Assessment Issues

@@ -13185,7 +13183,7 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration + Unsupported datatype for Live migration public.mixed_data_types_table2.path_data @@ -13273,7 +13271,7 @@

Assessment Issues

@@ -13282,10 +13280,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration + Unsupported datatype for Live migration - schema2.mixed_data_types_table1.box_data + public.mixed_data_types_table1.box_data @@ -13324,7 +13322,7 @@

Assessment Issues

Object Name - schema2.mixed_data_types_table1.box_data + public.mixed_data_types_table1.box_data @@ -13370,7 +13368,7 @@

Assessment Issues

@@ -13379,10 +13377,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration + Unsupported datatype for Live migration - public.mixed_data_types_table2.lseg_data + schema2.mixed_data_types_table1.box_data @@ -13421,7 +13419,7 @@

Assessment Issues

Object Name - public.mixed_data_types_table2.lseg_data + schema2.mixed_data_types_table1.box_data @@ -13467,7 +13465,7 @@

Assessment Issues

@@ -13476,10 +13474,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration With Ff Fb + Unsupported datatype for Live migration with fall-forward/fallback - public.documents.content_tsvector + public.products.item @@ -13518,7 +13516,7 @@

Assessment Issues

Object Name - public.documents.content_tsvector + public.products.item @@ -13564,7 +13562,7 @@

Assessment Issues

@@ -13573,10 +13571,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration With Ff Fb + Unsupported datatype for Live migration with fall-forward/fallback - schema2.orders.item + public.orders.item @@ -13615,7 +13613,7 @@

Assessment Issues

Object Name - schema2.orders.item + public.orders.item @@ -13661,7 +13659,7 @@

Assessment Issues

@@ -13670,10 +13668,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration With Ff Fb + Unsupported datatype for Live migration with fall-forward/fallback - public.products.item + public.combined_tbl.address @@ -13712,7 +13710,7 @@

Assessment Issues

Object Name - public.products.item + public.combined_tbl.address @@ -13758,7 +13756,7 @@

Assessment Issues

@@ -13767,10 +13765,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration With Ff Fb + Unsupported datatype for Live migration with fall-forward/fallback - public.documents.title_tsvector + public.combined_tbl.arr_enum @@ -13809,7 +13807,7 @@

Assessment Issues

Object Name - public.documents.title_tsvector + public.combined_tbl.arr_enum @@ -13855,7 +13853,7 @@

Assessment Issues

@@ -13864,10 +13862,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration With Ff Fb + Unsupported datatype for Live migration with fall-forward/fallback - public.combined_tbl.data + public.documents.content_tsvector @@ -13906,7 +13904,7 @@

Assessment Issues

Object Name - public.combined_tbl.data + public.documents.content_tsvector @@ -13952,7 +13950,7 @@

Assessment Issues

@@ -13961,10 +13959,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration With Ff Fb + Unsupported datatype for Live migration with fall-forward/fallback - public.orders.item + public.combined_tbl.data @@ -14003,7 +14001,7 @@

Assessment Issues

Object Name - public.orders.item + public.combined_tbl.data @@ -14049,7 +14047,7 @@

Assessment Issues

@@ -14058,10 +14056,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration With Ff Fb + Unsupported datatype for Live migration with fall-forward/fallback - public.combined_tbl.arr_enum + schema2.products.item @@ -14100,7 +14098,7 @@

Assessment Issues

Object Name - public.combined_tbl.arr_enum + schema2.products.item @@ -14146,7 +14144,7 @@

Assessment Issues

@@ -14155,10 +14153,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration With Ff Fb + Unsupported datatype for Live migration with fall-forward/fallback - public.combined_tbl.address + public.documents.title_tsvector @@ -14197,7 +14195,7 @@

Assessment Issues

Object Name - public.combined_tbl.address + public.documents.title_tsvector @@ -14243,7 +14241,7 @@

Assessment Issues

@@ -14252,10 +14250,10 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration With Ff Fb + Unsupported datatype for Live migration with fall-forward/fallback - schema2.products.item + schema2.orders.item @@ -14294,7 +14292,7 @@

Assessment Issues

Object Name - schema2.products.item + schema2.orders.item @@ -14340,7 +14338,7 @@

Assessment Issues

@@ -14349,7 +14347,7 @@

Assessment Issues

   Migration Caveats - Unsupported Datatype Live Migration With Ff Fb + Unsupported datatype for Live migration with fall-forward/fallback public.ts_query_table.query From cc71f10011ac960f08ea142668ed7209a7a85819 Mon Sep 17 00:00:00 2001 From: shubham-yb Date: Sun, 16 Feb 2025 08:19:28 +0000 Subject: [PATCH 09/15] Updated the expected reports --- .../expectedAssessmentReport.html | 1809 +++++++++++------ 1 file changed, 1139 insertions(+), 670 deletions(-) diff --git a/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html b/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html index b300a20fc8..fbe4465122 100644 --- a/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html +++ b/migtests/tests/pg/assessment-report-test/expectedAssessmentReport.html @@ -127,14 +127,14 @@ } function expandAllIssues() { // Suppose each details row has an ID pattern "details-i" and an arrow with ID "arrow-i" - totalIssues = 137; + totalIssues = 139; for (let i = 0; i < totalIssues; i++) { document.getElementById('details-' + i).style.display = 'table-row'; document.getElementById('arrow-' + i).innerHTML = '▼'; } } function collapseAllIssues() { - totalIssues = 137; + totalIssues = 139; for (let i = 0; i < totalIssues; i++) { document.getElementById('details-' + i).style.display = 'none'; document.getElementById('arrow-' + i).innerHTML = '▶'; @@ -186,10 +186,10 @@

Migration Assessment Report

Database Name: pg_assessment_report

-

Database Version: 17.2 (Ubuntu 17.2-1.pgdg22.04+1)

+

Database Version: 17.3 (Ubuntu 17.3-1.pgdg22.04+1)

-

Target YB Version: 2024.2.0.0

+

Target YB Version: 2024.2.1.0

Migration Complexity: HIGH

@@ -837,159 +837,161 @@

Sharding Recommendations

- public.date_multirange_table
+ public.employees2
- public.users_unique_nulls_not_distinct
+ public.timestamptz_multirange_table
public.sydney
- public.mixed_data_types_table2
+ public.int_multirange_table
- public.orders2
+ public.users_unique_nulls_not_distinct
- public.users_unique_nulls_not_distinct_index
+ public.london
- public.int_multirange_table
+ public.orders_lateral
- public.inet_type
+ public.ts_query_table
- public.test_exclude_basic
+ public.sales_unique_nulls_not_distinct_alter
- public.users_unique_nulls_distinct
+ public.users_unique_nulls_not_distinct_index
- public.sales_unique_nulls_not_distinct
+ public.users_unique_nulls_distinct
- public.london
+ public.timestamp_multirange_table
- public.child_table
+ public.mixed_data_types_table2
- public.bigint_multirange_table
+ public.test_exclude_basic
- public.timestamptz_multirange_table
+ public.parent_table
- public.sales_unique_nulls_not_distinct_alter
+ public.numeric_multirange_table
- public.boston
+ public.child_table
- public.employees2
+ public.bigint_multirange_table
public.employeesforview
- public.documents
- - public.orders_lateral
+ public.date_multirange_table
- public.parent_table
+ public.sales_unique_nulls_not_distinct
public.tbl_unlogged
- public.timestamp_multirange_table
- - public.numeric_multirange_table
+ public.documents
- public.ts_query_table
+ public.boston
- schema2.users_unique_nulls_not_distinct
+ public.inet_type
- schema2.sales_unique_nulls_not_distinct
+ public.orders2
- schema2.orders2
+ schema2.date_multirange_table
- schema2.ext_test
+ schema2.numeric_multirange_table
- schema2.tt
+ schema2.sales_unique_nulls_not_distinct_alter
- schema2.bigint_multirange_table
+ schema2.users_unique_nulls_distinct
- schema2.int_multirange_table
+ schema2.timestamp_multirange_table
- schema2.london
+ schema2.parent_table
schema2.employees2
- schema2.date_multirange_table
- - schema2.tbl_unlogged
+ schema2.users_unique_nulls_not_distinct_index
- schema2.timestamp_multirange_table
+ schema2.london
- schema2.sales_unique_nulls_not_distinct_alter
+ schema2.bigint_multirange_table
schema2.child_table
- schema2.sydney
+ schema2.boston
- schema2.mixed_data_types_table2
+ schema2.orders2
- schema2.users_unique_nulls_not_distinct_index
+ schema2.timestamptz_multirange_table
- schema2.numeric_multirange_table
+ schema2.tt
- schema2.timestamptz_multirange_table
+ schema2.int_multirange_table
- schema2.parent_table
+ schema2.ext_test
- schema2.employeesforview
+ schema2.sales_unique_nulls_not_distinct
- schema2.boston
+ schema2.mixed_data_types_table2
- schema2.users_unique_nulls_distinct
+ schema2.tbl_unlogged
- public.employeescopyfromwhere
+ schema2.sydney
- public.employees
+ schema2.employeesforview
- public.audit
+ schema2.users_unique_nulls_not_distinct
- public.employeescopyonerror
+ public.orders
public.Case_Sensitive_Columns
- public.products
+ public.employeescopyfromwhere
- public.c
+ public.ordersentry
- public.Recipients
+ public.Mixed_Case_Table_Name_Test
- public.session_log2
+ public.products
- public.library_nested
+ public.WITH
- public.tt
+ public.test_xml_type
- public.foo
+ public.employeescopyonerror
- public.ext_test
+ public.employees
- public.WITH
+ public.foo
- public.test_xml_type
+ public.with_example2
public.session_log1
- public.with_example2
+ public.session_log2
- public.ordersentry
+ public.Recipients
+ + public.ext_test
+ + public.session_log
+ + public.tt
public.with_example1
- public.Mixed_Case_Table_Name_Test
+ public.c
- public.orders
+ public.audit
- public.session_log
+ public.library_nested
- schema2.session_log2
+ schema2.test_xml_type
- schema2.c
+ schema2.products
- schema2.Recipients
+ schema2.with_example2
schema2.with_example1
- schema2.foo
+ schema2.session_log
- schema2.test_xml_type
+ schema2.Recipients
+ + schema2.c
schema2.audit
@@ -997,38 +999,36 @@

Sharding Recommendations

schema2.Case_Sensitive_Columns
- schema2.products
- - schema2.session_log
- - schema2.session_log1
+ schema2.foo
- schema2.with_example2
+ schema2.orders
schema2.Mixed_Case_Table_Name_Test
- schema2.orders
+ schema2.session_log2
- test_views.abc_mview
+ schema2.session_log1
test_views.view_table2
test_views.mv1
- test_views.xyz_mview
+ test_views.abc_mview
test_views.view_table1
+ test_views.xyz_mview
+
- public.combined_tbl
+ public.test_jsonb
public.mixed_data_types_table1
- public.test_jsonb
+ public.combined_tbl
public.citext_type
@@ -1073,19 +1073,12 @@

Migration Complexity Explanation

- - Migration Caveats - 22 - 0 - 0 - 22 - Unsupported Features - 48 + 50 7 4 - 59 + 61 Unsupported Plpgsql Objects @@ -1108,6 +1101,13 @@

Migration Complexity Explanation

25 25 + + Migration Caveats + 22 + 0 + 0 + 22 + @@ -1129,7 +1129,7 @@

Assessment Issues

-

Total Issues: 137

+

Total Issues: 139

Below is a detailed breakdown of each issue.

@@ -1250,7 +1250,7 @@

Assessment Issues

-
The schema contains an index with an access method 'GIST' which is not supported in YugabyteDB. 
+
The schema contains an index with an access method 'GIST' which is not supported in YugabyteDB.
@@ -1348,7 +1348,7 @@

Assessment Issues

-
The schema contains an index with an access method 'GIST' which is not supported in YugabyteDB. 
+
The schema contains an index with an access method 'GIST' which is not supported in YugabyteDB.
@@ -1446,7 +1446,7 @@

Assessment Issues

-
The schema contains an index with an access method 'GIST' which is not supported in YugabyteDB. 
+
The schema contains an index with an access method 'GIST' which is not supported in YugabyteDB.
@@ -1544,7 +1544,7 @@

Assessment Issues

-
The schema contains an index with an access method 'GIST' which is not supported in YugabyteDB. 
+
The schema contains an index with an access method 'GIST' which is not supported in YugabyteDB.
@@ -1642,7 +1642,7 @@

Assessment Issues

-
The schema contains an index with an access method 'BRIN' which is not supported in YugabyteDB. 
+
The schema contains an index with an access method 'BRIN' which is not supported in YugabyteDB.
@@ -1740,7 +1740,7 @@

Assessment Issues

-
The schema contains an index with an access method 'SPGIST' which is not supported in YugabyteDB. 
+
The schema contains an index with an access method 'SPGIST' which is not supported in YugabyteDB.
@@ -1838,7 +1838,7 @@

Assessment Issues

-
CONSTRAINT TRIGGER is not yet supported in YugabyteDB. 
+
CONSTRAINT TRIGGER is not yet supported in YugabyteDB.
@@ -1936,7 +1936,7 @@

Assessment Issues

-
CONSTRAINT TRIGGER is not yet supported in YugabyteDB. 
+
CONSTRAINT TRIGGER is not yet supported in YugabyteDB.
@@ -2037,7 +2037,7 @@

Assessment Issues

-
Table inheritance is not yet supported in YugabyteDB. 
+
Table inheritance is not yet supported in YugabyteDB.
@@ -2138,7 +2138,7 @@

Assessment Issues

-
Table inheritance is not yet supported in YugabyteDB. 
+
Table inheritance is not yet supported in YugabyteDB.
@@ -4946,7 +4946,7 @@

Assessment Issues

-
Advisory locks are not yet implemented in YugabyteDB. 
+
Advisory locks are not yet implemented in YugabyteDB.
@@ -5055,7 +5055,7 @@

Assessment Issues

-
XML functions are not yet supported in YugabyteDB. 
+
XML functions are not yet supported in YugabyteDB.
@@ -5164,7 +5164,7 @@

Assessment Issues

-
System columns are not yet supported in YugabyteDB. 
+
System columns are not yet supported in YugabyteDB.
@@ -5262,7 +5262,7 @@

Assessment Issues

-
Large Objects functions are not supported in YugabyteDB. 
+
Large Objects functions are not supported in YugabyteDB.
@@ -5375,7 +5375,7 @@

Assessment Issues

-
Regex functions are not yet supported in YugabyteDB. 
+
Regex functions are not yet supported in YugabyteDB.
@@ -5484,7 +5484,7 @@

Assessment Issues

-
FETCH .. WITH TIES is not yet supported in YugabyteDB. 
+
FETCH .. WITH TIES is not yet supported in YugabyteDB.
@@ -5593,7 +5593,7 @@

Assessment Issues

-
FETCH .. WITH TIES is not yet supported in YugabyteDB. 
+
FETCH .. WITH TIES is not yet supported in YugabyteDB.
@@ -5701,7 +5701,7 @@

Assessment Issues

-
Security invoker views are not yet supported in YugabyteDB. Security Invoker Views are not yet supported in YugabyteDB, no workaround available currently
+
Security invoker views are not yet supported in YugabyteDB.
@@ -5799,7 +5799,7 @@

Assessment Issues

-
Non-Deterministic collations are not yet supported in YugabyteDB. This feature is not supported in YugabyteDB yet
+
Non-Deterministic collations are not yet supported in YugabyteDB.
@@ -5905,7 +5905,7 @@

Assessment Issues

-
Unique constraint on columns with NULL values is not yet supported in YugabyteDB. 
+
Unique constraint on columns with NULL values is not yet supported in YugabyteDB.
@@ -6011,7 +6011,7 @@

Assessment Issues

-
Unique constraint on columns with NULL values is not yet supported in YugabyteDB. 
+
Unique constraint on columns with NULL values is not yet supported in YugabyteDB.
@@ -6117,7 +6117,7 @@

Assessment Issues

-
Unique constraint on columns with NULL values is not yet supported in YugabyteDB. 
+
Unique constraint on columns with NULL values is not yet supported in YugabyteDB.
@@ -6223,7 +6223,7 @@

Assessment Issues

-
Unique constraint on columns with NULL values is not yet supported in YugabyteDB. 
+
Unique constraint on columns with NULL values is not yet supported in YugabyteDB.
@@ -6329,7 +6329,7 @@

Assessment Issues

-
Unique constraint on columns with NULL values is not yet supported in YugabyteDB. 
+
Unique constraint on columns with NULL values is not yet supported in YugabyteDB.
@@ -6435,7 +6435,7 @@

Assessment Issues

-
Unique constraint on columns with NULL values is not yet supported in YugabyteDB. 
+
Unique constraint on columns with NULL values is not yet supported in YugabyteDB.
@@ -6540,7 +6540,7 @@

Assessment Issues

-
Unique constraint on columns with NULL values is not yet supported in YugabyteDB. 
+
Unique constraint on columns with NULL values is not yet supported in YugabyteDB.
@@ -6645,7 +6645,7 @@

Assessment Issues

-
Unique constraint on columns with NULL values is not yet supported in YugabyteDB. 
+
Unique constraint on columns with NULL values is not yet supported in YugabyteDB.
@@ -6751,7 +6751,7 @@

Assessment Issues

-
Foreign key references to partitioned table are not yet supported in YugabyteDB. No workaround available.
+
Foreign key references to partitioned table are not yet supported in YugabyteDB.
@@ -6861,7 +6861,7 @@

Assessment Issues

-
SQL Body for sql languages in function statement is not supported in YugabyteDB No workaround available.
+
SQL Body for sql languages in function statement is not supported in YugabyteDB
@@ -6968,7 +6968,7 @@

Assessment Issues

-
SQL Body for sql languages in function statement is not supported in YugabyteDB No workaround available.
+
SQL Body for sql languages in function statement is not supported in YugabyteDB
@@ -7078,7 +7078,7 @@

Assessment Issues

-
SQL Body for sql languages in function statement is not supported in YugabyteDB No workaround available.
+
SQL Body for sql languages in function statement is not supported in YugabyteDB
@@ -7185,7 +7185,7 @@

Assessment Issues

-
SQL Body for sql languages in function statement is not supported in YugabyteDB No workaround available.
+
SQL Body for sql languages in function statement is not supported in YugabyteDB
@@ -7198,24 +7198,24 @@

Assessment Issues

+ data-category="unsupported_features" + data-name="COMPRESSION clause in table for TOASTing" + data-impact="LEVEL_1">    - Unsupported Plpgsql Objects + Unsupported Features - Non-decimal integer literal + COMPRESSION clause in table for TOASTing - public.insert_non_decimal + public.users_unique_nulls_distinct - Level 2 + Level 1 @@ -7228,12 +7228,21 @@

Assessment Issues

+ + Category Description + +
+ Features of the source database that are not supported on the target YugabyteDB. +
+ + + Object Type - FUNCTION + TABLE @@ -7241,7 +7250,7 @@

Assessment Issues

Object Name - public.insert_non_decimal + public.users_unique_nulls_distinct @@ -7250,7 +7259,7 @@

Assessment Issues

-
SELECT 5678901234, 0x1527D27F2, 0o52237223762, 0b101010010011111010010011111110010;
+
ALTER TABLE ONLY public.users_unique_nulls_distinct ALTER COLUMN email SET COMPRESSION pglz;
@@ -7274,7 +7283,7 @@

Assessment Issues

-
Non decimal integer literals are not supported in YugabyteDB
+
TOASTing is disabled internally in YugabyteDB and hence this clause is not relevant. Remove the clause from the DDL.
@@ -7287,24 +7296,24 @@

Assessment Issues

+ data-category="unsupported_features" + data-name="COMPRESSION clause in table for TOASTing" + data-impact="LEVEL_1">    - Unsupported Plpgsql Objects + Unsupported Features - Non-decimal integer literal + COMPRESSION clause in table for TOASTing - schema2.insert_non_decimal + schema2.users_unique_nulls_distinct - Level 2 + Level 1 @@ -7317,12 +7326,21 @@

Assessment Issues

+ + Category Description + +
+ Features of the source database that are not supported on the target YugabyteDB. +
+ + + Object Type - FUNCTION + TABLE @@ -7330,7 +7348,7 @@

Assessment Issues

Object Name - schema2.insert_non_decimal + schema2.users_unique_nulls_distinct @@ -7339,7 +7357,7 @@

Assessment Issues

-
SELECT 5678901234, 0x1527D27F2, 0o52237223762, 0b101010010011111010010011111110010;
+
ALTER TABLE ONLY schema2.users_unique_nulls_distinct ALTER COLUMN email SET COMPRESSION pglz;
@@ -7363,7 +7381,7 @@

Assessment Issues

-
Non decimal integer literals are not supported in YugabyteDB
+
TOASTing is disabled internally in YugabyteDB and hence this clause is not relevant. Remove the clause from the DDL.
@@ -7377,8 +7395,8 @@

Assessment Issues

+ data-name="Referencing type declaration of variables" + data-impact="LEVEL_1"> @@ -7386,14 +7404,14 @@

Assessment Issues

   Unsupported Plpgsql Objects - Large Object Functions + Referencing type declaration of variables - public.manage_large_object + public.process_combined_tbl - Level 2 + Level 1 @@ -7406,6 +7424,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -7419,7 +7446,7 @@

Assessment Issues

Object Name - public.manage_large_object + public.process_combined_tbl @@ -7428,7 +7455,7 @@

Assessment Issues

-
SELECT lo_unlink(loid);
+
public.combined_tbl.maddr%TYPE
@@ -7438,7 +7465,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -7452,7 +7479,7 @@

Assessment Issues

-
Large Objects functions are not supported in YugabyteDB.
+
Referencing the type of a column instead of the actual type name is not supported in YugabyteDB.
@@ -7466,8 +7493,8 @@

Assessment Issues

+ data-name="Referencing type declaration of variables" + data-impact="LEVEL_1"> @@ -7475,14 +7502,14 @@

Assessment Issues

   Unsupported Plpgsql Objects - Events Listen / Notify + Referencing type declaration of variables - public.notify_and_insert + public.update_combined_tbl_data - Level 2 + Level 1 @@ -7495,12 +7522,21 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + Object Type - FUNCTION + PROCEDURE @@ -7508,7 +7544,7 @@

Assessment Issues

Object Name - public.notify_and_insert + public.update_combined_tbl_data @@ -7517,7 +7553,7 @@

Assessment Issues

-
LISTEN my_table_changes;
+
public.combined_tbl.maddr%TYPE
@@ -7527,8 +7563,7 @@

Assessment Issues

Docs Link - - N/A + Documentation @@ -7542,7 +7577,7 @@

Assessment Issues

-
LISTEN / NOTIFY is not supported yet in YugabyteDB.
+
Referencing the type of a column instead of the actual type name is not supported in YugabyteDB.
@@ -7556,7 +7591,7 @@

Assessment Issues

@@ -7565,10 +7600,10 @@

Assessment Issues

   Unsupported Plpgsql Objects - Events Listen / Notify + Advisory Locks - public.notify_and_insert + public.process_order @@ -7585,6 +7620,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -7598,7 +7642,7 @@

Assessment Issues

Object Name - public.notify_and_insert + public.process_order @@ -7607,7 +7651,7 @@

Assessment Issues

-
NOTIFY my_table_changes, 'New row added with name: Charlie';
+
SELECT pg_advisory_unlock(orderid);
@@ -7617,8 +7661,7 @@

Assessment Issues

Docs Link - - N/A + Documentation @@ -7632,7 +7675,7 @@

Assessment Issues

-
LISTEN / NOTIFY is not supported yet in YugabyteDB.
+
Advisory locks are not yet implemented in YugabyteDB.
@@ -7646,7 +7689,7 @@

Assessment Issues

@@ -7655,10 +7698,10 @@

Assessment Issues

   Unsupported Plpgsql Objects - Events Listen / Notify + Advisory Locks - public.notify_and_insert + schema2.process_order @@ -7675,6 +7718,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -7688,7 +7740,7 @@

Assessment Issues

Object Name - public.notify_and_insert + schema2.process_order @@ -7697,7 +7749,7 @@

Assessment Issues

-
SELECT pg_notify('my_table_changes', 'New row added with name: Charlie');
+
SELECT pg_advisory_unlock(orderid);
@@ -7707,8 +7759,7 @@

Assessment Issues

Docs Link - - N/A + Documentation @@ -7722,7 +7773,7 @@

Assessment Issues

-
LISTEN / NOTIFY is not supported yet in YugabyteDB.
+
Advisory locks are not yet implemented in YugabyteDB.
@@ -7736,7 +7787,7 @@

Assessment Issues

@@ -7745,10 +7796,10 @@

Assessment Issues

   Unsupported Plpgsql Objects - Events Listen / Notify + Non-decimal integer literal - public.notify_and_insert + public.insert_non_decimal @@ -7765,6 +7816,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -7778,7 +7838,7 @@

Assessment Issues

Object Name - public.notify_and_insert + public.insert_non_decimal @@ -7787,7 +7847,7 @@

Assessment Issues

-
UNLISTEN my_table_changes;
+
SELECT 5678901234, 0x1527D27F2, 0o52237223762, 0b101010010011111010010011111110010;
@@ -7797,8 +7857,7 @@

Assessment Issues

Docs Link - - N/A + Documentation @@ -7812,7 +7871,7 @@

Assessment Issues

-
LISTEN / NOTIFY is not supported yet in YugabyteDB.
+
Non decimal integer literals are not supported in YugabyteDB
@@ -7826,7 +7885,7 @@

Assessment Issues

@@ -7835,10 +7894,10 @@

Assessment Issues

   Unsupported Plpgsql Objects - Events Listen / Notify + Non-decimal integer literal - schema2.notify_and_insert + schema2.insert_non_decimal @@ -7855,6 +7914,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -7868,7 +7936,7 @@

Assessment Issues

Object Name - schema2.notify_and_insert + schema2.insert_non_decimal @@ -7877,7 +7945,7 @@

Assessment Issues

-
LISTEN my_table_changes;
+
SELECT 5678901234, 0x1527D27F2, 0o52237223762, 0b101010010011111010010011111110010;
@@ -7887,8 +7955,7 @@

Assessment Issues

Docs Link - - N/A + Documentation @@ -7902,7 +7969,7 @@

Assessment Issues

-
LISTEN / NOTIFY is not supported yet in YugabyteDB.
+
Non decimal integer literals are not supported in YugabyteDB
@@ -7916,7 +7983,7 @@

Assessment Issues

@@ -7925,10 +7992,10 @@

Assessment Issues

   Unsupported Plpgsql Objects - Events Listen / Notify + Large Object Functions - schema2.notify_and_insert + public.manage_large_object @@ -7945,6 +8012,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -7958,7 +8034,7 @@

Assessment Issues

Object Name - schema2.notify_and_insert + public.manage_large_object @@ -7967,7 +8043,7 @@

Assessment Issues

-
NOTIFY my_table_changes, 'New row added with name: Charlie';
+
SELECT lo_unlink(loid);
@@ -7977,8 +8053,7 @@

Assessment Issues

Docs Link - - N/A + Documentation @@ -7992,7 +8067,7 @@

Assessment Issues

-
LISTEN / NOTIFY is not supported yet in YugabyteDB.
+
Large Objects functions are not supported in YugabyteDB.
@@ -8018,7 +8093,7 @@

Assessment Issues

Events Listen / Notify - schema2.notify_and_insert + public.notify_and_insert @@ -8035,6 +8110,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -8048,7 +8132,7 @@

Assessment Issues

Object Name - schema2.notify_and_insert + public.notify_and_insert @@ -8057,7 +8141,7 @@

Assessment Issues

-
SELECT pg_notify('my_table_changes', 'New row added with name: Charlie');
+
LISTEN my_table_changes;
@@ -8067,8 +8151,7 @@

Assessment Issues

Docs Link - - N/A + Documentation @@ -8108,7 +8191,7 @@

Assessment Issues

Events Listen / Notify - schema2.notify_and_insert + public.notify_and_insert @@ -8125,6 +8208,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -8138,7 +8230,7 @@

Assessment Issues

Object Name - schema2.notify_and_insert + public.notify_and_insert @@ -8147,7 +8239,7 @@

Assessment Issues

-
UNLISTEN my_table_changes;
+
NOTIFY my_table_changes, 'New row added with name: Charlie';
@@ -8157,8 +8249,7 @@

Assessment Issues

Docs Link - - N/A + Documentation @@ -8186,8 +8277,8 @@

Assessment Issues

+ data-name="Events Listen / Notify" + data-impact="LEVEL_2"> @@ -8195,14 +8286,14 @@

Assessment Issues

   Unsupported Plpgsql Objects - Referencing type declaration of variables + Events Listen / Notify - public.process_combined_tbl + public.notify_and_insert - Level 1 + Level 2 @@ -8215,6 +8306,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -8228,7 +8328,7 @@

Assessment Issues

Object Name - public.process_combined_tbl + public.notify_and_insert @@ -8237,7 +8337,7 @@

Assessment Issues

-
public.combined_tbl.maddr%TYPE
+
SELECT pg_notify('my_table_changes', 'New row added with name: Charlie');
@@ -8247,7 +8347,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -8261,7 +8361,7 @@

Assessment Issues

-
Referencing the type of a column instead of the actual type name is not supported in YugabyteDB.
+
LISTEN / NOTIFY is not supported yet in YugabyteDB.
@@ -8275,8 +8375,8 @@

Assessment Issues

+ data-name="Events Listen / Notify" + data-impact="LEVEL_2"> @@ -8284,14 +8384,14 @@

Assessment Issues

   Unsupported Plpgsql Objects - Referencing type declaration of variables + Events Listen / Notify - public.update_combined_tbl_data + public.notify_and_insert - Level 1 + Level 2 @@ -8304,12 +8404,21 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + Object Type - PROCEDURE + FUNCTION @@ -8317,7 +8426,7 @@

Assessment Issues

Object Name - public.update_combined_tbl_data + public.notify_and_insert @@ -8326,7 +8435,7 @@

Assessment Issues

-
public.combined_tbl.maddr%TYPE
+
UNLISTEN my_table_changes;
@@ -8336,7 +8445,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -8350,7 +8459,7 @@

Assessment Issues

-
Referencing the type of a column instead of the actual type name is not supported in YugabyteDB.
+
LISTEN / NOTIFY is not supported yet in YugabyteDB.
@@ -8364,7 +8473,7 @@

Assessment Issues

@@ -8373,10 +8482,10 @@

Assessment Issues

   Unsupported Plpgsql Objects - Advisory Locks + Events Listen / Notify - public.process_order + schema2.notify_and_insert @@ -8393,6 +8502,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -8406,7 +8524,7 @@

Assessment Issues

Object Name - public.process_order + schema2.notify_and_insert @@ -8415,7 +8533,7 @@

Assessment Issues

-
SELECT pg_advisory_unlock(orderid);
+
LISTEN my_table_changes;
@@ -8425,7 +8543,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -8439,7 +8557,7 @@

Assessment Issues

-
Advisory locks are not yet implemented in YugabyteDB.
+
LISTEN / NOTIFY is not supported yet in YugabyteDB.
@@ -8453,7 +8571,7 @@

Assessment Issues

@@ -8462,10 +8580,10 @@

Assessment Issues

   Unsupported Plpgsql Objects - Advisory Locks + Events Listen / Notify - schema2.process_order + schema2.notify_and_insert @@ -8482,6 +8600,15 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + @@ -8495,7 +8622,7 @@

Assessment Issues

Object Name - schema2.process_order + schema2.notify_and_insert @@ -8504,7 +8631,7 @@

Assessment Issues

-
SELECT pg_advisory_unlock(orderid);
+
NOTIFY my_table_changes, 'New row added with name: Charlie';
@@ -8514,7 +8641,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -8528,7 +8655,7 @@

Assessment Issues

-
Advisory locks are not yet implemented in YugabyteDB.
+
LISTEN / NOTIFY is not supported yet in YugabyteDB.
@@ -8541,20 +8668,20 @@

Assessment Issues

   - Unsupported Query Constructs + Unsupported Plpgsql Objects - Large Object Functions + Events Listen / Notify - SELECT lo_create($1) + schema2.notify_and_insert @@ -8571,19 +8698,38 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + + + Object Type + FUNCTION + + + + Object Name + schema2.notify_and_insert + + SQL Statement
-
SELECT lo_create($1)
+
SELECT pg_notify('my_table_changes', 'New row added with name: Charlie');
@@ -8593,7 +8739,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -8607,7 +8753,7 @@

Assessment Issues

-
Large Objects functions are not supported in YugabyteDB.
+
LISTEN / NOTIFY is not supported yet in YugabyteDB.
@@ -8620,20 +8766,20 @@

Assessment Issues

   - Unsupported Query Constructs + Unsupported Plpgsql Objects - XML Functions + Events Listen / Notify - SELECT xmlforest(first_name AS element1, last_name AS element2) FROM employees2 + schema2.notify_and_insert @@ -8650,19 +8796,38 @@

Assessment Issues

+ + Category Description + +
+ Source schema objects having unsupported statements on the target YugabyteDB in PL/pgSQL code block +
+ + + + + Object Type + FUNCTION + + + + Object Name + schema2.notify_and_insert + + SQL Statement
-
SELECT xmlforest(first_name AS element1, last_name AS element2) FROM employees2
+
UNLISTEN my_table_changes;
@@ -8672,7 +8837,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -8686,7 +8851,7 @@

Assessment Issues

-
XML functions are not yet supported in YugabyteDB.
+
LISTEN / NOTIFY is not supported yet in YugabyteDB.
@@ -8712,7 +8877,7 @@

Assessment Issues

Advisory Locks - SELECT pg_advisory_unlock_all() + SELECT pg_advisory_xact_lock($1,$2) @@ -8729,6 +8894,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -8741,7 +8915,7 @@

Assessment Issues

-
SELECT pg_advisory_unlock_all()
+
SELECT pg_advisory_xact_lock($1,$2)
@@ -8779,7 +8953,7 @@

Assessment Issues

@@ -8788,15 +8962,10 @@

Assessment Issues

   Unsupported Query Constructs - XML Functions + Advisory Locks - SELECT - o.order_id, - items.product, - items.quantity::INT -FROM - order ... + SELECT pg_advisory_lock($1,$2) @@ -8813,6 +8982,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -8825,19 +9003,7 @@

Assessment Issues

-
SELECT
-    o.order_id,
-    items.product,
-    items.quantity::INT
-FROM
-    orders_lateral o
-    CROSS JOIN LATERAL XMLTABLE(
-        $1
-        PASSING o.order_details
-        COLUMNS
-            product TEXT PATH $2,
-            quantity TEXT PATH $3
-) AS items
+
SELECT pg_advisory_lock($1,$2)
@@ -8847,7 +9013,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -8861,7 +9027,7 @@

Assessment Issues

-
XML functions are not yet supported in YugabyteDB.
+
Advisory locks are not yet implemented in YugabyteDB.
@@ -8887,13 +9053,7 @@

Assessment Issues

XML Functions - SELECT - s.section_name, - b.title, - b.author -FROM - library_nested l, - ... + SELECT xmlparse(document $1) as xmldata @@ -8910,6 +9070,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -8922,26 +9091,7 @@

Assessment Issues

-
SELECT
-    s.section_name,
-    b.title,
-    b.author
-FROM
-    library_nested l,
-    XMLTABLE(
-        $1
-        PASSING l.lib_data
-        COLUMNS
-            section_name TEXT PATH $2,
-            books XML PATH $3
-    ) AS s,
-    XMLTABLE(
-        $4
-        PASSING s.books
-        COLUMNS
-            title TEXT PATH $5,
-            author TEXT PATH $6
-) AS b
+
SELECT xmlparse(document $1) as xmldata
@@ -8979,7 +9129,7 @@

Assessment Issues

@@ -8988,12 +9138,10 @@

Assessment Issues

   Unsupported Query Constructs - COPY FROM ... WHERE + XML Functions - COPY employeesCopyFromWhere (id, name, age) -FROM STDIN WITH (FORMAT csv) -WHERE a ... + SELECT table_to_xml($1, $2, $3, $4) @@ -9010,6 +9158,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -9022,9 +9179,7 @@

Assessment Issues

-
COPY employeesCopyFromWhere (id, name, age)
-FROM STDIN WITH (FORMAT csv)
-WHERE age > 30
+
SELECT table_to_xml($1, $2, $3, $4)
@@ -9034,7 +9189,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9042,20 +9197,13 @@

Assessment Issues

- - Supported In (versions) - - >=2.25.0.0 (2.25 series) - - - Description
-
COPY FROM ... WHERE is not yet supported in YugabyteDB.
+
XML functions are not yet supported in YugabyteDB.
@@ -9069,7 +9217,7 @@

Assessment Issues

@@ -9078,11 +9226,12 @@

Assessment Issues

   Unsupported Query Constructs - COPY ... ON_ERROR + COPY FROM ... WHERE - COPY employeesCopyOnError (id, name, age) -FROM STDIN WITH (FORMAT csv, ON_ERROR ... + COPY employeesCopyFromWhere (id, name, age) +FROM STDIN WITH (FORMAT csv) +WHERE a ... @@ -9099,6 +9248,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -9111,8 +9269,9 @@

Assessment Issues

-
COPY employeesCopyOnError (id, name, age)
-FROM STDIN WITH (FORMAT csv, ON_ERROR IGNORE )
+
COPY employeesCopyFromWhere (id, name, age)
+FROM STDIN WITH (FORMAT csv)
+WHERE age > 30
@@ -9130,13 +9289,20 @@

Assessment Issues

+ + Supported In (versions) + + >=2.25.0.0 (2.25 series) + + + Description
-
COPY ... ON_ERROR is not yet supported in YugabyteDB.
+
COPY FROM ... WHERE is not yet supported in YugabyteDB.
@@ -9162,12 +9328,7 @@

Assessment Issues

XML Functions - SELECT * -FROM xmltable( - $1 - PASSING $2 - COLUMNS - name TEXT PAT ... + SELECT xml_is_well_formed($1) @@ -9184,6 +9345,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -9196,13 +9366,7 @@

Assessment Issues

-
SELECT *
-FROM xmltable(
-    $1
-    PASSING $2
-    COLUMNS 
-        name TEXT PATH $3
-)
+
SELECT xml_is_well_formed($1)
@@ -9270,9 +9434,18 @@

Assessment Issues

- - - + + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + + + + @@ -9321,7 +9494,7 @@

Assessment Issues

@@ -9330,10 +9503,15 @@

Assessment Issues

   Unsupported Query Constructs - Advisory Locks + XML Functions - SELECT pg_advisory_lock($1,$2) + SELECT + o.order_id, + items.product, + items.quantity::INT +FROM + order ... @@ -9350,6 +9528,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -9362,7 +9549,19 @@

Assessment Issues

-
SELECT pg_advisory_lock($1,$2)
+
SELECT
+    o.order_id,
+    items.product,
+    items.quantity::INT
+FROM
+    orders_lateral o
+    CROSS JOIN LATERAL XMLTABLE(
+        $1
+        PASSING o.order_details
+        COLUMNS
+            product TEXT PATH $2,
+            quantity TEXT PATH $3
+) AS items
@@ -9372,7 +9571,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9386,7 +9585,7 @@

Assessment Issues

-
Advisory locks are not yet implemented in YugabyteDB.
+
XML functions are not yet supported in YugabyteDB.
@@ -9412,7 +9611,7 @@

Assessment Issues

XML Functions - SELECT xmlparse(document $1) as xmldata + SELECT xmlforest(first_name AS element1, last_name AS element2) FROM employees2 @@ -9429,6 +9628,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -9441,7 +9649,7 @@

Assessment Issues

-
SELECT xmlparse(document $1) as xmldata
+
SELECT xmlforest(first_name AS element1, last_name AS element2) FROM employees2
@@ -9479,7 +9687,7 @@

Assessment Issues

@@ -9488,10 +9696,10 @@

Assessment Issues

   Unsupported Query Constructs - XML Functions + Advisory Locks - SELECT xml_is_well_formed($1) + SELECT pg_advisory_unlock_all() @@ -9508,6 +9716,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -9520,7 +9737,7 @@

Assessment Issues

-
SELECT xml_is_well_formed($1)
+
SELECT pg_advisory_unlock_all()
@@ -9530,7 +9747,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9544,7 +9761,7 @@

Assessment Issues

-
XML functions are not yet supported in YugabyteDB.
+
Advisory locks are not yet implemented in YugabyteDB.
@@ -9558,7 +9775,7 @@

Assessment Issues

@@ -9567,10 +9784,11 @@

Assessment Issues

   Unsupported Query Constructs - Advisory Locks + COPY ... ON_ERROR - SELECT pg_advisory_xact_lock($1,$2) + COPY employeesCopyOnError (id, name, age) +FROM STDIN WITH (FORMAT csv, ON_ERROR ... @@ -9587,6 +9805,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -9599,7 +9826,8 @@

Assessment Issues

-
SELECT pg_advisory_xact_lock($1,$2)
+
COPY employeesCopyOnError (id, name, age)
+FROM STDIN WITH (FORMAT csv, ON_ERROR IGNORE )
@@ -9609,7 +9837,7 @@

Assessment Issues

Docs Link - Documentation + Documentation @@ -9623,7 +9851,7 @@

Assessment Issues

-
Advisory locks are not yet implemented in YugabyteDB.
+
COPY ... ON_ERROR is not yet supported in YugabyteDB.
@@ -9637,7 +9865,7 @@

Assessment Issues

@@ -9646,10 +9874,16 @@

Assessment Issues

   Unsupported Query Constructs - Advisory Locks + XML Functions - SELECT pg_advisory_unlock($1,$2) + SELECT + s.section_name, + b.title, + b.author +FROM + library_nested l, + ... @@ -9666,6 +9900,15 @@

Assessment Issues

+ + Category Description + +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+ + + @@ -9678,7 +9921,202 @@

Assessment Issues

-
SELECT pg_advisory_unlock($1,$2)
+
SELECT
+    s.section_name,
+    b.title,
+    b.author
+FROM
+    library_nested l,
+    XMLTABLE(
+        $1
+        PASSING l.lib_data
+        COLUMNS
+            section_name TEXT PATH $2,
+            books XML PATH $3
+    ) AS s,
+    XMLTABLE(
+        $4
+        PASSING s.books
+        COLUMNS
+            title TEXT PATH $5,
+            author TEXT PATH $6
+) AS b
+
+ + + + + + Docs Link + + + Documentation + + + + + + + + + + Description + + +
+
XML functions are not yet supported in YugabyteDB.
+
+ + + + + + + + + + + + + + + +    + Unsupported Query Constructs + + XML Functions + + + SELECT xmlelement(name root, xmlelement(name child, $1)) + + + + Level 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Category Description +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+
SQL Statement + +
+
SELECT xmlelement(name root, xmlelement(name child, $1))
+
+ +
Docs Link + + Documentation + +
Description + +
+
XML functions are not yet supported in YugabyteDB.
+
+ +
+ + + + + + + + + +    + Unsupported Query Constructs + + Large Object Functions + + + SELECT lo_create($1) + + + + Level 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -9688,7 +10126,7 @@

Assessment Issues

@@ -9702,7 +10140,7 @@

Assessment Issues

@@ -9719,16 +10157,21 @@

Assessment Issues

data-name="XML Functions" data-impact="LEVEL_2"> - + @@ -9736,7 +10179,7 @@

Assessment Issues

- +
Category Description +
+ Source database queries not supported in YugabyteDB, identified by scanning system tables. +
+
SQL Statement + +
+
SELECT lo_create($1)
Docs Link - Documentation + Documentation
-
Advisory locks are not yet implemented in YugabyteDB.
+
Large Objects functions are not supported in YugabyteDB.
- +    Unsupported Query Constructs XML Functions - SELECT table_to_xml($1, $2, $3, $4) + SELECT * +FROM xmltable( + $1 + PASSING $2 + COLUMNS + name TEXT PAT ...