Skip to Main Content

SQLcl: MCP Server & SQL Prompt

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Unrecognized character escape error running project stage command

Chris KemmererDec 8 2024

I am getting the following error when running the project stage command. I am including the output from the command run with the debug option.

SQL> project stage -de
----- DISPLAY ARGUMENTS -----

BRANCH-NAME: null
Diffing Branches
result: diff DiffEntry[ADD src/database/example/triggers/example_documents_fix_name.sql]
ERROR: An error has occurred processing your request:
Unrecognized character escape ''' (code 39)
at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 806] (through reference chain: oracle.dbtools.extension.project.commands.stage.objectclasses.SrcSnapShot["sxml"])
oracle.dbtools.extension.project.core.exceptions.ChangelogGenerationException: Unrecognized character escape ''' (code 39)
at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 806] (through reference chain: oracle.dbtools.extension.project.commands.stage.objectclasses.SrcSnapShot["sxml"])
at oracle.dbtools.extension.project.core.utils.GitUtils.diffBranches(GitUtils.java:216)
at oracle.dbtools.extension.project.commands.stage.StageCommand.run(StageCommand.java:82)
at oracle.dbtools.extension.project.commands.handler.CommandHandler.StageCommand(CommandHandler.java:59)
at oracle.dbtools.extension.project.commands.handler.ProjectCommand.handleEvent(ProjectCommand.java:75)
at oracle.dbtools.raptor.newscriptrunner.util.command.ParsedCommandListener.handleEvent(ParsedCommandListener.java:62)
at oracle.dbtools.raptor.newscriptrunner.CommandRegistry.fireListeners(CommandRegistry.java:448)
at oracle.dbtools.raptor.newscriptrunner.ScriptRunner.lambda$run$0(ScriptRunner.java:236)
at oracle.dbtools.raptor.newscriptrunner.ScriptRunnerContext.runWithStoredContext(ScriptRunnerContext.java:833)
at oracle.dbtools.raptor.newscriptrunner.ScriptRunner.run(ScriptRunner.java:119)
at oracle.dbtools.raptor.newscriptrunner.ScriptExecutor.run(ScriptExecutor.java:364)
at oracle.dbtools.raptor.newscriptrunner.ScriptExecutor.run(ScriptExecutor.java:245)
at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.processLine(SqlCli.java:1223)
at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.runSqlcl(SqlCli.java:1401)
at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.main(SqlCli.java:370)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Unrecognized character escape ''' (code 39)
at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 806] (through reference chain: oracle.dbtools.extension.project.commands.stage.objectclasses.SrcSnapShot["sxml"])
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:402)
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:361)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow(BeanDeserializerBase.java:1937)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:312)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4905)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3848)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3816)
at oracle.dbtools.extension.project.commands.stage.objectclasses.SrcSnapShot.loadSnapShot(SrcSnapShot.java:39)
at oracle.dbtools.extension.project.commands.stage.objectclasses.DbDiffObject.<init>(DbDiffObject.java:55)
at oracle.dbtools.extension.project.core.utils.GitUtils.diffBranches(GitUtils.java:203)
... 13 more
Caused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized character escape ''' (code 39)
at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 806]
at com.fasterxml.jackson.core.JsonParser._constructReadException(JsonParser.java:2648)
at com.fasterxml.jackson.core.base.ParserBase._handleUnrecognizedCharacterEscape(ParserBase.java:1376)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._decodeEscaped(ReaderBasedJsonParser.java:2681)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._finishString2(ReaderBasedJsonParser.java:2201)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._finishString(ReaderBasedJsonParser.java:2174)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.getText(ReaderBasedJsonParser.java:295)
at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:42)
at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:11)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:310)
... 21 more

This is the file the error occurred on. This is a trigger that has been running for years so as far as SQL is concerned it is valid.

CREATE OR REPLACE EDITIONABLE TRIGGER example_documents_fix_name BEFORE
    UPDATE ON example_documents
    REFERENCING
            NEW AS new
            OLD AS old
    FOR EACH ROW
declare
    cd_except EXCEPTION;
    originalname varchar2(256);
BEGIN
    originalname := :new.name;
    IF instr(:new.name,
             '/\\') > 0 THEN
        :new.name := substr(:new.name,
                            1,
                            instr(:new.name,
                                  '/'))
                     || substr(:new.name,
                               instr(:new.name,
                                     '\',
                                     -1) + 1);

        update program_eform_attachment
        set
            attachment_name = :new.name
        where
            attachment_name = originalname;

        update example_document_views
        set
            filename = :new.name
        where
            filename = originalname;

    END IF;

exception
    WHEN OTHERS THEN
        :new.name := originalname;
END;
/


-- sqlcl_snapshot {"hash":"de0c721f02971b90248987ef91a65e1ceecbaeff","type":"TRIGGER","name":"EXAMPLE_DOCUMENTS_FIX_NAME","schemaName":"EXAMPLE","sxml":"<TRIGGER  xmlns  =\"http://xmlns.oracle.com/ku\"  version  =\"1.0\"><SCHEMA>EXAMPLE</SCHEMA><NAME>EXAMPLE_DOCUMENTS_FIX_NAME</NAME><TRIGGER_TYPE>BEFORE</TRIGGER_TYPE><DML_EVENT><EVENT_LIST><EVENT_LIST_ITEM><EVENT>UPDATE</EVENT></EVENT_LIST_ITEM></EVENT_LIST><SCHEMA>EXAMPLE</SCHEMA><NAME>EXAMPLE_DOCUMENTS</NAME><REFERENCING><FOR_EACH_ROW></FOR_EACH_ROW></REFERENCING></DML_EVENT><PLSQL_BLOCK>declare  CD_EXCEPT  EXCEPTION  ;originalname  varchar2  (256  );BEGIN  originalname  :=:new  .name  ;IF  INSTR  (:NEW  .NAME  ,'/\\'  )>0  THEN  :NEW  .NAME  :=SUBSTR  (:NEW  .NAME  ,1  ,INSTR  (:NEW  .NAME  ,'/'  ))||SUBSTR  (:NEW  .NAME  ,INSTR  (:NEW  .NAME  ,'\'  ,-1  )+1  );update  PROGRAM_EFORM_ATTACHMENT  set  ATTACHMENT_NAME  =:new  .name  where  ATTACHMENT_NAME  =originalname  ;update  EXAMPLE_DOCUMENT_VIEWS  set  filename  =:new  .name  where  filename  =originalname  ;END  IF  ;exception  WHEN  OTHERS  THEN  :new  .name  :=originalname  ;END  ;</PLSQL_BLOCK></TRIGGER>"}
Comments
Post Details
Added on Dec 8 2024
4 comments
608 views