2 @message |
assert
- iter=1 of REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE=5: SUCCESS
+ range_name='Basic Latin', iter=1 of REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE=5, table_random_unicode_name='))[E/xl0TZ%qLaH#6UUQ-s)U2z$im0&=xsqek%9!B/\\#cM&O0RpM2)_@f'
+ Error while parsing procedure "PUBLIC"."SP_CHK"'s BLR
+ -Invalid name: ))[E/xl0TZ%qLaH#6UUQ-s)U2z$im0&=xsqek%9!B/\#cM&O0RpM2)_@f
+ err.gds_codes=(335544876, 335545316)
+ err.sqlcode=-901
+ err.sqlstate='2F000'
LOG DETAILS:
2025-06-29 05:35:14.819
2025-06-29 05:35:14.832 act = <firebird.qa.plugin.Action object at [hex]>
2025-06-29 05:35:14.843 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-06-29 05:35:14.855
2025-06-29 05:35:14.864 @pytest.mark.version('>=5.0.2')
2025-06-29 05:35:14.872 def test_1(act: Action, capsys):
2025-06-29 05:35:14.878
2025-06-29 05:35:14.885 # https://jrgraphix.net/r/Unicode/
2025-06-29 05:35:14.891 UNICODE_RANGES_MAP = {
2025-06-29 05:35:14.897 (0x0020, 0x007F) : 'Basic Latin',
2025-06-29 05:35:14.902 (0x00A0, 0x00FF) : 'Latin-1 Supplement',
2025-06-29 05:35:14.908 (0x0100, 0x017F) : 'Latin Extended-A',
2025-06-29 05:35:14.915 (0x0180, 0x024F) : 'Latin Extended-B',
2025-06-29 05:35:14.925 (0x0400, 0x04FF) : 'Cyrillic',
2025-06-29 05:35:14.937 (0x0500, 0x052F) : 'Cyrillic Supplementary',
2025-06-29 05:35:14.945 (0x0300, 0x036F) : 'Combining Diacritical Marks',
2025-06-29 05:35:14.957 (0x0250, 0x02AF) : 'IPA Extensions',
2025-06-29 05:35:14.969 (0x0370, 0x03FF) : 'Greek and Coptic',
2025-06-29 05:35:14.977 (0x0530, 0x058F) : 'Armenian',
2025-06-29 05:35:14.984 (0x02B0, 0x02FF) : 'Spacing Modifier Letters',
2025-06-29 05:35:14.989 (0x0590, 0x05FF) : 'Hebrew',
2025-06-29 05:35:14.994 (0x0600, 0x06FF) : 'Arabic',
2025-06-29 05:35:15.000 (0x0700, 0x074F) : 'Syriac',
2025-06-29 05:35:15.008 (0x0780, 0x07BF) : 'Thaana',
2025-06-29 05:35:15.015 (0x0900, 0x097F) : 'Devanagari',
2025-06-29 05:35:15.022 (0x0980, 0x09FF) : 'Bengali',
2025-06-29 05:35:15.034 (0x0A00, 0x0A7F) : 'Gurmukhi',
2025-06-29 05:35:15.048 (0x0A80, 0x0AFF) : 'Gujarati',
2025-06-29 05:35:15.059 (0x0B00, 0x0B7F) : 'Oriya',
2025-06-29 05:35:15.069 (0x0B80, 0x0BFF) : 'Tamil',
2025-06-29 05:35:15.077 (0x0C00, 0x0C7F) : 'Telugu',
2025-06-29 05:35:15.084 (0x0C80, 0x0CFF) : 'Kannada',
2025-06-29 05:35:15.091 (0x0D00, 0x0D7F) : 'Malayalam',
2025-06-29 05:35:15.098 (0x0D80, 0x0DFF) : 'Sinhala',
2025-06-29 05:35:15.107 (0x0E00, 0x0E7F) : 'Thai',
2025-06-29 05:35:15.119 (0x0E80, 0x0EFF) : 'Lao',
2025-06-29 05:35:15.127 (0x0F00, 0x0FFF) : 'Tibetan',
2025-06-29 05:35:15.137 (0x1000, 0x109F) : 'Myanmar',
2025-06-29 05:35:15.150 (0x10A0, 0x10FF) : 'Georgian',
2025-06-29 05:35:15.163 (0x1100, 0x11FF) : 'Hangul Jamo',
2025-06-29 05:35:15.174 (0x1200, 0x137F) : 'Ethiopic',
2025-06-29 05:35:15.183 (0x13A0, 0x13FF) : 'Cherokee',
2025-06-29 05:35:15.198 (0x1400, 0x167F) : 'Unified Canadian Aboriginal Syllabics',
2025-06-29 05:35:15.210 (0x1680, 0x169F) : 'Ogham',
2025-06-29 05:35:15.221 (0x16A0, 0x16FF) : 'Runic',
2025-06-29 05:35:15.233 (0x1700, 0x171F) : 'Tagalog',
2025-06-29 05:35:15.244 (0x1720, 0x173F) : 'Hanunoo',
2025-06-29 05:35:15.253 (0x1740, 0x175F) : 'Buhid',
2025-06-29 05:35:15.261 (0x1760, 0x177F) : 'Tagbanwa',
2025-06-29 05:35:15.267 (0x1780, 0x17FF) : 'Khmer',
2025-06-29 05:35:15.276 (0x1800, 0x18AF) : 'Mongolian',
2025-06-29 05:35:15.288 (0x1900, 0x194F) : 'Limbu',
2025-06-29 05:35:15.295 (0x1950, 0x197F) : 'Tai Le',
2025-06-29 05:35:15.305 (0x19E0, 0x19FF) : 'Khmer Symbols',
2025-06-29 05:35:15.317 (0x1D00, 0x1D7F) : 'Phonetic Extensions',
2025-06-29 05:35:15.326 (0x1E00, 0x1EFF) : 'Latin Extended Additional',
2025-06-29 05:35:15.334 (0x1F00, 0x1FFF) : 'Greek Extended',
2025-06-29 05:35:15.340 (0x2000, 0x206F) : 'General Punctuation',
2025-06-29 05:35:15.347 (0x2070, 0x209F) : 'Superscripts and Subscripts',
2025-06-29 05:35:15.353 (0x20A0, 0x20CF) : 'Currency Symbols',
2025-06-29 05:35:15.358 (0x20D0, 0x20FF) : 'Combining Diacritical Marks for Symbols',
2025-06-29 05:35:15.363 (0x2100, 0x214F) : 'Letterlike Symbols',
2025-06-29 05:35:15.367 (0x2150, 0x218F) : 'Number Forms',
2025-06-29 05:35:15.372 (0x2190, 0x21FF) : 'Arrows',
2025-06-29 05:35:15.377 (0x2200, 0x22FF) : 'Mathematical Operators',
2025-06-29 05:35:15.382 (0x2300, 0x23FF) : 'Miscellaneous Technical',
2025-06-29 05:35:15.387 (0x2400, 0x243F) : 'Control Pictures',
2025-06-29 05:35:15.393 (0x2440, 0x245F) : 'Optical Character Recognition',
2025-06-29 05:35:15.398 (0x2460, 0x24FF) : 'Enclosed Alphanumerics',
2025-06-29 05:35:15.402 (0x2500, 0x257F) : 'Box Drawing',
2025-06-29 05:35:15.407 (0x2580, 0x259F) : 'Block Elements',
2025-06-29 05:35:15.412 (0x25A0, 0x25FF) : 'Geometric Shapes',
2025-06-29 05:35:15.417 (0x2600, 0x26FF) : 'Miscellaneous Symbols',
2025-06-29 05:35:15.421 (0x2700, 0x27BF) : 'Dingbats',
2025-06-29 05:35:15.427 (0x27C0, 0x27EF) : 'Miscellaneous Mathematical Symbols-A',
2025-06-29 05:35:15.434 (0x27F0, 0x27FF) : 'Supplemental Arrows-A',
2025-06-29 05:35:15.445 (0x2800, 0x28FF) : 'Braille Patterns',
2025-06-29 05:35:15.454 (0x2900, 0x297F) : 'Supplemental Arrows-B',
2025-06-29 05:35:15.462 (0x2980, 0x29FF) : 'Miscellaneous Mathematical Symbols-B',
2025-06-29 05:35:15.471 (0x2A00, 0x2AFF) : 'Supplemental Mathematical Operators',
2025-06-29 05:35:15.478 (0x2B00, 0x2BFF) : 'Miscellaneous Symbols and Arrows',
2025-06-29 05:35:15.485 (0x2E80, 0x2EFF) : 'CJK Radicals Supplement',
2025-06-29 05:35:15.491 (0x2F00, 0x2FDF) : 'Kangxi Radicals',
2025-06-29 05:35:15.496 (0x2FF0, 0x2FFF) : 'Ideographic Description Characters',
2025-06-29 05:35:15.501 (0x3000, 0x303F) : 'CJK Symbols and Punctuation',
2025-06-29 05:35:15.506 (0x3040, 0x309F) : 'Hiragana',
2025-06-29 05:35:15.514 (0x30A0, 0x30FF) : 'Katakana',
2025-06-29 05:35:15.522 (0x3100, 0x312F) : 'Bopomofo',
2025-06-29 05:35:15.529 (0x3130, 0x318F) : 'Hangul Compatibility Jamo',
2025-06-29 05:35:15.537 (0x3190, 0x319F) : 'Kanbun',
2025-06-29 05:35:15.544 (0x31A0, 0x31BF) : 'Bopomofo Extended',
2025-06-29 05:35:15.551 (0x31F0, 0x31FF) : 'Katakana Phonetic Extensions',
2025-06-29 05:35:15.559 (0x3200, 0x32FF) : 'Enclosed CJK Letters and Months',
2025-06-29 05:35:15.570 (0x3300, 0x33FF) : 'CJK Compatibility',
2025-06-29 05:35:15.578 (0x3400, 0x4DBF) : 'CJK Unified Ideographs Extension A',
2025-06-29 05:35:15.586 (0x4DC0, 0x4DFF) : 'Yijing Hexagram Symbols',
2025-06-29 05:35:15.595 (0x4E00, 0x9FFF) : 'CJK Unified Ideographs',
2025-06-29 05:35:15.606 (0xA000, 0xA48F) : 'Yi Syllables',
2025-06-29 05:35:15.616 (0xA490, 0xA4CF) : 'Yi Radicals',
2025-06-29 05:35:15.626 (0xAC00, 0xD7AF) : 'Hangul Syllables',
2025-06-29 05:35:15.637 (0xE000, 0xF8FF) : 'Private Use Area',
2025-06-29 05:35:15.647 (0xF900, 0xFAFF) : 'CJK Compatibility Ideographs',
2025-06-29 05:35:15.660 (0xFB00, 0xFB4F) : 'Alphabetic Presentation Forms',
2025-06-29 05:35:15.670 (0xFB50, 0xFDFF) : 'Arabic Presentation Forms-A',
2025-06-29 05:35:15.679 (0xFE00, 0xFE0F) : 'Variation Selectors',
2025-06-29 05:35:15.688 (0xFE20, 0xFE2F) : 'Combining Half Marks',
2025-06-29 05:35:15.695 (0xFE30, 0xFE4F) : 'CJK Compatibility Forms',
2025-06-29 05:35:15.702 (0xFE50, 0xFE6F) : 'Small Form Variants',
2025-06-29 05:35:15.709 (0xFE70, 0xFEFF) : 'Arabic Presentation Forms-B',
2025-06-29 05:35:15.717 (0xFF00, 0xFFEF) : 'Halfwidth and Fullwidth Forms',
2025-06-29 05:35:15.727 (0xFFF0, 0xFFFF) : 'Specials',
2025-06-29 05:35:15.738 (0x10000, 0x1007F) : 'Linear B Syllabary',
2025-06-29 05:35:15.747 (0x10080, 0x100FF) : 'Linear B Ideograms',
2025-06-29 05:35:15.755 (0x10100, 0x1013F) : 'Aegean Numbers',
2025-06-29 05:35:15.763 (0x10300, 0x1032F) : 'Old Italic',
2025-06-29 05:35:15.776 (0x10330, 0x1034F) : 'Gothic',
2025-06-29 05:35:15.785 (0x10380, 0x1039F) : 'Ugaritic',
2025-06-29 05:35:15.797 (0x10400, 0x1044F) : 'Deseret',
2025-06-29 05:35:15.809 (0x10450, 0x1047F) : 'Shavian',
2025-06-29 05:35:15.816 (0x10480, 0x104AF) : 'Osmanya',
2025-06-29 05:35:15.823 (0x10800, 0x1083F) : 'Cypriot Syllabary',
2025-06-29 05:35:15.831 (0x1D000, 0x1D0FF) : 'Byzantine Musical Symbols',
2025-06-29 05:35:15.842 (0x1D100, 0x1D1FF) : 'Musical Symbols',
2025-06-29 05:35:15.860 (0x1D300, 0x1D35F) : 'Tai Xuan Jing Symbols',
2025-06-29 05:35:15.878 (0x1D400, 0x1D7FF) : 'Mathematical Alphanumeric Symbols',
2025-06-29 05:35:15.891 (0x20000, 0x2A6DF) : 'CJK Unified Ideographs Extension B',
2025-06-29 05:35:15.899 (0x2F800, 0x2FA1F) : 'CJK Compatibility Ideographs Supplement',
2025-06-29 05:35:15.908 (0xE0000, 0xE007F) : 'Tags',
2025-06-29 05:35:15.916 }
2025-06-29 05:35:15.924
2025-06-29 05:35:15.932 for bound_points, range_name in UNICODE_RANGES_MAP.items():
2025-06-29 05:35:15.941
2025-06-29 05:35:15.949 for iter in range(1,REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE+1):
2025-06-29 05:35:15.955
2025-06-29 05:35:15.961
2025-06-29 05:35:15.965 table_random_unicode_name = get_random_unicode( random.randint(NAME_MIN_LEN, NAME_MAX_LEN), bound_points )
2025-06-29 05:35:15.976 table_random_unicode_name = ''.join(c for c in table_random_unicode_name if c not in CHARS_TO_SKIP)
2025-06-29 05:35:15.986
2025-06-29 05:35:15.994 test_sql = f"""
2025-06-29 05:35:16.000 recreate table "{table_random_unicode_name.replace('"','""')}"(id int)
2025-06-29 05:35:16.005 ^
2025-06-29 05:35:16.012 create or alter procedure sp_chk as
2025-06-29 05:35:16.021 declare id1 int;
2025-06-29 05:35:16.034 begin
2025-06-29 05:35:16.042 select /* {range_name=} {iter=} */ id from "{table_random_unicode_name.replace('"','""')}" where rdb$db_key = make_dbkey('{table_random_unicode_name}', 0) into id1;
2025-06-29 05:35:16.048 end
2025-06-29 05:35:16.054 ^
2025-06-29 05:35:16.059 """
2025-06-29 05:35:16.070 # select id from "{table_random_unicode_name.replace('"','""')}" where rdb$db_key = make_dbkey('{table_random_unicode_name.replace("'","''")}', 0) into id1;
2025-06-29 05:35:16.084
2025-06-29 05:35:16.097 expected_txt = f'{iter=} of {REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE=}: SUCCESS'
2025-06-29 05:35:16.107 with act.db.connect(charset = 'utf-8') as con:
2025-06-29 05:35:16.116 try:
2025-06-29 05:35:16.128 for line in test_sql.split('^'):
2025-06-29 05:35:16.137 if (expr := line.strip()):
2025-06-29 05:35:16.143 if expr != '^':
2025-06-29 05:35:16.151 con.execute_immediate(expr)
2025-06-29 05:35:16.165 else:
2025-06-29 05:35:16.174 con.commit()
2025-06-29 05:35:16.181 con.commit()
2025-06-29 05:35:16.186 print(expected_txt)
2025-06-29 05:35:16.194 except DatabaseError as err:
2025-06-29 05:35:16.202 print(f'{range_name=}, {iter=} of {REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE=}, {table_random_unicode_name=}')
2025-06-29 05:35:16.215 print(err)
2025-06-29 05:35:16.226 print(f'{err.gds_codes=}')
2025-06-29 05:35:16.233 print(f'{err.sqlcode=}')
2025-06-29 05:35:16.240 print(f'{err.sqlstate=}')
2025-06-29 05:35:16.246 '''
2025-06-29 05:35:16.252 backup = BytesIO()
2025-06-29 05:35:16.258 with act.connect_server() as srv:
2025-06-29 05:35:16.265 srv.database.local_backup(database=act.db.db_path, backup_stream=backup)
2025-06-29 05:35:16.272 backup.seek(0)
2025-06-29 05:35:16.280 srv.database.local_restore(backup_stream=backup, database=act.db.db_path, flags = SrvRestoreFlag.REPLACE)
2025-06-29 05:35:16.286 '''
2025-06-29 05:35:16.293 act.expected_stdout = expected_txt
2025-06-29 05:35:16.300 act.stdout = capsys.readouterr().out
2025-06-29 05:35:16.306 > assert act.clean_stdout == act.clean_expected_stdout
2025-06-29 05:35:16.312 E assert
2025-06-29 05:35:16.322 E - iter=1 of REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE=5: SUCCESS
2025-06-29 05:35:16.334 E + range_name='Basic Latin', iter=1 of REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE=5, table_random_unicode_name='))[E/xl0TZ%qLaH#6UUQ-s)U2z$im0&=xsqek%9!B/\\#cM&O0RpM2)_@f'
2025-06-29 05:35:16.347 E + Error while parsing procedure "PUBLIC"."SP_CHK"'s BLR
2025-06-29 05:35:16.357 E + -Invalid name: ))[E/xl0TZ%qLaH#6UUQ-s)U2z$im0&=xsqek%9!B/\#cM&O0RpM2)_@f
2025-06-29 05:35:16.368 E + err.gds_codes=(335544876, 335545316)
2025-06-29 05:35:16.376 E + err.sqlcode=-901
2025-06-29 05:35:16.383 E + err.sqlstate='2F000'
2025-06-29 05:35:16.388
2025-06-29 05:35:16.394 tests/bugs/gh_8203_test.py:238: AssertionError
2025-06-29 05:35:16.402 ---------------------------- Captured stdout setup -----------------------------
2025-06-29 05:35:16.411 Creating db: localhost:/var/tmp/qa_2024/test_11702/test.fdb [page_size=None, sql_dialect=None, charset='NONE', user=SYSDBA, password=masterkey]
|
3 #text |
act = <firebird.qa.plugin.Action pytest object at [hex]>
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>
@pytest.mark.version('>=5.0.2')
def test_1(act: Action, capsys):
# https://jrgraphix.net/r/Unicode/
UNICODE_RANGES_MAP = {
(0x0020, 0x007F) : 'Basic Latin',
(0x00A0, 0x00FF) : 'Latin-1 Supplement',
(0x0100, 0x017F) : 'Latin Extended-A',
(0x0180, 0x024F) : 'Latin Extended-B',
(0x0400, 0x04FF) : 'Cyrillic',
(0x0500, 0x052F) : 'Cyrillic Supplementary',
(0x0300, 0x036F) : 'Combining Diacritical Marks',
(0x0250, 0x02AF) : 'IPA Extensions',
(0x0370, 0x03FF) : 'Greek and Coptic',
(0x0530, 0x058F) : 'Armenian',
(0x02B0, 0x02FF) : 'Spacing Modifier Letters',
(0x0590, 0x05FF) : 'Hebrew',
(0x0600, 0x06FF) : 'Arabic',
(0x0700, 0x074F) : 'Syriac',
(0x0780, 0x07BF) : 'Thaana',
(0x0900, 0x097F) : 'Devanagari',
(0x0980, 0x09FF) : 'Bengali',
(0x0A00, 0x0A7F) : 'Gurmukhi',
(0x0A80, 0x0AFF) : 'Gujarati',
(0x0B00, 0x0B7F) : 'Oriya',
(0x0B80, 0x0BFF) : 'Tamil',
(0x0C00, 0x0C7F) : 'Telugu',
(0x0C80, 0x0CFF) : 'Kannada',
(0x0D00, 0x0D7F) : 'Malayalam',
(0x0D80, 0x0DFF) : 'Sinhala',
(0x0E00, 0x0E7F) : 'Thai',
(0x0E80, 0x0EFF) : 'Lao',
(0x0F00, 0x0FFF) : 'Tibetan',
(0x1000, 0x109F) : 'Myanmar',
(0x10A0, 0x10FF) : 'Georgian',
(0x1100, 0x11FF) : 'Hangul Jamo',
(0x1200, 0x137F) : 'Ethiopic',
(0x13A0, 0x13FF) : 'Cherokee',
(0x1400, 0x167F) : 'Unified Canadian Aboriginal Syllabics',
(0x1680, 0x169F) : 'Ogham',
(0x16A0, 0x16FF) : 'Runic',
(0x1700, 0x171F) : 'Tagalog',
(0x1720, 0x173F) : 'Hanunoo',
(0x1740, 0x175F) : 'Buhid',
(0x1760, 0x177F) : 'Tagbanwa',
(0x1780, 0x17FF) : 'Khmer',
(0x1800, 0x18AF) : 'Mongolian',
(0x1900, 0x194F) : 'Limbu',
(0x1950, 0x197F) : 'Tai Le',
(0x19E0, 0x19FF) : 'Khmer Symbols',
(0x1D00, 0x1D7F) : 'Phonetic Extensions',
(0x1E00, 0x1EFF) : 'Latin Extended Additional',
(0x1F00, 0x1FFF) : 'Greek Extended',
(0x2000, 0x206F) : 'General Punctuation',
(0x2070, 0x209F) : 'Superscripts and Subscripts',
(0x20A0, 0x20CF) : 'Currency Symbols',
(0x20D0, 0x20FF) : 'Combining Diacritical Marks for Symbols',
(0x2100, 0x214F) : 'Letterlike Symbols',
(0x2150, 0x218F) : 'Number Forms',
(0x2190, 0x21FF) : 'Arrows',
(0x2200, 0x22FF) : 'Mathematical Operators',
(0x2300, 0x23FF) : 'Miscellaneous Technical',
(0x2400, 0x243F) : 'Control Pictures',
(0x2440, 0x245F) : 'Optical Character Recognition',
(0x2460, 0x24FF) : 'Enclosed Alphanumerics',
(0x2500, 0x257F) : 'Box Drawing',
(0x2580, 0x259F) : 'Block Elements',
(0x25A0, 0x25FF) : 'Geometric Shapes',
(0x2600, 0x26FF) : 'Miscellaneous Symbols',
(0x2700, 0x27BF) : 'Dingbats',
(0x27C0, 0x27EF) : 'Miscellaneous Mathematical Symbols-A',
(0x27F0, 0x27FF) : 'Supplemental Arrows-A',
(0x2800, 0x28FF) : 'Braille Patterns',
(0x2900, 0x297F) : 'Supplemental Arrows-B',
(0x2980, 0x29FF) : 'Miscellaneous Mathematical Symbols-B',
(0x2A00, 0x2AFF) : 'Supplemental Mathematical Operators',
(0x2B00, 0x2BFF) : 'Miscellaneous Symbols and Arrows',
(0x2E80, 0x2EFF) : 'CJK Radicals Supplement',
(0x2F00, 0x2FDF) : 'Kangxi Radicals',
(0x2FF0, 0x2FFF) : 'Ideographic Description Characters',
(0x3000, 0x303F) : 'CJK Symbols and Punctuation',
(0x3040, 0x309F) : 'Hiragana',
(0x30A0, 0x30FF) : 'Katakana',
(0x3100, 0x312F) : 'Bopomofo',
(0x3130, 0x318F) : 'Hangul Compatibility Jamo',
(0x3190, 0x319F) : 'Kanbun',
(0x31A0, 0x31BF) : 'Bopomofo Extended',
(0x31F0, 0x31FF) : 'Katakana Phonetic Extensions',
(0x3200, 0x32FF) : 'Enclosed CJK Letters and Months',
(0x3300, 0x33FF) : 'CJK Compatibility',
(0x3400, 0x4DBF) : 'CJK Unified Ideographs Extension A',
(0x4DC0, 0x4DFF) : 'Yijing Hexagram Symbols',
(0x4E00, 0x9FFF) : 'CJK Unified Ideographs',
(0xA000, 0xA48F) : 'Yi Syllables',
(0xA490, 0xA4CF) : 'Yi Radicals',
(0xAC00, 0xD7AF) : 'Hangul Syllables',
(0xE000, 0xF8FF) : 'Private Use Area',
(0xF900, 0xFAFF) : 'CJK Compatibility Ideographs',
(0xFB00, 0xFB4F) : 'Alphabetic Presentation Forms',
(0xFB50, 0xFDFF) : 'Arabic Presentation Forms-A',
(0xFE00, 0xFE0F) : 'Variation Selectors',
(0xFE20, 0xFE2F) : 'Combining Half Marks',
(0xFE30, 0xFE4F) : 'CJK Compatibility Forms',
(0xFE50, 0xFE6F) : 'Small Form Variants',
(0xFE70, 0xFEFF) : 'Arabic Presentation Forms-B',
(0xFF00, 0xFFEF) : 'Halfwidth and Fullwidth Forms',
(0xFFF0, 0xFFFF) : 'Specials',
(0x10000, 0x1007F) : 'Linear B Syllabary',
(0x10080, 0x100FF) : 'Linear B Ideograms',
(0x10100, 0x1013F) : 'Aegean Numbers',
(0x10300, 0x1032F) : 'Old Italic',
(0x10330, 0x1034F) : 'Gothic',
(0x10380, 0x1039F) : 'Ugaritic',
(0x10400, 0x1044F) : 'Deseret',
(0x10450, 0x1047F) : 'Shavian',
(0x10480, 0x104AF) : 'Osmanya',
(0x10800, 0x1083F) : 'Cypriot Syllabary',
(0x1D000, 0x1D0FF) : 'Byzantine Musical Symbols',
(0x1D100, 0x1D1FF) : 'Musical Symbols',
(0x1D300, 0x1D35F) : 'Tai Xuan Jing Symbols',
(0x1D400, 0x1D7FF) : 'Mathematical Alphanumeric Symbols',
(0x20000, 0x2A6DF) : 'CJK Unified Ideographs Extension B',
(0x2F800, 0x2FA1F) : 'CJK Compatibility Ideographs Supplement',
(0xE0000, 0xE007F) : 'Tags',
}
for bound_points, range_name in UNICODE_RANGES_MAP.items():
for iter in range(1,REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE+1):
table_random_unicode_name = get_random_unicode( random.randint(NAME_MIN_LEN, NAME_MAX_LEN), bound_points )
table_random_unicode_name = ''.join(c for c in table_random_unicode_name if c not in CHARS_TO_SKIP)
test_sql = f"""
recreate table "{table_random_unicode_name.replace('"','""')}"(id int)
^
create or alter procedure sp_chk as
declare id1 int;
begin
select /* {range_name=} {iter=} */ id from "{table_random_unicode_name.replace('"','""')}" where rdb$db_key = make_dbkey('{table_random_unicode_name}', 0) into id1;
end
^
"""
# select id from "{table_random_unicode_name.replace('"','""')}" where rdb$db_key = make_dbkey('{table_random_unicode_name.replace("'","''")}', 0) into id1;
expected_txt = f'{iter=} of {REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE=}: SUCCESS'
with act.db.connect(charset = 'utf-8') as con:
try:
for line in test_sql.split('^'):
if (expr := line.strip()):
if expr != '^':
con.execute_immediate(expr)
else:
con.commit()
con.commit()
print(expected_txt)
except DatabaseError as err:
print(f'{range_name=}, {iter=} of {REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE=}, {table_random_unicode_name=}')
print(err)
print(f'{err.gds_codes=}')
print(f'{err.sqlcode=}')
print(f'{err.sqlstate=}')
'''
backup = BytesIO()
with act.connect_server() as srv:
srv.database.local_backup(database=act.db.db_path, backup_stream=backup)
backup.seek(0)
srv.database.local_restore(backup_stream=backup, database=act.db.db_path, flags = SrvRestoreFlag.REPLACE)
'''
act.expected_stdout = expected_txt
act.stdout = capsys.readouterr().out
> assert act.clean_stdout == act.clean_expected_stdout
E assert
E - iter=1 of REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE=5: SUCCESS
E + range_name='Basic Latin', iter=1 of REPEAT_CHECKS_FOR_SELECTED_UNICODE_RANGE=5, table_random_unicode_name='))[E/xl0TZ%qLaH#6UUQ-s)U2z$im0&=xsqek%9!B/\\#cM&O0RpM2)_@f'
E + Error while parsing procedure "PUBLIC"."SP_CHK"'s BLR
E + -Invalid name: ))[E/xl0TZ%qLaH#6UUQ-s)U2z$im0&=xsqek%9!B/\#cM&O0RpM2)_@f
E + err.gds_codes=(335544876, 335545316)
E + err.sqlcode=-901
E + err.sqlstate='2F000'
tests/bugs/gh_8203_test.py:238: AssertionError
|