#coding:utf-8 """ ID: gtcs.dsql-domain-21 FBTEST: functional.gtcs.dsql_domain_21 TITLE: Verify result of ALTER DOMAIN with changing DEFAULT values and DROP constraints when a table exists with field based on this domain DESCRIPTION: Original test see in: https://github.com/FirebirdSQL/fbtcs/blob/master/GTCS/tests/DSQL_DOMAIN_21.script Comment in GTCS: This script will test using the alter domain statement on domains that are already in use in table definitions, with domain defaults and check constraints. Related bugs: have to exit db for changes made to domains to affect data being entered into tables. We create domains with default values and constraints. Initially we use such default values that PASS requirements of check-constraints. Statement INSERT DEFAULT and query to the test table is used in order to ensure that we have ability to use such values. Then we change values in DEFAULT clause so that all of them will VILOLATE check expressions. Here take domains one-by-one and try to user INSERT DEFAULT after each such change of DEFAULT value. Every such attempt must fail. Then we drop CHECK constraints in all domains and again try INSERT DEFAULT. It must pass and new default values must be stored in the test table. Finally, we drop DEFAULT in all domains and try INSERT DEFAULT one more time. It must result to NULL value in all fields. ::: NB::: Changing default value for BLOB field to one that violates CHECK-expression of domain leads to strange message that does not relates to actual problem: SQLSTATE = 22018 / conversion error from string "BLOB". See CORE-6297 for details. ::: NOTE ::: Added domains with datatype that did appear only in FB 4.0: DECFLOAT and TIME[STAMP] WITH TIME ZONE. For this reason only FB 4.0+ can be tested. NOTES: [08.04.2021] changed expected output for date 01-jan-0001 after discuss with Adriano. """ import pytest from firebird.qa import * db = db_factory(charset='utf8') test_script = """ set bail on; set list on; set blob all; create or alter view v_test as select ff.rdb$field_name as dm_name ,ff.rdb$field_type as dm_type ,ff.rdb$field_sub_type as dm_subtype ,ff.rdb$field_length as dm_flen ,ff.rdb$field_scale as dm_fscale ,ff.rdb$field_precision as dm_fprec ,ff.rdb$character_set_id as dm_fcset ,ff.rdb$collation_id as dm_fcoll ,ff.rdb$character_length dm_fchrlen ,ff.rdb$null_flag as dm_fnull ,ff.rdb$validation_source as dm_fvalid ,ff.rdb$default_source as dm_fdefault from rdb$fields ff where ff.rdb$system_flag is distinct from 1 and ff.rdb$field_name starting with upper( 'dom21' ) order by dm_name ; commit; create domain dom21_01 as smallint default -32768 check (value not in ( select r.rdb$relation_id from rdb$relations r where r.rdb$system_flag = 1 ) ); create domain dom21_02 as int default 1500 check ( value in ( 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41, 42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, 113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140, 141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168, 169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196, 197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224, 225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252, 253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280, 281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308, 309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336, 337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364, 365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392, 393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420, 421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448, 449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476, 477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504, 505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532, 533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560, 561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588, 589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616, 617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644, 645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672, 673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700, 701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728, 729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756, 757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784, 785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812, 813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840, 841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868, 869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896, 897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924, 925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952, 953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980, 981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006, 1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028, 1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050, 1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072, 1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094, 1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116, 1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138, 1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160, 1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182, 1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204, 1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226, 1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248, 1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270, 1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292, 1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314, 1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336, 1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358, 1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380, 1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402, 1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424, 1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446, 1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468, 1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490, 1491,1492,1493,1494,1495,1496,1497,1498,1499,1500 ) ) ; create domain dom21_03 as bigint default -9223372036854775807 check ( value NOT in ( 1500,1499,1498,1497,1496,1495,1494,1493,1492,1491,1490,1489,1488,1487,1486,1485,1484,1483,1482,1481,1480,1479, 1478,1477,1476,1475,1474,1473,1472,1471,1470,1469,1468,1467,1466,1465,1464,1463,1462,1461,1460,1459,1458,1457, 1456,1455,1454,1453,1452,1451,1450,1449,1448,1447,1446,1445,1444,1443,1442,1441,1440,1439,1438,1437,1436,1435, 1434,1433,1432,1431,1430,1429,1428,1427,1426,1425,1424,1423,1422,1421,1420,1419,1418,1417,1416,1415,1414,1413, 1412,1411,1410,1409,1408,1407,1406,1405,1404,1403,1402,1401,1400,1399,1398,1397,1396,1395,1394,1393,1392,1391, 1390,1389,1388,1387,1386,1385,1384,1383,1382,1381,1380,1379,1378,1377,1376,1375,1374,1373,1372,1371,1370,1369, 1368,1367,1366,1365,1364,1363,1362,1361,1360,1359,1358,1357,1356,1355,1354,1353,1352,1351,1350,1349,1348,1347, 1346,1345,1344,1343,1342,1341,1340,1339,1338,1337,1336,1335,1334,1333,1332,1331,1330,1329,1328,1327,1326,1325, 1324,1323,1322,1321,1320,1319,1318,1317,1316,1315,1314,1313,1312,1311,1310,1309,1308,1307,1306,1305,1304,1303, 1302,1301,1300,1299,1298,1297,1296,1295,1294,1293,1292,1291,1290,1289,1288,1287,1286,1285,1284,1283,1282,1281, 1280,1279,1278,1277,1276,1275,1274,1273,1272,1271,1270,1269,1268,1267,1266,1265,1264,1263,1262,1261,1260,1259, 1258,1257,1256,1255,1254,1253,1252,1251,1250,1249,1248,1247,1246,1245,1244,1243,1242,1241,1240,1239,1238,1237, 1236,1235,1234,1233,1232,1231,1230,1229,1228,1227,1226,1225,1224,1223,1222,1221,1220,1219,1218,1217,1216,1215, 1214,1213,1212,1211,1210,1209,1208,1207,1206,1205,1204,1203,1202,1201,1200,1199,1198,1197,1196,1195,1194,1193, 1192,1191,1190,1189,1188,1187,1186,1185,1184,1183,1182,1181,1180,1179,1178,1177,1176,1175,1174,1173,1172,1171, 1170,1169,1168,1167,1166,1165,1164,1163,1162,1161,1160,1159,1158,1157,1156,1155,1154,1153,1152,1151,1150,1149, 1148,1147,1146,1145,1144,1143,1142,1141,1140,1139,1138,1137,1136,1135,1134,1133,1132,1131,1130,1129,1128,1127, 1126,1125,1124,1123,1122,1121,1120,1119,1118,1117,1116,1115,1114,1113,1112,1111,1110,1109,1108,1107,1106,1105, 1104,1103,1102,1101,1100,1099,1098,1097,1096,1095,1094,1093,1092,1091,1090,1089,1088,1087,1086,1085,1084,1083, 1082,1081,1080,1079,1078,1077,1076,1075,1074,1073,1072,1071,1070,1069,1068,1067,1066,1065,1064,1063,1062,1061, 1060,1059,1058,1057,1056,1055,1054,1053,1052,1051,1050,1049,1048,1047,1046,1045,1044,1043,1042,1041,1040,1039, 1038,1037,1036,1035,1034,1033,1032,1031,1030,1029,1028,1027,1026,1025,1024,1023,1022,1021,1020,1019,1018,1017, 1016,1015,1014,1013,1012,1011,1010,1009,1008,1007,1006,1005,1004,1003,1002,1001,1000,999,998,997,996,995,994, 993,992,991,990,989,988,987,986,985,984,983,982,981,980,979,978,977,976,975,974,973,972,971,970,969,968,967, 966,965,964,963,962,961,960,959,958,957,956,955,954,953,952,951,950,949,948,947,946,945,944,943,942,941,940, 939,938,937,936,935,934,933,932,931,930,929,928,927,926,925,924,923,922,921,920,919,918,917,916,915,914,913, 912,911,910,909,908,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,888,887,886, 885,884,883,882,881,880,879,878,877,876,875,874,873,872,871,870,869,868,867,866,865,864,863,862,861,860,859, 858,857,856,855,854,853,852,851,850,849,848,847,846,845,844,843,842,841,840,839,838,837,836,835,834,833,832, 831,830,829,828,827,826,825,824,823,822,821,820,819,818,817,816,815,814,813,812,811,810,809,808,807,806,805, 804,803,802,801,800,799,798,797,796,795,794,793,792,791,790,789,788,787,786,785,784,783,782,781,780,779,778, 777,776,775,774,773,772,771,770,769,768,767,766,765,764,763,762,761,760,759,758,757,756,755,754,753,752,751, 750,749,748,747,746,745,744,743,742,741,740,739,738,737,736,735,734,733,732,731,730,729,728,727,726,725,724, 723,722,721,720,719,718,717,716,715,714,713,712,711,710,709,708,707,706,705,704,703,702,701,700,699,698,697, 696,695,694,693,692,691,690,689,688,687,686,685,684,683,682,681,680,679,678,677,676,675,674,673,672,671,670, 669,668,667,666,665,664,663,662,661,660,659,658,657,656,655,654,653,652,651,650,649,648,647,646,645,644,643, 642,641,640,639,638,637,636,635,634,633,632,631,630,629,628,627,626,625,624,623,622,621,620,619,618,617,616, 615,614,613,612,611,610,609,608,607,606,605,604,603,602,601,600,599,598,597,596,595,594,593,592,591,590,589, 588,587,586,585,584,583,582,581,580,579,578,577,576,575,574,573,572,571,570,569,568,567,566,565,564,563,562, 561,560,559,558,557,556,555,554,553,552,551,550,549,548,547,546,545,544,543,542,541,540,539,538,537,536,535, 534,533,532,531,530,529,528,527,526,525,524,523,522,521,520,519,518,517,516,515,514,513,512,511,510,509,508, 507,506,505,504,503,502,501,500,499,498,497,496,495,494,493,492,491,490,489,488,487,486,485,484,483,482,481, 480,479,478,477,476,475,474,473,472,471,470,469,468,467,466,465,464,463,462,461,460,459,458,457,456,455,454, 453,452,451,450,449,448,447,446,445,444,443,442,441,440,439,438,437,436,435,434,433,432,431,430,429,428,427, 426,425,424,423,422,421,420,419,418,417,416,415,414,413,412,411,410,409,408,407,406,405,404,403,402,401,400, 399,398,397,396,395,394,393,392,391,390,389,388,387,386,385,384,383,382,381,380,379,378,377,376,375,374,373, 372,371,370,369,368,367,366,365,364,363,362,361,360,359,358,357,356,355,354,353,352,351,350,349,348,347,346, 345,344,343,342,341,340,339,338,337,336,335,334,333,332,331,330,329,328,327,326,325,324,323,322,321,320,319, 318,317,316,315,314,313,312,311,310,309,308,307,306,305,304,303,302,301,300,299,298,297,296,295,294,293,292, 291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,266,265, 264,263,262,261,260,259,258,257,256,255,254,253,252,251,250,249,248,247,246,245,244,243,242,241,240,239,238, 237,236,235,234,233,232,231,230,229,228,227,226,225,224,223,222,221,220,219,218,217,216,215,214,213,212,211, 210,209,208,207,206,205,204,203,202,201,200,199,198,197,196,195,194,193,192,191,190,189,188,187,186,185,184, 183,182,181,180,179,178,177,176,175,174,173,172,171,170,169,168,167,166,165,164,163,162,161,160,159,158,157, 156,155,154,153,152,151,150,149,148,147,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,130, 129,128,127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112,111,110,109,108,107,106,105,104,103, 102,101,100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,69,68, 67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 ) ) ; create domain dom21_04 as date default '01.01.1980' check ( value >='01.01.0001' and value <= '30.12.9999'); create domain dom21_05 as time default '23:59:59.999' check ( extract(hour from value) >=21 ); create domain dom21_06 as time with time zone default '11:11:11.111 Indian/Cocos' check ( extract(hour from value) <=12 ); create domain dom21_07 as timestamp default '01.01.0001 00:00:01.001' check ( extract(minute from value) = 0 ); create domain dom21_08 as timestamp with time zone default '21.12.2013 11:11:11.111 Indian/Cocos' check ( extract(minute from value) <=30 ); create domain dom21_09 as char(1) character set utf8 default '€' check( value in ('€', '¢') ); create domain dom21_10 as varchar(1) character set utf8 default '¢' check( value in ('€', '¢') ); -- https://en.wikipedia.org/wiki/ISO/IEC_8859-1, -- see table "Languages with incomplete coverage", -- column "Typical workaround" for Hungarian 'Ő': create domain dom21_11 as nchar(1) default 'Ö' check( value in ('Ö', 'Ø') ); create domain dom21_12 as binary(2) default 'Œ' check( value in ('Œ', 'Ÿ', '¿') ); -- this datatype is alias for char(N) character set octets create domain dom21_13 as varbinary(2) default 'Œ' check( value in ('Œ', 'Ÿ', '¿') ); create domain dom21_14 as numeric(2,2) default -327.68 check ( value < 0 ); create domain dom21_15 as decimal(20,2) default -999999999999999999 check( value < 0 ); -- Online evaluation of expressions: https://www.wolframalpha.com -- https://en.wikipedia.org/wiki/Single-precision_floating-point_format -- (largest number less than one): 1 - power(2,-24) create domain dom21_16 as float default 0.999999940395355224609375 check( abs(value) < 1 ); -- https://en.wikipedia.org/wiki/Double-precision_floating-point_format -- Max Double: power(2,1023) * ( 1+(1-power(2,-52) ) create domain dom21_17 as double precision default 1.7976931348623157e308 check( abs(value) > 1 ); create domain dom21_18 as blob default 'Ø' check( value in ('Ö', 'Ø') ); create domain dom21_19 as blob sub_type text default 'W' check (value > ''); create domain dom21_20 as blob sub_type binary default 'f' check (value similar to '([0-9]|[a-f]){1,}'); create domain dom21_21 as boolean default false check ( value is not true ); create domain dom21_22 as decfloat(16) default -9.999999999999999E+384 check( log10(abs(value)) >= 384 ); create domain dom21_23 as decfloat default -9.999999999999999999999999999999999E6144 check( log10(abs(value)) >= 6144 ); commit; --select * from v_test; recreate table test( f01 dom21_01 ,f02 dom21_02 ,f03 dom21_03 ,f04 dom21_04 ,f05 dom21_05 ,f06 dom21_06 ,f07 dom21_07 ,f08 dom21_08 ,f09 dom21_09 ,f10 dom21_10 ,f11 dom21_11 ,f12 dom21_12 ,f13 dom21_13 ,f14 dom21_14 ,f15 dom21_15 ,f16 dom21_16 ,f17 dom21_17 ,f18_blob_id dom21_18 ,f19_blob_id dom21_19 ,f20_blob_id dom21_20 ,f21 dom21_21 ,f22 dom21_22 ,f23 dom21_23 ); commit; set bail off; -- ### NB ### insert into test default values; -- this must PASS select 'point-1' as msg, t.* from test t; rollback; ---------------------------------- -- Now we change DEFAULT values of domains so that they become violate CHECK expressions: alter domain dom21_01 set default 1; insert into test default values; -- this must FAIL with SQLSTATE = 23000 / validation error for column "TEST"."F01", value "1" alter domain dom21_01 drop constraint; -- in order to have ability to test next domain and field alter domain dom21_02 set default -1; insert into test default values; -- validation error for column "TEST"."F02", value "-1" alter domain dom21_02 drop constraint; alter domain dom21_03 set default 1; insert into test default values; -- validation error for column "TEST"."F03", value "1" alter domain dom21_03 drop constraint; alter domain dom21_04 set default '31.12.9999'; insert into test default values; -- validation error for column "TEST"."F04", value "9999-12-31" alter domain dom21_04 drop constraint; alter domain dom21_05 set default '20:59:59.999'; insert into test default values; -- validation error for column "TEST"."F05", value "20:59:59.9990" alter domain dom21_05 drop constraint; alter domain dom21_06 set default '13:00:00 Indian/Cocos'; insert into test default values; -- validation error for column "TEST"."F06", value "13:00:00.0000 Indian/Cocos" alter domain dom21_06 drop constraint; alter domain dom21_07 set default '01.01.0001 01:01:01.001'; insert into test default values; -- validation error for column "TEST"."F07", value "01-JAN-1 1:01:01.0010" // changed 08.04.2021, was: '1-jan' alter domain dom21_07 drop constraint; alter domain dom21_08 set default '21.12.2013 10:31:00 Indian/Cocos'; insert into test default values; -- validation error for column "TEST"."F08", value "21-DEC-2013 10:31:00.0000 Indian/Cocos" alter domain dom21_08 drop constraint; alter domain dom21_09 set default 'Ő'; insert into test default values; -- validation error for column "TEST"."F09", value "Ő" alter domain dom21_09 drop constraint; alter domain dom21_10 set default ''; insert into test default values; -- validation error for column "TEST"."F10", value "" alter domain dom21_10 drop constraint; alter domain dom21_11 set default ''; insert into test default values; -- validation error for column "TEST"."F11", value " " // nchar(1) alter domain dom21_11 drop constraint; alter domain dom21_12 set default 'Ø'; insert into test default values; -- validation error for column "TEST"."F12", value "Ø" alter domain dom21_12 drop constraint; alter domain dom21_13 set default '¢'; insert into test default values; -- validation error for column "TEST"."F13", value "¢" alter domain dom21_13 drop constraint; alter domain dom21_14 set default 327.67; insert into test default values; -- validation error for column "TEST"."F14", value "327.67" alter domain dom21_14 drop constraint; alter domain dom21_15 set default 0; insert into test default values; -- validation error for column "TEST"."F15", value "0.00" alter domain dom21_15 drop constraint; alter domain dom21_16 set default 1; insert into test default values; -- validation error for column "TEST"."F16", value "1.0000000" alter domain dom21_16 drop constraint; alter domain dom21_17 set default 1.0000000000000001; insert into test default values; -- validation error for column "TEST"."F17", value "1.000000000000000" alter domain dom21_17 drop constraint; alter domain dom21_18 set default 'x'; insert into test default values; -- ### CORE-6297 ### STRANGE MESSAGE HERE: Statement failed, SQLSTATE = 22018 / conversion error from string "BLOB" alter domain dom21_18 drop constraint; alter domain dom21_19 set default ''; insert into test default values; -- ### CORE-6297 ### STRANGE MESSAGE HERE: Statement failed, SQLSTATE = 22018 / conversion error from string "BLOB" alter domain dom21_19 drop constraint; alter domain dom21_20 set default 'g'; insert into test default values; -- ### CORE-6297 ### STRANGE MESSAGE HERE: Statement failed, SQLSTATE = 22018 / conversion error from string "BLOB" alter domain dom21_20 drop constraint; alter domain dom21_21 set default true; insert into test default values; -- validation error for column "TEST"."F21", value "TRUE" alter domain dom21_21 drop constraint; alter domain dom21_22 set default -9.999999999999999E+382; insert into test default values; -- validation error for column "TEST"."F22", value "-9.999999999999999E+382" alter domain dom21_22 drop constraint; alter domain dom21_23 set default -9.999999999999999999999999999999999E6142; insert into test default values; -- validation error for column "TEST"."F23", value "-9.999999999999999999999999999999999E+6142" alter domain dom21_23 drop constraint; --------------------------------------- -- Now we have NO constraints in any domain. -- We can run again INSERT DEFAULT and verify that new values appear in the table insert into test default values; -- this must PASS select 'point-2' as msg, t.* from test t; -- all values must have now NEW defaults for domains rollback; alter domain dom21_01 drop default; alter domain dom21_02 drop default; alter domain dom21_03 drop default; alter domain dom21_04 drop default; alter domain dom21_05 drop default; alter domain dom21_06 drop default; alter domain dom21_07 drop default; alter domain dom21_08 drop default; alter domain dom21_09 drop default; alter domain dom21_10 drop default; alter domain dom21_11 drop default; alter domain dom21_12 drop default; alter domain dom21_13 drop default; alter domain dom21_14 drop default; alter domain dom21_15 drop default; alter domain dom21_16 drop default; alter domain dom21_17 drop default; alter domain dom21_18 drop default; alter domain dom21_19 drop default; alter domain dom21_20 drop default; alter domain dom21_21 drop default; alter domain dom21_22 drop default; alter domain dom21_23 drop default; insert into test default values; -- this must PASS select 'point-3' as msg, t.* from test t; -- all values now must be NULL rollback; """ act = isql_act('db', test_script, substitutions=[('[ \t]+', ' '), ('F18_BLOB_ID.*', ''), ('F19_BLOB_ID.*', ''), ('F20_BLOB_ID.*', '')]) expected_stdout = """ MSG point-1 F01 -32768 F02 1500 F03 -9223372036854775807 F04 1980-01-01 F05 23:59:59.9990 F06 11:11:11.1110 Indian/Cocos F07 0001-01-01 00:00:01.0010 F08 2013-12-21 11:11:11.1110 Indian/Cocos F09 € F10 ¢ F11 Ö F12 C592 F13 C592 F14 -327.68 F15 -999999999999999999.00 F16 0.99999994 F17 1.797693134862316e+308 F18_BLOB_ID 81:0 Ø F19_BLOB_ID 81:1 W F20_BLOB_ID 81:2 f F21 F22 -9.999999999999999E+384 F23 -9.999999999999999999999999999999999E+6144 MSG point-2 F01 1 F02 -1 F03 1 F04 9999-12-31 F05 20:59:59.9990 F06 13:00:00.0000 Indian/Cocos F07 0001-01-01 01:01:01.0010 F08 2013-12-21 10:31:00.0000 Indian/Cocos F09 Ő F10 F11 F12 C398 F13 C2A2 F14 327.67 F15 0.00 F16 1 F17 1.000000000000000 F18_BLOB_ID 81:45 x F19_BLOB_ID 81:46 F20_BLOB_ID 81:47 g F21 F22 -9.999999999999999E+382 F23 -9.999999999999999999999999999999999E+6142 MSG point-3 F01 F02 F03 F04 F05 F06 F07 F08 F09 F10 F11 F12 F13 F14 F15 F16 F17 F18_BLOB_ID F19_BLOB_ID F20_BLOB_ID F21 F22 F23 """ expected_stderr = """ Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F01", value "1" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F02", value "-1" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F03", value "1" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F04", value "9999-12-31" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F05", value "20:59:59.9990" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F06", value "13:00:00.0000 Indian/Cocos" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F07", value "01-JAN-0001 1:01:01.0010" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F08", value "21-DEC-2013 10:31:00.0000 Indian/Cocos" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F09", value "Ő" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F10", value "" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F11", value " " Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F12", value "Ø" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F13", value "¢" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F14", value "327.67" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F15", value "0.00" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F16", value "1.0000000" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F17", value "1.000000000000000" Statement failed, SQLSTATE = 22018 conversion error from string "BLOB" Statement failed, SQLSTATE = 22018 conversion error from string "BLOB" Statement failed, SQLSTATE = 22018 conversion error from string "BLOB" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F21", value "TRUE" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F22", value "-9.999999999999999E+382" Statement failed, SQLSTATE = 23000 validation error for column "TEST"."F23", value "-9.999999999999999999999999999999999E+6142" """ @pytest.mark.version('>=4.0') def test_1(act: Action): act.expected_stdout = expected_stdout act.expected_stderr = expected_stderr act.execute() assert (act.clean_stderr == act.clean_expected_stderr and act.clean_stdout == act.clean_expected_stdout)