{"id":107,"date":"2010-03-01T23:43:11","date_gmt":"2010-03-02T04:43:11","guid":{"rendered":"http:\/\/www.dpriver.com\/blog\/?p=107"},"modified":"2011-09-26T21:49:38","modified_gmt":"2011-09-27T02:49:38","slug":"new-release-sql-pretty-printer-3-1-0","status":"publish","type":"post","link":"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/","title":{"rendered":"New release: SQL Pretty Printer 3.1.0"},"content":{"rendered":"<p>Hello everyone!<br \/>\nIt\u2019s been three months since our last release(v3.0.7), and it feels much longer for some reason. We\u2019ve been really busy.<\/p>\n<p>How have you been? We missed you! \ud83d\ude42<\/p>\n<p>We have some nice updates for you today.<\/p>\n<p><strong>Portable version<\/strong><\/p>\n<p>SQL Pretty Printer desktop version now is a portable software(also known as <em>portable application<\/em>), It is suitable for use on portable drives such as a USB (thumb) drive. You can carry SQL Pretty Printer on a portable drive for use on any computer. Application Settings and format options are stored with, and can be carried around with SQL Pretty Printer,\u00a0 Leaves a zero &#8220;footprint&#8221; on any PC it&#8217;s run on after being used.<\/p>\n<p>It&#8217;s quite easy to create a portable version after install SQL Pretty Printer on your computer,\u00a0 Just click menu item from Help-&gt;Create portable version, and then start SQL Pretty Printer from directory where portable version was created.<\/p>\n<figure style=\"width: 199px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dpriver.com\/images\/screenshots\/portable_version_2010_02_25.png\" alt=\"Portable Version\" width=\"199\" height=\"92\" \/><figcaption class=\"wp-caption-text\">Portable Version<\/figcaption><\/figure>\n<p><strong>Better support for multiline comments, all lines in the comment block to be left-aligned with the indented code below the comments.<\/strong><\/p>\n<figure style=\"width: 498px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dpriver.com\/images\/screenshots\/multiline_comments_2010_02_21.png\" alt=\"SQL multi lines comment formatting\" width=\"498\" height=\"411\" \/><figcaption class=\"wp-caption-text\">SQL multi lines comment formatting<\/figcaption><\/figure>\n<p><strong><br \/>\n<\/strong><\/p>\n<p><strong>New layout options to control empty lines between consecutive set\/declare statements<\/strong><\/p>\n<figure style=\"width: 490px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dpriver.com\/images\/screenshots\/consecutive_declares_empty_lines_2010_02_21.png\" alt=\"consecutive declares\/set statement empty lines\" width=\"490\" height=\"357\" \/><figcaption class=\"wp-caption-text\">consecutive declares\/set statement empty lines<\/figcaption><\/figure>\n<p><strong>New layout options for function call parameters.<\/strong><\/p>\n<figure style=\"width: 689px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dpriver.com\/images\/screenshots\/function_call_parameters_2010_02_21.png\" alt=\"Align parameters in function call\" width=\"689\" height=\"351\" \/><figcaption class=\"wp-caption-text\">Align parameters in function call<\/figcaption><\/figure>\n<p><strong>Able to add\u00a0 user customized keyword<\/strong>s <strong>or non-keywords<\/strong><\/p>\n<figure style=\"width: 782px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dpriver.com\/images\/screenshots\/customized_keywords_2010_02_23.png\" alt=\"Customized SQL keywords\" width=\"782\" height=\"219\" \/><figcaption class=\"wp-caption-text\">Customized SQL keywords<\/figcaption><\/figure>\n<p>if a keyword was also a function name, then it was processed as a\u00a0 keyword by SQL Pretty Printer.<\/p>\n<p><strong>CASE SENSITIVE in some SQL Server SQL statements.<\/strong><\/p>\n<p>Because the default setting for SQL Pretty Printer before V3.0.7 was to change all identifier to lower case. This may broke all of the SQL openxml statements since the case of the columns in the schema portion of the statement must match the input xml blob casing.<\/p>\n<p>Obviously, resolving this issue was just a matter of going into the configuration template for SQL Pretty Printer and setting the configuration option of identifiers to preserve original casing.<\/p>\n<p><em><strong>We change default case setting for identifier to lower case in this version.<\/strong><\/em><\/p>\n<p>Xml method query(),value(),exist(),modify(),nodes() keep lowercase no matter what case option was chosen for function case options.<\/p>\n<p><strong> Oracle SQL dialect syntax support enhanced<\/strong><\/p>\n<ul>\n<li>Create table tablename tablespace tn nologging parallel as select f from t<\/li>\n<li>Pipedlined in return type of function in create package\/function.<\/li>\n<li>Pipe row statement is supported in create function.<\/li>\n<li>NUMBER(*,0) was supported in create table statement.<\/li>\n<li>Lob_storage_clause in column_properties of\u00a0 table_properties in create table.<\/li>\n<li>Comment keyword can be used in typename.<\/li>\n<li>FOR R1 IN C1() LOOP, no parameters in C1().<\/li>\n<li>Merge statement, table alias\u00a0 is optional.<\/li>\n<li>ALTER TABLE _name_of_table MODIFY _name_of_field NUMBER(5,0).<\/li>\n<li>Execute statement can be top level sql of plsql.<\/li>\n<li>Last_value, first_value function<\/li>\n<li>dbms_lobs.open()<\/li>\n<li>RIGHT keyword can be column name in insert into (column names).<\/li>\n<li>Support exception name like this: UTL_SMTP.transient_error OR UTL_SMTP.permanent_error<\/li>\n<li>Right keyword can be arguments of function.<\/li>\n<li>Year keyword can be field name of TYPE rec_pmas_set IS RECORD.<\/li>\n<li>Year keyword can be plsql column name like tablename.year%type<\/li>\n<li>Handle &#8216;%\\_INF&#8217; correctly.<\/li>\n<\/ul>\n<h4>SQL Server SQL dialect syntax support enhanced<\/h4>\n<ul>\n<li>IDENTITY can&#8217;t be treated as typename.<\/li>\n<\/ul>\n<h4>DB2 SQL dialect syntax support enhanced<\/h4>\n<ul>\n<li>Support concat operator in select list.<\/li>\n<\/ul>\n<h4>Other Changes and Bug Fixes<\/h4>\n<p>fix small things here and there in this release, Here\u2019s what\u2019s we did:<\/p>\n<ul>\n<li>Performance improved while format SQL for the first time.<\/li>\n<li>Program halts for some SQLs.<\/li>\n<li>Select statement in create table not indent correctly.<\/li>\n<li>Access Violation to process some syntax invalid SQL.<\/li>\n<li>Index was out of range exception while dealing some SQL Server SQLs.<\/li>\n<li>Typo in confing dialog.<strong><span> <\/span><\/strong><\/li>\n<li>Able to generate output SQL even if there are syntax errors in input SQL when output type was set to html\/rtf\/txt keep layout.<\/li>\n<\/ul>\n<p><strong>How do I update?<\/strong><\/p>\n<ul>\n<li>SQL Pretty Printer desktop version:\u00a0 <a title=\"SQL Pretty Printer Desktop version\" href=\"http:\/\/http:\/\/www.dpriver.com\/dlaction.php\">here<\/a><\/li>\n<li>SQL Pretty Printer Add-In for SSMS: <a title=\"SQL Pretty Printer Add-In for SQL Server Management Studio\" href=\"http:\/\/http:\/\/www.dpriver.com\/dlaction.php\">here<\/a><\/li>\n<li>SQL Pretty Printer Add-In for VS: <a title=\"SQL Pretty Printer Add-In for Visual Studio\" href=\"http:\/\/http:\/\/www.dpriver.com\/dlaction.php\">here<\/a><\/li>\n<\/ul>\n<p>If you like to be notified about announcements and updates about SQL Pretty Printer, you can subscribe to this blog <a href=\"http:\/\/feeds.feedburner.com\/gudusoftware\">here via RSS<\/a>, or <a href=\"http:\/\/feedburner.google.com\/fb\/a\/mailverify?uri=gudusoftware&amp;loc=en_US\">via email.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello everyone! It\u2019s been three months since our last release(v3.0.7), and it feels much longer for some reason. We\u2019ve been really busy. How have you been? We missed you! \ud83d\ude42 We have some nice updates for you today. Portable version SQL Pretty Printer desktop version now is a portable software(also known as portable application), It is suitable for use on portable drives such as a USB (thumb) drive. You can carry SQL Pretty Printer on a portable drive for use on any computer. Application Settings and format options are stored with, and can be carried around with SQL Pretty Printer,\u00a0\u2026<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[13,24],"tags":[11],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":5}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>New release: SQL Pretty Printer 3.1.0<\/title>\n<meta name=\"description\" content=\"New release: SQL Pretty Printer 3.1.0\" \/>\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.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"New release: SQL Pretty Printer 3.1.0\" \/>\n<meta property=\"og:description\" content=\"New release: SQL Pretty Printer 3.1.0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/\" \/>\n<meta property=\"og:site_name\" content=\"SQL and Data Blog\" \/>\n<meta property=\"article:published_time\" content=\"2010-03-02T04:43:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-09-27T02:49:38+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dpriver.com\/images\/screenshots\/portable_version_2010_02_25.png\" \/>\n<meta name=\"author\" content=\"James\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"James\" \/>\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\":\"Organization\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#organization\",\"name\":\"SQL and Data Blog\",\"url\":\"https:\/\/www.dpriver.com\/blog\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2022\/07\/sqlpp-character.png\",\"contentUrl\":\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2022\/07\/sqlpp-character.png\",\"width\":251,\"height\":72,\"caption\":\"SQL and Data Blog\"},\"image\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#website\",\"url\":\"https:\/\/www.dpriver.com\/blog\/\",\"name\":\"SQL and Data Blog\",\"description\":\"SQL related blog for database professional\",\"publisher\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dpriver.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/\",\"url\":\"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/\",\"name\":\"New release: SQL Pretty Printer 3.1.0\",\"isPartOf\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/#website\"},\"datePublished\":\"2010-03-02T04:43:11+00:00\",\"dateModified\":\"2011-09-27T02:49:38+00:00\",\"description\":\"New release: SQL Pretty Printer 3.1.0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.dpriver.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"New release: SQL Pretty Printer 3.1.0\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/\"},\"author\":{\"name\":\"James\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/7bbdbb6e79c5dd9747d08c59d5992b04\"},\"headline\":\"New release: SQL Pretty Printer 3.1.0\",\"datePublished\":\"2010-03-02T04:43:11+00:00\",\"dateModified\":\"2011-09-27T02:49:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/\"},\"wordCount\":730,\"publisher\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/#organization\"},\"keywords\":[\"sqlpp\"],\"articleSection\":[\"release\",\"sql pretty printer\"],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/7bbdbb6e79c5dd9747d08c59d5992b04\",\"name\":\"James\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/eeddf4ca7bdafa37ab025068efdc7302?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/eeddf4ca7bdafa37ab025068efdc7302?s=96&d=mm&r=g\",\"caption\":\"James\"},\"sameAs\":[\"http:\/\/www.dpriver.com\"],\"url\":\"https:\/\/www.dpriver.com\/blog\/author\/james\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"New release: SQL Pretty Printer 3.1.0","description":"New release: SQL Pretty Printer 3.1.0","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.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/","og_locale":"en_US","og_type":"article","og_title":"New release: SQL Pretty Printer 3.1.0","og_description":"New release: SQL Pretty Printer 3.1.0","og_url":"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/","og_site_name":"SQL and Data Blog","article_published_time":"2010-03-02T04:43:11+00:00","article_modified_time":"2011-09-27T02:49:38+00:00","og_image":[{"url":"http:\/\/www.dpriver.com\/images\/screenshots\/portable_version_2010_02_25.png"}],"author":"James","twitter_card":"summary_large_image","twitter_misc":{"Written by":"James","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.dpriver.com\/blog\/#organization","name":"SQL and Data Blog","url":"https:\/\/www.dpriver.com\/blog\/","sameAs":[],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dpriver.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2022\/07\/sqlpp-character.png","contentUrl":"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2022\/07\/sqlpp-character.png","width":251,"height":72,"caption":"SQL and Data Blog"},"image":{"@id":"https:\/\/www.dpriver.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"WebSite","@id":"https:\/\/www.dpriver.com\/blog\/#website","url":"https:\/\/www.dpriver.com\/blog\/","name":"SQL and Data Blog","description":"SQL related blog for database professional","publisher":{"@id":"https:\/\/www.dpriver.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dpriver.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/","url":"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/","name":"New release: SQL Pretty Printer 3.1.0","isPartOf":{"@id":"https:\/\/www.dpriver.com\/blog\/#website"},"datePublished":"2010-03-02T04:43:11+00:00","dateModified":"2011-09-27T02:49:38+00:00","description":"New release: SQL Pretty Printer 3.1.0","breadcrumb":{"@id":"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dpriver.com\/blog\/"},{"@type":"ListItem","position":2,"name":"New release: SQL Pretty Printer 3.1.0"}]},{"@type":"Article","@id":"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/#article","isPartOf":{"@id":"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/"},"author":{"name":"James","@id":"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/7bbdbb6e79c5dd9747d08c59d5992b04"},"headline":"New release: SQL Pretty Printer 3.1.0","datePublished":"2010-03-02T04:43:11+00:00","dateModified":"2011-09-27T02:49:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dpriver.com\/blog\/2010\/03\/new-release-sql-pretty-printer-3-1-0\/"},"wordCount":730,"publisher":{"@id":"https:\/\/www.dpriver.com\/blog\/#organization"},"keywords":["sqlpp"],"articleSection":["release","sql pretty printer"],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/7bbdbb6e79c5dd9747d08c59d5992b04","name":"James","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/eeddf4ca7bdafa37ab025068efdc7302?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eeddf4ca7bdafa37ab025068efdc7302?s=96&d=mm&r=g","caption":"James"},"sameAs":["http:\/\/www.dpriver.com"],"url":"https:\/\/www.dpriver.com\/blog\/author\/james\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/posts\/107"}],"collection":[{"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/comments?post=107"}],"version-history":[{"count":44,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/posts\/107\/revisions"}],"predecessor-version":[{"id":1017,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/posts\/107\/revisions\/1017"}],"wp:attachment":[{"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/media?parent=107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/categories?post=107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/tags?post=107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}