Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package orafce for openSUSE:Factory checked in at 2024-05-24 19:51:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/orafce (Old) and /work/SRC/openSUSE:Factory/.orafce.new.24587 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "orafce" Fri May 24 19:51:43 2024 rev:18 rq:1176510 version:4.10.2+git0.8d10ace Changes: -------- --- /work/SRC/openSUSE:Factory/orafce/orafce.changes 2024-04-30 17:27:48.567152091 +0200 +++ /work/SRC/openSUSE:Factory/.orafce.new.24587/orafce.changes 2024-05-24 19:51:59.519377371 +0200 @@ -1,0 +2,12 @@ +Thu May 23 08:51:44 UTC 2024 - [email protected] + +- Update to version 4.10.2+git0.8d10ace: + * prepare for 4.10.2 + * When load of orafce was triggered by using some orafce's function by nonprivileged user, then the check orafce_umask_check_hook fails and breaks loading of Orafce. This fix disable check in initialization time when orafce_umask is set to default value (so the check can be disabled). + * prepare for 4.10.1 + * regress tests for issues #266 and #267 + * fix obsolete (and broken) implementation of dbms_assert.qualified_sql_name + * fix not correct test of identifier validity in dbms_assert.simple_sql_name + * Add an alternative output for test dbms_random (Illumos) + +------------------------------------------------------------------- Old: ---- orafce-4.10.0+git0.cfdcdf2.obscpio New: ---- orafce-4.10.2+git0.8d10ace.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ orafce.spec ++++++ --- /var/tmp/diff_new_pack.eEHfcH/_old 2024-05-24 19:52:00.631418050 +0200 +++ /var/tmp/diff_new_pack.eEHfcH/_new 2024-05-24 19:52:00.635418197 +0200 @@ -20,7 +20,7 @@ %define realname orafce Name: %{pgname}-orafce -Version: 4.10.0+git0.cfdcdf2 +Version: 4.10.2+git0.8d10ace Release: 0 Summary: Implementation of some Oracle functions into PostgreSQL Group: Productivity/Databases/Tools ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.eEHfcH/_old 2024-05-24 19:52:00.683419952 +0200 +++ /var/tmp/diff_new_pack.eEHfcH/_new 2024-05-24 19:52:00.687420099 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/orafce/orafce.git</param> - <param name="changesrevision">cfdcdf258f7dc3ca5586bdbe7e6f472b672cdbc5</param></service></servicedata> + <param name="changesrevision">8d10acec102616d9825d2f6e1b7c9f8b25dbc7cd</param></service></servicedata> (No newline at EOF) ++++++ orafce-4.10.0+git0.cfdcdf2.obscpio -> orafce-4.10.2+git0.8d10ace.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orafce-4.10.0+git0.cfdcdf2/META.json new/orafce-4.10.2+git0.8d10ace/META.json --- old/orafce-4.10.0+git0.cfdcdf2/META.json 2024-04-25 12:49:24.000000000 +0200 +++ new/orafce-4.10.2+git0.8d10ace/META.json 2024-05-20 19:36:36.000000000 +0200 @@ -2,7 +2,7 @@ "name": "orafce", "abstract": "Oracle's compatibility functions and packages", "description": "This module allows use a well known Oracle's functions and packages inside PostgreSQL", - "version": "4.10.0", + "version": "4.10.2", "maintainer": [ "Pavel Stehule <[email protected]>", "Takahiro Itagaki <[email protected]>" @@ -25,7 +25,7 @@ "orafce": { "file": "sql/orafce.sql", "docfile": "README.orafce", - "version": "4.10.0", + "version": "4.10.2", "abstract": "Oracle's compatibility functions and packages" } }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orafce-4.10.0+git0.cfdcdf2/assert.c new/orafce-4.10.2+git0.8d10ace/assert.c --- old/orafce-4.10.0+git0.cfdcdf2/assert.c 2024-04-25 12:49:24.000000000 +0200 +++ new/orafce-4.10.2+git0.8d10ace/assert.c 2024-05-20 19:36:36.000000000 +0200 @@ -50,6 +50,38 @@ static bool ParseIdentifierString(char *rawstring); /* + * Is character a valid identifier start? + * Must match scan.l's {ident_start} character class. + */ +static bool +orafce_is_ident_start(unsigned char c) +{ + /* Underscores and ASCII letters are OK */ + if (c == '_') + return true; + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) + return true; + /* Any high-bit-set character is OK (might be part of a multibyte char) */ + if (IS_HIGHBIT_SET(c)) + return true; + return false; +} + +/* + * Is character a valid identifier continuation? + * Must match scan.l's {ident_cont} character class. + */ +static bool +orafce_is_ident_cont(unsigned char c) +{ + /* Can be digit or dollar sign ... */ + if ((c >= '0' && c <= '9') || c == '$') + return true; + /* ... or an identifier start character */ + return orafce_is_ident_start(c); +} + +/* * Procedure ParseIdentifierString is based on SplitIdentifierString * from varlena.c. We need different behave of quote symbol evaluation. */ @@ -93,20 +125,16 @@ } else { - char *curname; - /* Unquoted name --- extends to separator or whitespace */ - curname = nextp; - while (*nextp && *nextp != '.' && - !isspace((unsigned char) *nextp)) + if (orafce_is_ident_start(*nextp)) { - if (!isalnum(*nextp) && *nextp != '_') - return false; nextp++; - } - if (curname == nextp) - return false; /* empty unquoted name not allowed */ + while (*nextp && orafce_is_ident_cont(*nextp)) + nextp++; + } + else + return false; } while (isspace((unsigned char) *nextp)) @@ -361,10 +389,20 @@ } else { - /* Doesn't allow national characters in sql name :( */ - for (; len-- > 0; cp++) - if (!isalnum(*cp) && *cp != '_') - return false; + if (orafce_is_ident_start(*cp)) + { + char *last = cp + len - 1; + + cp += 1; + + while (cp < last) + { + if (!orafce_is_ident_cont(*cp++)) + return false; + } + } + else + return false; } return true; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orafce-4.10.0+git0.cfdcdf2/expected/dbms_random_4.out new/orafce-4.10.2+git0.8d10ace/expected/dbms_random_4.out --- old/orafce-4.10.0+git0.cfdcdf2/expected/dbms_random_4.out 1970-01-01 01:00:00.000000000 +0100 +++ new/orafce-4.10.2+git0.8d10ace/expected/dbms_random_4.out 2024-05-20 19:36:36.000000000 +0200 @@ -0,0 +1,129 @@ +-- Tests for package DBMS_RANDOM +SELECT dbms_random.initialize(8); + initialize +------------ + +(1 row) + +SELECT dbms_random.normal()::numeric(10, 8); + normal +------------- + -1.22160768 +(1 row) + +SELECT dbms_random.normal()::numeric(10, 8); + normal +------------ + 0.91471634 +(1 row) + +SELECT dbms_random.seed(8); + seed +------ + +(1 row) + +SELECT dbms_random.random(); + random +-------- + -25498 +(1 row) + +SELECT dbms_random.seed('test'); + seed +------ + +(1 row) + +SELECT dbms_random.string('U',5); + string +-------- + VPQID +(1 row) + +SELECT dbms_random.string('P',2); + string +-------- + *c +(1 row) + +SELECT dbms_random.string('x',4); + string +-------- + QY4P +(1 row) + +SELECT dbms_random.string('a',2); + string +-------- + gK +(1 row) + +SELECT dbms_random.string('l',3); + string +-------- + dyl +(1 row) + +SELECT dbms_random.seed(5); + seed +------ + +(1 row) + +SELECT dbms_random.value()::numeric(10, 8); + value +------------ + 0.56930542 +(1 row) + +SELECT dbms_random.value(10,15)::numeric(10, 8); + value +------------- + 11.29043579 +(1 row) + +SELECT dbms_random.terminate(); + terminate +----------- + +(1 row) + +SELECT dbms_random.string('u', 10); + string +------------ + IZIUOSZPXQ +(1 row) + +SELECT dbms_random.string('l', 10); + string +------------ + sqinwaztpt +(1 row) + +SELECT dbms_random.string('a', 10); + string +------------ + qKQoQidmEl +(1 row) + +SELECT dbms_random.string('x', 10); + string +------------ + 6ZTOV69J73 +(1 row) + +SELECT dbms_random.string('p', 10); + string +------------ + `f# tQP~r* +(1 row) + +SELECT dbms_random.string('uu', 10); -- error +ERROR: this first parameter value is more than 1 characters long +SELECT dbms_random.string('w', 10); + string +------------ + GIDLUOCSZH +(1 row) + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orafce-4.10.0+git0.cfdcdf2/expected/files.out new/orafce-4.10.2+git0.8d10ace/expected/files.out --- old/orafce-4.10.0+git0.cfdcdf2/expected/files.out 2024-04-25 12:49:24.000000000 +0200 +++ new/orafce-4.10.2+git0.8d10ace/expected/files.out 2024-05-20 19:36:36.000000000 +0200 @@ -211,7 +211,6 @@ (1 row) SET ROLE TO DEFAULT; -DROP ROLE test_role_files; DROP FUNCTION checkFlushFile(text); DELETE FROM utl_file.utl_file_dir; -- try to use named directory @@ -254,3 +253,15 @@ DROP FUNCTION gen_file(text); DROP FUNCTION read_file(text); DELETE FROM utl_file.utl_file_dir; +-- reconnect +\c +SET ROLE TO test_role_files; +-- use any function from orafce, should not to fail +SELECT oracle.add_months('2024-05-20', 1); + add_months +-------------------------- + Thu Jun 20 00:00:00 2024 +(1 row) + +SET ROLE TO DEFAULT; +DROP ROLE test_role_files; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orafce-4.10.0+git0.cfdcdf2/expected/files_1.out new/orafce-4.10.2+git0.8d10ace/expected/files_1.out --- old/orafce-4.10.0+git0.cfdcdf2/expected/files_1.out 2024-04-25 12:49:24.000000000 +0200 +++ new/orafce-4.10.2+git0.8d10ace/expected/files_1.out 1970-01-01 01:00:00.000000000 +0100 @@ -1,256 +0,0 @@ -SET client_min_messages = NOTICE; -\set VERBOSITY terse -\set ECHO all -CREATE OR REPLACE FUNCTION gen_file(dir text) RETURNS void AS $$ -DECLARE - f utl_file.file_type; -BEGIN - f := utl_file.fopen(dir, 'regress_orafce.txt', 'w'); - PERFORM utl_file.put_line(f, 'ABC'); - PERFORM utl_file.put_line(f, '123'::numeric); - PERFORM utl_file.put_line(f, '-----'); - PERFORM utl_file.new_line(f); - PERFORM utl_file.put_line(f, '-----'); - PERFORM utl_file.new_line(f, 0); - PERFORM utl_file.put_line(f, '-----'); - PERFORM utl_file.new_line(f, 2); - PERFORM utl_file.put_line(f, '-----'); - PERFORM utl_file.put(f, 'A'); - PERFORM utl_file.put(f, 'B'); - PERFORM utl_file.new_line(f); - PERFORM utl_file.putf(f, '[1=%s, 2=%s, 3=%s, 4=%s, 5=%s]', '1', '2', '3', '4', '5'); - PERFORM utl_file.new_line(f); - PERFORM utl_file.put_line(f, '1234567890'); - f := utl_file.fclose(f); -END; -$$ LANGUAGE plpgsql; -/* Test functions utl_file.fflush(utl_file.file_type) and - * utl_file.get_nextline(utl_file.file_type) - * This function tests the positive test case of fflush by reading from the - * file after flushing the contents to the file. - */ -CREATE OR REPLACE FUNCTION checkFlushFile(dir text) RETURNS void AS $$ -DECLARE - f utl_file.file_type; - f1 utl_file.file_type; - ret_val text; - i integer; -BEGIN - f := utl_file.fopen(dir, 'regressflush_orafce.txt', 'a'); - PERFORM utl_file.put_line(f, 'ABC'); - PERFORM utl_file.new_line(f); - PERFORM utl_file.put_line(f, '123'::numeric); - PERFORM utl_file.new_line(f); - PERFORM utl_file.putf(f, '[1=%s, 2=%s, 3=%s, 4=%s, 5=%s]', '1', '2', '3', '4', '5'); - PERFORM utl_file.fflush(f); - f1 := utl_file.fopen(dir, 'regressflush_orafce.txt', 'r'); - ret_val=utl_file.get_nextline(f1); - i:=1; - WHILE ret_val IS NOT NULL LOOP - RAISE NOTICE '[%] >>%<<', i,ret_val; - ret_val := utl_file.get_nextline(f1); - i:=i+1; - END LOOP; - RAISE NOTICE '>>%<<', ret_val; - f1 := utl_file.fclose(f1); - f := utl_file.fclose(f); -END; -$$ LANGUAGE plpgsql; -CREATE OR REPLACE FUNCTION read_file(dir text) RETURNS void AS $$ -DECLARE - f utl_file.file_type; -BEGIN - f := utl_file.fopen(dir, 'regress_orafce.txt', 'r'); - FOR i IN 1..11 LOOP - RAISE NOTICE '[%] >>%<<', i, utl_file.get_line(f); - END LOOP; - RAISE NOTICE '>>%<<', utl_file.get_line(f, 4); - RAISE NOTICE '>>%<<', utl_file.get_line(f, 4); - RAISE NOTICE '>>%<<', utl_file.get_line(f); - RAISE NOTICE '>>%<<', utl_file.get_line(f); - EXCEPTION - -- WHEN no_data_found THEN, 8.1 plpgsql doesn't know no_data_found - WHEN others THEN - RAISE NOTICE 'finish % ', sqlerrm; - RAISE NOTICE 'is_open = %', utl_file.is_open(f); - PERFORM utl_file.fclose_all(); - RAISE NOTICE 'is_open = %', utl_file.is_open(f); - END; -$$ LANGUAGE plpgsql; -SELECT EXISTS(SELECT * FROM pg_catalog.pg_class where relname='utl_file_dir') AS exists; - exists --------- - t -(1 row) - -SELECT EXISTS(SELECT * FROM pg_catalog.pg_type where typname='file_type') AS exists; - exists --------- - t -(1 row) - --- Trying to access a file in path not registered -SELECT utl_file.fopen(utl_file.tmpdir(),'sample.txt','r'); -ERROR: UTL_FILE_INVALID_PATH --- Trying to access file in a non-existent directory -INSERT INTO utl_file.utl_file_dir(dir) VALUES('test_tmp_dir'); -SELECT utl_file.fopen('test_tmp_dir','file.txt.','w'); -ERROR: UTL_FILE_INVALID_PATH -DELETE FROM utl_file.utl_file_dir WHERE dir LIKE 'test_tmp_dir'; --- Add tmpdir() to utl_file_dir table -INSERT INTO utl_file.utl_file_dir(dir) VALUES(utl_file.tmpdir()); -SELECT count(*) from utl_file.utl_file_dir where dir <> ''; - count -------- - 1 -(1 row) - --- Trying to access non-existent file -SELECT utl_file.fopen(utl_file.tmpdir(),'non_existent_file.txt','r'); -ERROR: UTL_FILE_INVALID_PATH ---Other test cases ---run this under unprivileged user -CREATE ROLE test_role_files LOGIN; -SET ROLE TO test_role_files; --- should to fail, unpriviliged user cannot to change utl_file_dir -INSERT INTO utl_file.utl_file_dir(dir) VALUES('test_tmp_dir'); -ERROR: permission denied for relation utl_file_dir -SELECT gen_file(utl_file.tmpdir()); - gen_file ----------- - -(1 row) - -SELECT fexists FROM utl_file.fgetattr(utl_file.tmpdir(), 'regress_orafce.txt'); - fexists ---------- - t -(1 row) - -SELECT utl_file.fcopy(utl_file.tmpdir(), 'regress_orafce.txt', utl_file.tmpdir(), 'regress_orafce2.txt'); - fcopy -------- - -(1 row) - -SELECT fexists FROM utl_file.fgetattr(utl_file.tmpdir(), 'regress_orafce2.txt'); - fexists ---------- - t -(1 row) - -SELECT utl_file.frename(utl_file.tmpdir(), 'regress_orafce2.txt', utl_file.tmpdir(), 'regress_orafce.txt', true); - frename ---------- - -(1 row) - -SELECT fexists FROM utl_file.fgetattr(utl_file.tmpdir(), 'regress_orafce.txt'); - fexists ---------- - t -(1 row) - -SELECT fexists FROM utl_file.fgetattr(utl_file.tmpdir(), 'regress_orafce2.txt'); - fexists ---------- - f -(1 row) - -SELECT read_file(utl_file.tmpdir()); -NOTICE: [1] >>ABC<< -NOTICE: [2] >>123<< -NOTICE: [3] >>-----<< -NOTICE: [4] >><< -NOTICE: [5] >>-----<< -NOTICE: [6] >>-----<< -NOTICE: [7] >><< -NOTICE: [8] >><< -NOTICE: [9] >>-----<< -NOTICE: [10] >>AB<< -NOTICE: [11] >>[1=1, 2=2, 3=3, 4=4, 5=5]<< -NOTICE: >>1234<< -NOTICE: >>5678<< -NOTICE: >>90<< -NOTICE: finish no data found -NOTICE: is_open = t -NOTICE: is_open = f - read_file ------------ - -(1 row) - -SELECT utl_file.fremove(utl_file.tmpdir(), 'regress_orafce.txt'); - fremove ---------- - -(1 row) - -SELECT fexists FROM utl_file.fgetattr(utl_file.tmpdir(), 'regress_orafce.txt'); - fexists ---------- - f -(1 row) - -SELECT checkFlushFile(utl_file.tmpdir()); -NOTICE: [1] >>ABC<< -NOTICE: [2] >><< -NOTICE: [3] >>123<< -NOTICE: [4] >><< -NOTICE: [5] >>[1=1, 2=2, 3=3, 4=4, 5=5]<< -NOTICE: >><NULL><< - checkflushfile ----------------- - -(1 row) - -SELECT utl_file.fremove(utl_file.tmpdir(), 'regressflush_orafce.txt'); - fremove ---------- - -(1 row) - -SET ROLE TO DEFAULT; -DROP ROLE test_role_files; -DROP FUNCTION checkFlushFile(text); -DELETE FROM utl_file.utl_file_dir; --- try to use named directory -INSERT INTO utl_file.utl_file_dir(dir, dirname) VALUES(utl_file.tmpdir(), 'TMPDIR'); -SELECT gen_file('TMPDIR'); - gen_file ----------- - -(1 row) - -SELECT read_file('TMPDIR'); -NOTICE: [1] >>ABC<< -NOTICE: [2] >>123<< -NOTICE: [3] >>-----<< -NOTICE: [4] >><< -NOTICE: [5] >>-----<< -NOTICE: [6] >>-----<< -NOTICE: [7] >><< -NOTICE: [8] >><< -NOTICE: [9] >>-----<< -NOTICE: [10] >>AB<< -NOTICE: [11] >>[1=1, 2=2, 3=3, 4=4, 5=5]<< -NOTICE: >>1234<< -NOTICE: >>5678<< -NOTICE: >>90<< -NOTICE: finish no data found -NOTICE: is_open = t -NOTICE: is_open = f - read_file ------------ - -(1 row) - -SELECT utl_file.fremove('TMPDIR', 'regress_orafce.txt'); - fremove ---------- - -(1 row) - -DROP FUNCTION gen_file(text); -DROP FUNCTION read_file(text); -DELETE FROM utl_file.utl_file_dir; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orafce-4.10.0+git0.cfdcdf2/expected/orafce.out new/orafce-4.10.2+git0.8d10ace/expected/orafce.out --- old/orafce-4.10.0+git0.cfdcdf2/expected/orafce.out 2024-04-25 12:49:24.000000000 +0200 +++ new/orafce-4.10.2+git0.8d10ace/expected/orafce.out 2024-05-20 19:36:36.000000000 +0200 @@ -2740,6 +2740,10 @@ select dbms_assert.object_name('dbms_assert.fooo'); ERROR: invalid object name +select dbms_assert.qualified_sql_name('1broken'); +ERROR: string is not qualified SQL name +select dbms_assert.simple_sql_name('1broken'); +ERROR: string is not simple SQL name select dbms_assert.enquote_literal(NULL); enquote_literal ----------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orafce-4.10.0+git0.cfdcdf2/file.c new/orafce-4.10.2+git0.8d10ace/file.c --- old/orafce-4.10.0+git0.cfdcdf2/file.c 2024-04-25 12:49:24.000000000 +0200 +++ new/orafce-4.10.2+git0.8d10ace/file.c 2024-05-20 19:36:36.000000000 +0200 @@ -131,6 +131,8 @@ static Oid orafce_set_umask_roleid = InvalidOid; +extern bool orafce_initialized; + void orafce_umask_assign_hook(const char *newvalue, void *extra) { @@ -144,7 +146,7 @@ char *ptr = *newval; int *myextra; - if (IsNormalProcessingMode()) + if (orafce_initialized && IsNormalProcessingMode()) { if (!superuser()) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orafce-4.10.0+git0.cfdcdf2/orafce.c new/orafce-4.10.2+git0.8d10ace/orafce.c --- old/orafce-4.10.0+git0.cfdcdf2/orafce.c 2024-04-25 12:49:24.000000000 +0200 +++ new/orafce-4.10.2+git0.8d10ace/orafce.c 2024-05-20 19:36:36.000000000 +0200 @@ -29,6 +29,8 @@ extern char *orafce_sys_guid_source; +bool orafce_initialized = false; + static const struct config_enum_entry orafce_compatibility_options[] = { {"warning_oracle", ORAFCE_COMPATIBILITY_WARNING_ORACLE, false}, {"warning_orafce", ORAFCE_COMPATIBILITY_WARNING_ORAFCE, false}, @@ -175,4 +177,6 @@ EmitWarningsOnPlaceholders("orafce"); RegisterXactCallback(orafce_xact_cb, NULL); + + orafce_initialized = true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orafce-4.10.0+git0.cfdcdf2/sql/files.sql new/orafce-4.10.2+git0.8d10ace/sql/files.sql --- old/orafce-4.10.0+git0.cfdcdf2/sql/files.sql 2024-04-25 12:49:24.000000000 +0200 +++ new/orafce-4.10.2+git0.8d10ace/sql/files.sql 2024-05-20 19:36:36.000000000 +0200 @@ -121,7 +121,6 @@ SELECT utl_file.fremove(utl_file.tmpdir(), 'regressflush_orafce.txt'); SET ROLE TO DEFAULT; -DROP ROLE test_role_files; DROP FUNCTION checkFlushFile(text); DELETE FROM utl_file.utl_file_dir; @@ -136,3 +135,14 @@ DROP FUNCTION read_file(text); DELETE FROM utl_file.utl_file_dir; + +-- reconnect +\c + +SET ROLE TO test_role_files; + +-- use any function from orafce, should not to fail +SELECT oracle.add_months('2024-05-20', 1); + +SET ROLE TO DEFAULT; +DROP ROLE test_role_files; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orafce-4.10.0+git0.cfdcdf2/sql/orafce.sql new/orafce-4.10.2+git0.8d10ace/sql/orafce.sql --- old/orafce-4.10.0+git0.cfdcdf2/sql/orafce.sql 2024-04-25 12:49:24.000000000 +0200 +++ new/orafce-4.10.2+git0.8d10ace/sql/orafce.sql 2024-05-20 19:36:36.000000000 +0200 @@ -564,6 +564,8 @@ select dbms_assert.simple_sql_name('ajajaj -- ajaj'); select dbms_assert.object_name('pg_catalog.pg_class'); select dbms_assert.object_name('dbms_assert.fooo'); +select dbms_assert.qualified_sql_name('1broken'); +select dbms_assert.simple_sql_name('1broken'); select dbms_assert.enquote_literal(NULL); select dbms_assert.enquote_name(NULL); ++++++ orafce.obsinfo ++++++ --- /var/tmp/diff_new_pack.eEHfcH/_old 2024-05-24 19:52:00.923428732 +0200 +++ /var/tmp/diff_new_pack.eEHfcH/_new 2024-05-24 19:52:00.927428878 +0200 @@ -1,5 +1,5 @@ name: orafce -version: 4.10.0+git0.cfdcdf2 -mtime: 1714042164 -commit: cfdcdf258f7dc3ca5586bdbe7e6f472b672cdbc5 +version: 4.10.2+git0.8d10ace +mtime: 1716226596 +commit: 8d10acec102616d9825d2f6e1b7c9f8b25dbc7cd
