{"id":11272,"date":"2021-08-29T12:37:42","date_gmt":"2021-08-29T10:37:42","guid":{"rendered":"https:\/\/www.salvis.com\/blog\/?p=11272"},"modified":"2023-11-08T15:35:23","modified_gmt":"2023-11-08T14:35:23","slug":"do-not-format-invalid-code-in-sql-developer","status":"publish","type":"post","link":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/","title":{"rendered":"Do Not Format Invalid Code in SQL Developer"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p>What happens when you call the formatter in SQL Developer for invalid code? Until recently SQL Developer tried to format it anyway. This produced strange results in some cases. Starting with SQL Developer version 21.2.0 there is a hidden option to suppress formatting when the code is invalid.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Is Valid Code?<\/h2>\n\n\n\n<p>If the code can be compiled and executed, it is valid. Right? &#8211; Well, SQL Developer uses a parser written in Java. The resulting lexer token stream and the parse tree are essential inputs for the formatter. If the parser does not understand the code then it produces a partial parse tree. This means the parse tree is incomplete. In such cases the formatting result is unreliable. And it does not matter if the code can be compiled and executed.<\/p>\n\n\n\n<p>Here&#8217;s an example of a valid SQL statement that produces a query result but still reports a syntax error.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/valid_with_syntax_error.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/valid_with_syntax_error.png\" alt=\"\" class=\"wp-image-11281\" srcset=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/valid_with_syntax_error.png 1024w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/valid_with_syntax_error-300x225.png 300w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/valid_with_syntax_error-768x576.png 768w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/valid_with_syntax_error-195x146.png 195w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/valid_with_syntax_error-50x38.png 50w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/valid_with_syntax_error-100x75.png 100w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/valid_with_syntax_error-1x1.png 1w\" sizes=\"auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>There are three options in SQL Developer to spot a syntax error in an editor.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>A pinkish-wavy line below the token (group) in the editor that is responsible for the syntax error. When you hover over it a pop-up window with additional information appears.<\/li>\n\n\n\n<li>A pink area on the right border of the editor. When you hover over it a pop-up window with the code excerpt appears. When you click on it the cursor is positioned on the token with the pinkish-wavy line (<code>group<\/code>).<\/li>\n\n\n\n<li><code>Syntax error; Partial parse tree:<\/code> is shown as the first line in the code outline window<\/li>\n<\/ol>\n\n\n\n<p>According to the <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/sqlrf\/SELECT.html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__I2065777\">SQL Language Reference 21c<\/a> this syntax is not allowed.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/group_by_clause.gif\"><img wpfc-lazyload-disable=\"true\" loading=\"lazy\" decoding=\"async\" width=\"515\" height=\"123\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/group_by_clause.gif\" alt=\"\" class=\"wp-image-11283\"\/><\/a><\/figure>\n\n\n\n<p>However, Oracle&#8217;s implementation allows to write the <code>HAVING condition<\/code> before the <code>GROUP BY<\/code>. That&#8217;s a fact.<\/p>\n\n\n\n<p>As you can see, it is not so easy to write a complete parser based only on the documentation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Problem<\/h2>\n\n\n\n<p>When I call the formatter in SQL Developer with my favourite formatter settings for this code<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Invalid code<\/span><span role=\"button\" tabindex=\"0\" data-code=\"select\n   constraint_name\nfrom\n   user_cons_columns c\nwhere\n   c.table_name = 'EMP'\nhaving\n   count(1) = 1\ngroup by\n   constraint_name;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">select<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   constraint_name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">from<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   user_cons_columns c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">where<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   c.table_name = <\/span><span style=\"color: #CE9178\">&#39;EMP&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">having<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #DCDCAA\">count<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">) = <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #569CD6\">group by<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">   constraint_name;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>then I get the following result:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Formatted invalid code<\/span><span role=\"button\" tabindex=\"0\" data-code=\"select constraint_name\n  from user_cons_columns c\n where c.table_name = 'EMP'\nhaving count(1) = 1\ngroup by\n   constraint_name;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> constraint_name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> user_cons_columns c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> c.table_name = <\/span><span style=\"color: #CE9178\">&#39;EMP&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">having<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">count<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">) = <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">group by<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   constraint_name;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>When I fix the syntax error (from a SQL Developer&#8217;s parser perspective) in the original code like this:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Valid code<\/span><span role=\"button\" tabindex=\"0\" data-code=\"select\n   constraint_name\nfrom\n   user_cons_columns c\nwhere\n   c.table_name = 'EMP'\ngroup by\n   constraint_name\nhaving\n   count(1) = 1;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">select<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   constraint_name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">from<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   user_cons_columns c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">where<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   c.table_name = <\/span><span style=\"color: #CE9178\">&#39;EMP&#39;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #569CD6\">group by<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">   constraint_name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">having<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #DCDCAA\">count<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">) = <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>then the formatter result is:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Formatted valid code<\/span><span role=\"button\" tabindex=\"0\" data-code=\"select constraint_name\n  from user_cons_columns c\n where c.table_name = 'EMP'\n group by constraint_name\nhaving count(1) = 1;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> constraint_name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> user_cons_columns c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> c.table_name = <\/span><span style=\"color: #CE9178\">&#39;EMP&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">group by<\/span><span style=\"color: #D4D4D4\"> constraint_name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">having<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">count<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">) = <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>In this example the difference is small. Just the <code>group by<\/code> clause which could not be formatted with the syntax error. However, in other cases, the formatter result might be really weird. So in my opinion it is better to not format invalid code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Solution<\/h2>\n\n\n\n<p>Open the preferences in SQL Developer and export the <code>Advanced Format<\/code> settings as shown in this screenshot.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/export_preferences.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/export_preferences.png\" alt=\"\" class=\"wp-image-11273\" srcset=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/export_preferences.png 1024w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/export_preferences-300x225.png 300w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/export_preferences-768x576.png 768w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/export_preferences-195x146.png 195w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/export_preferences-50x38.png 50w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/export_preferences-100x75.png 100w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/export_preferences-1x1.png 1w\" sizes=\"auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Then open the exported XML file in an editor and add the highlighted line:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">advanced_format.xml<\/span><span role=\"button\" tabindex=\"0\" data-code=\"<options&gt;<adjustCaseOnly&gt;false<\/adjustCaseOnly&gt;\n<alignTabColAliases&gt;true<\/alignTabColAliases&gt;\n<breakOnSubqueries&gt;true<\/breakOnSubqueries&gt;\n<alignEquality&gt;false<\/alignEquality&gt;\n<formatWhenSyntaxError&gt;true<\/formatWhenSyntaxError&gt;\n<singleLineComments&gt;oracle.dbtools.app.Format.InlineComments.CommentsUnchanged<\/singleLineComments&gt;\n<breakAnsiiJoin&gt;false<\/breakAnsiiJoin&gt;\n<maxCharLineSize&gt;128<\/maxCharLineSize&gt;\n<alignAssignments&gt;false<\/alignAssignments&gt;\n<breaksProcArgs&gt;false<\/breaksProcArgs&gt;\n<alignRight&gt;false<\/alignRight&gt;\n<breaksComma&gt;oracle.dbtools.app.Format.Breaks.After<\/breaksComma&gt;\n<breaksAroundLogicalConjunctions&gt;oracle.dbtools.app.Format.Breaks.Before<\/breaksAroundLogicalConjunctions&gt;\n<alignNamedArgs&gt;true<\/alignNamedArgs&gt;\n<formatProgramURL&gt;default<\/formatProgramURL&gt;\n<formatThreshold&gt;1<\/formatThreshold&gt;\n<spaceAroundOperators&gt;true<\/spaceAroundOperators&gt;\n<useTab&gt;false<\/useTab&gt;\n<idCase&gt;oracle.dbtools.app.Format.Case.lower<\/idCase&gt;\n<extraLinesAfterSignificantStatements&gt;oracle.dbtools.app.Format.BreaksX2.X2<\/extraLinesAfterSignificantStatements&gt;\n<breaksConcat&gt;oracle.dbtools.app.Format.Breaks.Before<\/breaksConcat&gt;\n<spaceAroundBrackets&gt;oracle.dbtools.app.Format.Space.Default<\/spaceAroundBrackets&gt;\n<flowControl&gt;oracle.dbtools.app.Format.FlowControl.IndentedActions<\/flowControl&gt;\n<commasPerLine&gt;5<\/commasPerLine&gt;\n<forceLinebreaksBeforeComment&gt;false<\/forceLinebreaksBeforeComment&gt;\n<alignTypeDecl&gt;true<\/alignTypeDecl&gt;\n<breakParenCondition&gt;false<\/breakParenCondition&gt;\n<parseForwardAndBackward&gt;true<\/parseForwardAndBackward&gt;\n<identSpaces&gt;4<\/identSpaces&gt;\n<breaksAfterSelect&gt;true<\/breaksAfterSelect&gt;\n<spaceAfterCommas&gt;true<\/spaceAfterCommas&gt;\n<kwCase&gt;oracle.dbtools.app.Format.Case.UPPER<\/kwCase&gt;\n<formatWhenSyntaxError&gt;false<\/formatWhenSyntaxError&gt;\n<\/options&gt;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">options<\/span><span style=\"color: #808080\">&gt;&lt;<\/span><span style=\"color: #569CD6\">adjustCaseOnly<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">false<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">adjustCaseOnly<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">alignTabColAliases<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">true<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">alignTabColAliases<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">breakOnSubqueries<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">true<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">breakOnSubqueries<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">alignEquality<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">false<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">alignEquality<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">formatWhenSyntaxError<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">true<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">formatWhenSyntaxError<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">singleLineComments<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">oracle.dbtools.app.Format.InlineComments.CommentsUnchanged<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">singleLineComments<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">breakAnsiiJoin<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">false<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">breakAnsiiJoin<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">maxCharLineSize<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">128<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">maxCharLineSize<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">alignAssignments<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">false<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">alignAssignments<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">breaksProcArgs<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">false<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">breaksProcArgs<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">alignRight<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">false<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">alignRight<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">breaksComma<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">oracle.dbtools.app.Format.Breaks.After<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">breaksComma<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">breaksAroundLogicalConjunctions<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">oracle.dbtools.app.Format.Breaks.Before<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">breaksAroundLogicalConjunctions<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">alignNamedArgs<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">true<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">alignNamedArgs<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">formatProgramURL<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">default<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">formatProgramURL<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">formatThreshold<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">1<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">formatThreshold<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">spaceAroundOperators<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">true<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">spaceAroundOperators<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">useTab<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">false<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">useTab<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">idCase<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">oracle.dbtools.app.Format.Case.lower<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">idCase<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">extraLinesAfterSignificantStatements<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">oracle.dbtools.app.Format.BreaksX2.X2<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">extraLinesAfterSignificantStatements<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">breaksConcat<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">oracle.dbtools.app.Format.Breaks.Before<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">breaksConcat<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">spaceAroundBrackets<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">oracle.dbtools.app.Format.Space.Default<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">spaceAroundBrackets<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">flowControl<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">oracle.dbtools.app.Format.FlowControl.IndentedActions<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">flowControl<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">commasPerLine<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">5<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">commasPerLine<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">forceLinebreaksBeforeComment<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">false<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">forceLinebreaksBeforeComment<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">alignTypeDecl<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">true<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">alignTypeDecl<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">breakParenCondition<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">false<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">breakParenCondition<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">parseForwardAndBackward<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">true<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">parseForwardAndBackward<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">identSpaces<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">4<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">identSpaces<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">breaksAfterSelect<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">true<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">breaksAfterSelect<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">spaceAfterCommas<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">true<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">spaceAfterCommas<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">kwCase<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">oracle.dbtools.app.Format.Case.UPPER<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">kwCase<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">formatWhenSyntaxError<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">false<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">formatWhenSyntaxError<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">options<\/span><span style=\"color: #808080\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Save the file and import it into the preferences of SQL Developer. It&#8217;s the same screen as before, but this time use the <code>Import<\/code> button.<\/p>\n\n\n\n<p>Afterwards, SQL Developer will format valid code only.<\/p>\n\n\n\n<p>The latest <a href=\"https:\/\/github.com\/Trivadis\/plsql-formatter-settings\">Trivadis PL\/SQL &amp; SQL Formatter Settings<\/a> also use <code>&lt;formatWhenSyntaxError&gt;false&lt;\/formatWhenSyntaxError&gt;<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p>Now you can decide whether you want to format code with syntax errors in SQL Developer. I recommend not to format invalid code. In most cases, you will not be satisfied with the result anyway. And with larger files, you may not realize until much later that undo is no longer a simple keyboard shortcut.<\/p>\n\n\n\n<p>Many thanks to the SQL Developer team and especially to Vadim Tropashko for implementing <a href=\"https:\/\/community.oracle.com\/tech\/developers\/discussion\/4481982\/enhancement-request-for-sqldev-dont-format-code-with-parse-errors\">this enhancement request<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction What happens when you call the formatter in SQL Developer for invalid code? Until recently SQL Developer tried to format it anyway. This produced strange results in some cases. Starting with SQL Developer version 21.2.0 there is a hidden option to suppress formatting when the code is invalid. What Is Valid<span class=\"excerpt-hellip\"> [\u2026]<\/span><\/p>\n","protected":false},"author":1,"featured_media":11290,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[129,87],"class_list":["post-11272","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-arbori","tag-sql-developer"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Do Not Format Invalid Code in SQL Developer - Philipp Salvisberg&#039;s Blog<\/title>\n<meta name=\"description\" content=\"Until recently SQL Developer tried to format invalid code. This produced strange results. Don&#039;t format invalid code. There&#039;s an option now.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Do Not Format Invalid Code in SQL Developer - Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"Until recently SQL Developer tried to format invalid code. This produced strange results. Don&#039;t format invalid code. There&#039;s an option now.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/\" \/>\n<meta property=\"og:site_name\" content=\"Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-29T10:37:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-08T14:35:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/pexels-ann-h-3482441-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Philipp Salvisberg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@phsalvisberg\" \/>\n<meta name=\"twitter:site\" content=\"@phsalvisberg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Philipp Salvisberg\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/\"},\"author\":{\"name\":\"Philipp Salvisberg\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"headline\":\"Do Not Format Invalid Code in SQL Developer\",\"datePublished\":\"2021-08-29T10:37:42+00:00\",\"dateModified\":\"2023-11-08T14:35:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/\"},\"wordCount\":550,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/pexels-ann-h-3482441-scaled.jpg\",\"keywords\":[\"Arbori\",\"SQL Developer\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/\",\"name\":\"Do Not Format Invalid Code in SQL Developer - Philipp Salvisberg&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/pexels-ann-h-3482441-scaled.jpg\",\"datePublished\":\"2021-08-29T10:37:42+00:00\",\"dateModified\":\"2023-11-08T14:35:23+00:00\",\"description\":\"Until recently SQL Developer tried to format invalid code. This produced strange results. Don't format invalid code. There's an option now.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/pexels-ann-h-3482441-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/pexels-ann-h-3482441-scaled.jpg\",\"width\":2560,\"height\":1707},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2021\\\/08\\\/29\\\/do-not-format-invalid-code-in-sql-developer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Do Not Format Invalid Code in SQL Developer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\",\"name\":\"Philipp Salvisberg&#039;s Blog\",\"description\":\"Database-centric development\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\",\"name\":\"Philipp Salvisberg\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"width\":400,\"height\":400,\"caption\":\"Philipp Salvisberg\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\"},\"sameAs\":[\"http:\\\/\\\/www.salvis.com\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Do Not Format Invalid Code in SQL Developer - Philipp Salvisberg&#039;s Blog","description":"Until recently SQL Developer tried to format invalid code. This produced strange results. Don't format invalid code. There's an option now.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/","og_locale":"en_US","og_type":"article","og_title":"Do Not Format Invalid Code in SQL Developer - Philipp Salvisberg&#039;s Blog","og_description":"Until recently SQL Developer tried to format invalid code. This produced strange results. Don't format invalid code. There's an option now.","og_url":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/","og_site_name":"Philipp Salvisberg&#039;s Blog","article_published_time":"2021-08-29T10:37:42+00:00","article_modified_time":"2023-11-08T14:35:23+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/pexels-ann-h-3482441-scaled.jpg","type":"image\/jpeg"}],"author":"Philipp Salvisberg","twitter_card":"summary_large_image","twitter_creator":"@phsalvisberg","twitter_site":"@phsalvisberg","twitter_misc":{"Written by":"Philipp Salvisberg","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/#article","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/"},"author":{"name":"Philipp Salvisberg","@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"headline":"Do Not Format Invalid Code in SQL Developer","datePublished":"2021-08-29T10:37:42+00:00","dateModified":"2023-11-08T14:35:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/"},"wordCount":550,"commentCount":5,"publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/pexels-ann-h-3482441-scaled.jpg","keywords":["Arbori","SQL Developer"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/","url":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/","name":"Do Not Format Invalid Code in SQL Developer - Philipp Salvisberg&#039;s Blog","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/#primaryimage"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/pexels-ann-h-3482441-scaled.jpg","datePublished":"2021-08-29T10:37:42+00:00","dateModified":"2023-11-08T14:35:23+00:00","description":"Until recently SQL Developer tried to format invalid code. This produced strange results. Don't format invalid code. There's an option now.","breadcrumb":{"@id":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/#primaryimage","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/pexels-ann-h-3482441-scaled.jpg","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2021\/08\/pexels-ann-h-3482441-scaled.jpg","width":2560,"height":1707},{"@type":"BreadcrumbList","@id":"https:\/\/www.salvis.com\/blog\/2021\/08\/29\/do-not-format-invalid-code-in-sql-developer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.salvis.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Do Not Format Invalid Code in SQL Developer"}]},{"@type":"WebSite","@id":"https:\/\/www.salvis.com\/blog\/#website","url":"https:\/\/www.salvis.com\/blog\/","name":"Philipp Salvisberg&#039;s Blog","description":"Database-centric development","publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.salvis.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515","name":"Philipp Salvisberg","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","width":400,"height":400,"caption":"Philipp Salvisberg"},"logo":{"@id":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg"},"sameAs":["http:\/\/www.salvis.com\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/11272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/comments?post=11272"}],"version-history":[{"count":14,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/11272\/revisions"}],"predecessor-version":[{"id":12711,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/11272\/revisions\/12711"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media\/11290"}],"wp:attachment":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media?parent=11272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/categories?post=11272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/tags?post=11272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}