Skip to content

Ensure the SQL code block is valid #130

Closed
@PhilippSalvisberg

Description

@PhilippSalvisberg

In G-3170 the result of the SQL statement is part of the SQL code block:

reate table null_test (
   test_case        number(2) not null
  ,column_defaulted varchar2(10 char) default 'Default')
/
insert into null_test(test_case, column_defaulted) values (1,'Value');
insert into null_test(test_case, column_defaulted) values (2,default);
insert into null_test(test_case, column_defaulted) values (3,null);

select * from null_test;

TEST_CASE  COLUMN_DEF
---------  -----------
        1  Value
        2  Default
        3

The formatter does not format code that is invalid. Hence the code is not formatted. To solve the problem the result of the query could be placed in comments our shown in a dedicated code block (without sql tag).

Variant a) commented out

create table null_test (
   test_case        number(2) not null
  ,column_defaulted varchar2(10 char) default 'Default')
/
insert into null_test(test_case,column_defaulted) values (1,'Value');
insert into null_test(test_case,column_defaulted) values (2,default);
insert into null_test(test_case,column_defaulted) values (3,null);

select * from null_test;

/*
TEST_CASE  COLUMN_DEF
---------  -----------
        1  Value
        2  Default
        3
*/

Variant b) dedicated code block for result

create table null_test (
   test_case        number(2) not null
  ,column_defaulted varchar2(10 char) default 'Default')
/
insert into null_test(test_case,column_defaulted) values (1,'Value');
insert into null_test(test_case,column_defaulted) values (2,default);
insert into null_test(test_case,column_defaulted) values (3,null);

select * from null_test;
TEST_CASE  COLUMN_DEF
---------  -----------
        1  Value
        2  Default
        3

Relevant files

By running the following command in the root of the Git project (with enabled Git pre-commit hook) all SQL code blocks are formatted.

.git/hooks/pre-commit ./docs

Unfortunately invalid code in Markdown files is not reported by the formatter. However, when I run a patched version of format.js (calling hasParseErrors with console output) then the files with formatting errors become visible. Here's the complete output:

SQL> tvdformat ./docs xml=formatter/trivadis_advanced_format.xml arbori=formatter/trivadis_custom_format.arbori

Formatting file 1 of 133: ./docs/1-introduction/introduction.md... done.
Formatting file 2 of 133: ./docs/2-naming-conventions/naming-conventions.md... done.
Formatting file 3 of 133: ./docs/3-coding-style/coding-style.md... done.
Formatting file 4 of 133: ./docs/4-language-usage/1-general/g-1010.md... done.
Formatting file 5 of 133: ./docs/4-language-usage/1-general/g-1020.md... done.
Formatting file 6 of 133: ./docs/4-language-usage/1-general/g-1030.md... done.
Formatting file 7 of 133: ./docs/4-language-usage/1-general/g-1040.md... done.
Formatting file 8 of 133: ./docs/4-language-usage/1-general/g-1050.md... done.
Formatting file 9 of 133: ./docs/4-language-usage/1-general/g-1060.md... done.
Formatting file 10 of 133: ./docs/4-language-usage/1-general/g-1070.md... done.
Formatting file 11 of 133: ./docs/4-language-usage/1-general/g-1080.md... done.
Formatting file 12 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2110.md... done.
Formatting file 13 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2120.md... done.
Formatting file 14 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2130.md... done.
Formatting file 15 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2135.md... done.
Formatting file 16 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2140.md... done.
Formatting file 17 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2145.md... done.
Formatting file 18 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2150.md... done.
Formatting file 19 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2160.md... done.
Formatting file 20 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2170.md... done.
Formatting file 21 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2180.md... done.
Formatting file 22 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2185.md... done.
Formatting file 23 of 133: ./docs/4-language-usage/2-variables-and-types/1-general/g-2190.md... done.
Formatting file 24 of 133: ./docs/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2210.md... done.
Formatting file 25 of 133: ./docs/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2220.md... done.
Formatting file 26 of 133: ./docs/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2230.md... done.
Formatting file 27 of 133: ./docs/4-language-usage/2-variables-and-types/3-character-data-types/g-2310.md... done.
Formatting file 28 of 133: ./docs/4-language-usage/2-variables-and-types/3-character-data-types/g-2320.md... done.
Formatting file 29 of 133: ./docs/4-language-usage/2-variables-and-types/3-character-data-types/g-2330.md... done.
Formatting file 30 of 133: ./docs/4-language-usage/2-variables-and-types/3-character-data-types/g-2340.md... done.
Formatting file 31 of 133: ./docs/4-language-usage/2-variables-and-types/4-boolean-data-types/g-2410.md... done.
Formatting file 32 of 133: ./docs/4-language-usage/2-variables-and-types/5-large-objects/g-2510.md... done.
Formatting file 33 of 133: ./docs/4-language-usage/2-variables-and-types/6-cursor-variables/g-2610.md... done.
Formatting file 34 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3110.md... done.
Formatting file 35 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3115.md... done.
Formatting file 36 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3120.md... done.
Formatting file 37 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3130.md... done.
Formatting file 38 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3140.md... done.
Formatting file 39 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3145.md... done.
Formatting file 40 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3150.md... done.
Formatting file 41 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3160.md... Syntax Error at line 19, column 6


Error report -
      ^^^      

Expected: ... done.
Formatting file 42 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3170.md... Syntax Error at line 12, column 10


TEST_CASE  COLUMN_DEF
          ^^^         

Expected: ... Syntax Error at line 12, column 11


 TEST_CASE COLUMN_DEF
           ^^^        

Expected: ... done.
Formatting file 43 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3180.md... done.
Formatting file 44 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3185.md... done.
Formatting file 45 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3190.md... Syntax Error at line 9, column 16


DEPARTMENT_NAME                LAST_NAME                 FIRST_NAME         
                ^^^                                                          

Expected: ... Syntax Error at line 10, column 16


DEPARTMENT_NAME                LAST_NAME                 FIRST_NAME         
                ^^^                                                          

Expected: ... done.
Formatting file 46 of 133: ./docs/4-language-usage/3-dml-and-sql/1-general/g-3195.md... done.
Formatting file 47 of 133: ./docs/4-language-usage/3-dml-and-sql/2-bulk-operations/g-3210.md... done.
Formatting file 48 of 133: ./docs/4-language-usage/3-dml-and-sql/2-bulk-operations/g-3220.md... done.
Formatting file 49 of 133: ./docs/4-language-usage/3-dml-and-sql/3-transaction-control/g-3310.md... done.
Formatting file 50 of 133: ./docs/4-language-usage/3-dml-and-sql/3-transaction-control/g-3320.md... done.
Formatting file 51 of 133: ./docs/4-language-usage/4-control-structures/1-cursor/g-4110.md... done.
Formatting file 52 of 133: ./docs/4-language-usage/4-control-structures/1-cursor/g-4120.md... done.
Formatting file 53 of 133: ./docs/4-language-usage/4-control-structures/1-cursor/g-4130.md... done.
Formatting file 54 of 133: ./docs/4-language-usage/4-control-structures/1-cursor/g-4140.md... done.
Formatting file 55 of 133: ./docs/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4210.md... done.
Formatting file 56 of 133: ./docs/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4220.md... done.
Formatting file 57 of 133: ./docs/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4230.md... done.
Formatting file 58 of 133: ./docs/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4240.md... done.
Formatting file 59 of 133: ./docs/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4250.md... done.
Formatting file 60 of 133: ./docs/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4260.md... done.
Formatting file 61 of 133: ./docs/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4270.md... done.
Formatting file 62 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4310.md... done.
Formatting file 63 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4320.md... done.
Formatting file 64 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4325.md... done.
Formatting file 65 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4330.md... done.
Formatting file 66 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4340.md... done.
Formatting file 67 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4350.md... done.
Formatting file 68 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4360.md... done.
Formatting file 69 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4365.md... done.
Formatting file 70 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4370.md... done.
Formatting file 71 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4375.md... done.
Formatting file 72 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4380.md... done.
Formatting file 73 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4385.md... done.
Formatting file 74 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4390.md... done.
Formatting file 75 of 133: ./docs/4-language-usage/4-control-structures/3-flow-control/g-4395.md... done.
Formatting file 76 of 133: ./docs/4-language-usage/5-exception-handling/g-5010.md... done.
Formatting file 77 of 133: ./docs/4-language-usage/5-exception-handling/g-5020.md... done.
Formatting file 78 of 133: ./docs/4-language-usage/5-exception-handling/g-5030.md... Syntax Error at line 22, column 6


Error report -
      ^^^      

Expected: ... done.
Formatting file 79 of 133: ./docs/4-language-usage/5-exception-handling/g-5040.md... done.
Formatting file 80 of 133: ./docs/4-language-usage/5-exception-handling/g-5050.md... done.
Formatting file 81 of 133: ./docs/4-language-usage/5-exception-handling/g-5060.md... done.
Formatting file 82 of 133: ./docs/4-language-usage/5-exception-handling/g-5070.md... done.
Formatting file 83 of 133: ./docs/4-language-usage/5-exception-handling/g-5080.md... Syntax Error at line 6, column 5


   )
     ^^^

Expected: ... Syntax Error at line 6, column 5


   )
     ^^^

Expected: ... done.
Formatting file 84 of 133: ./docs/4-language-usage/6-dynamic-sql/g-6010.md... done.
Formatting file 85 of 133: ./docs/4-language-usage/6-dynamic-sql/g-6020.md... done.
Formatting file 86 of 133: ./docs/4-language-usage/7-stored-objects/1-general/g-7110.md... done.
Formatting file 87 of 133: ./docs/4-language-usage/7-stored-objects/1-general/g-7120.md... done.
Formatting file 88 of 133: ./docs/4-language-usage/7-stored-objects/1-general/g-7125.md... done.
Formatting file 89 of 133: ./docs/4-language-usage/7-stored-objects/1-general/g-7130.md... done.
Formatting file 90 of 133: ./docs/4-language-usage/7-stored-objects/1-general/g-7140.md... done.
Formatting file 91 of 133: ./docs/4-language-usage/7-stored-objects/1-general/g-7150.md... done.
Formatting file 92 of 133: ./docs/4-language-usage/7-stored-objects/1-general/g-7160.md... done.
Formatting file 93 of 133: ./docs/4-language-usage/7-stored-objects/1-general/g-7170.md... done.
Formatting file 94 of 133: ./docs/4-language-usage/7-stored-objects/2-packages/g-7210.md... done.
Formatting file 95 of 133: ./docs/4-language-usage/7-stored-objects/2-packages/g-7220.md... done.
Formatting file 96 of 133: ./docs/4-language-usage/7-stored-objects/2-packages/g-7230.md... done.
Formatting file 97 of 133: ./docs/4-language-usage/7-stored-objects/2-packages/g-7250.md... done.
Formatting file 98 of 133: ./docs/4-language-usage/7-stored-objects/3-procedures/g-7310.md... done.
Formatting file 99 of 133: ./docs/4-language-usage/7-stored-objects/3-procedures/g-7320.md... done.
Formatting file 100 of 133: ./docs/4-language-usage/7-stored-objects/3-procedures/g-7330.md... done.
Formatting file 101 of 133: ./docs/4-language-usage/7-stored-objects/4-functions/g-7410.md... done.
Formatting file 102 of 133: ./docs/4-language-usage/7-stored-objects/4-functions/g-7420.md... done.
Formatting file 103 of 133: ./docs/4-language-usage/7-stored-objects/4-functions/g-7430.md... done.
Formatting file 104 of 133: ./docs/4-language-usage/7-stored-objects/4-functions/g-7440.md... done.
Formatting file 105 of 133: ./docs/4-language-usage/7-stored-objects/4-functions/g-7450.md... done.
Formatting file 106 of 133: ./docs/4-language-usage/7-stored-objects/4-functions/g-7460.md... done.
Formatting file 107 of 133: ./docs/4-language-usage/7-stored-objects/5-oracle-supplied-packages/g-7510.md... done.
Formatting file 108 of 133: ./docs/4-language-usage/7-stored-objects/6-object-types/object-types.md... done.
Formatting file 109 of 133: ./docs/4-language-usage/7-stored-objects/7-triggers/g-7710.md... done.
Formatting file 110 of 133: ./docs/4-language-usage/7-stored-objects/7-triggers/g-7720.md... done.
Formatting file 111 of 133: ./docs/4-language-usage/7-stored-objects/7-triggers/g-7730.md... done.
Formatting file 112 of 133: ./docs/4-language-usage/7-stored-objects/7-triggers/g-7740.md... done.
Formatting file 113 of 133: ./docs/4-language-usage/7-stored-objects/8-sequences/g-7810.md... done.
Formatting file 114 of 133: ./docs/4-language-usage/7-stored-objects/9-sql-macros/g-7910.md... Syntax Error at line 3, column 25


   num_rows_in in number(32,0)
                         ^^^   

Expected: ... Syntax Error at line 3, column 25


   num_rows_in in number(32,0)
                         ^^^   

Expected: ... done.
Formatting file 115 of 133: ./docs/4-language-usage/8-patterns/1-checking-the-number-of-rows/g-8110.md... done.
Formatting file 116 of 133: ./docs/4-language-usage/8-patterns/1-checking-the-number-of-rows/g-8120.md... done.
Formatting file 117 of 133: ./docs/4-language-usage/8-patterns/2-access-objects-of-foreign-application-schemas/g-8210.md... done.
Formatting file 118 of 133: ./docs/4-language-usage/8-patterns/3-validating-input-parameter-size/g-8310.md... Syntax Error at line 2, column 2


...
  ^^^

Expected: digits,... done.
Formatting file 119 of 133: ./docs/4-language-usage/8-patterns/4-ensure-single-execution-at-a-time-of-a-program-unit/g-8410.md... done.
Formatting file 120 of 133: ./docs/4-language-usage/8-patterns/5-use-dbms-application-info-package-to-follow-progress-of-a-process/g-8510.md... done.
Formatting file 121 of 133: ./docs/4-language-usage/9-function-usage/g-9010.md... done.
Formatting file 122 of 133: ./docs/4-language-usage/9-function-usage/g-9020.md... done.
Formatting file 123 of 133: ./docs/4-language-usage/9-function-usage/g-9030.md... done.
Formatting file 124 of 133: ./docs/4-language-usage/9-function-usage/g-9040.md... done.
Formatting file 125 of 133: ./docs/5-complexity-analysis/complexity-analysis.md... done.
Formatting file 126 of 133: ./docs/6-code-reviews/code-reviews.md... done.
Formatting file 127 of 133: ./docs/7-tool-support/1-db-codecop-sqldev.md... done.
Formatting file 128 of 133: ./docs/7-tool-support/2-db-codecop-sonarqube.md... done.
Formatting file 129 of 133: ./docs/7-tool-support/3-db-codecop-cli.md... done.
Formatting file 130 of 133: ./docs/7-tool-support/4-db-codecop-validators.md... done.
Formatting file 131 of 133: ./docs/7-tool-support/5-plscope-utils.md... done.
Formatting file 132 of 133: ./docs/9-appendix/appendix.md... done.
Formatting file 133 of 133: ./docs/index.md... done.

So the following files need to be fixed:

  • g-3160.md
  • g-3170.md
  • g-3190.md
  • g-5030.md
  • g-5080.md
  • g-7910.md
  • g-8310.md

I will open an issue in the formatter repo.

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions