pghero 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/app/assets/javascripts/pghero/application.js +13 -12
- data/app/assets/javascripts/pghero/highlight.min.js +373 -0
- data/app/assets/javascripts/pghero/jquery.js +318 -197
- data/app/assets/javascripts/pghero/nouislider.js +676 -1066
- data/app/assets/stylesheets/pghero/application.css +6 -0
- data/app/assets/stylesheets/pghero/nouislider.css +4 -10
- data/app/controllers/pg_hero/home_controller.rb +30 -9
- data/app/helpers/pg_hero/home_helper.rb +2 -2
- data/app/views/layouts/pg_hero/application.html.erb +1 -1
- data/app/views/pg_hero/home/_query_stats_slider.html.erb +6 -6
- data/app/views/pg_hero/home/connections.html.erb +6 -6
- data/app/views/pg_hero/home/index.html.erb +3 -1
- data/app/views/pg_hero/home/relation_space.html.erb +1 -1
- data/app/views/pg_hero/home/show_query.html.erb +16 -12
- data/app/views/pg_hero/home/space.html.erb +44 -40
- data/app/views/pg_hero/home/system.html.erb +6 -6
- data/lib/generators/pghero/query_stats_generator.rb +1 -0
- data/lib/generators/pghero/space_stats_generator.rb +1 -0
- data/lib/pghero/engine.rb +1 -1
- data/lib/pghero/methods/basic.rb +5 -8
- data/lib/pghero/methods/connections.rb +4 -4
- data/lib/pghero/methods/constraints.rb +1 -1
- data/lib/pghero/methods/indexes.rb +8 -8
- data/lib/pghero/methods/kill.rb +1 -1
- data/lib/pghero/methods/maintenance.rb +3 -3
- data/lib/pghero/methods/queries.rb +2 -2
- data/lib/pghero/methods/query_stats.rb +16 -17
- data/lib/pghero/methods/replication.rb +2 -2
- data/lib/pghero/methods/sequences.rb +2 -2
- data/lib/pghero/methods/space.rb +15 -10
- data/lib/pghero/methods/suggested_indexes.rb +2 -2
- data/lib/pghero/methods/tables.rb +4 -5
- data/lib/pghero/version.rb +1 -1
- data/lib/pghero.rb +2 -0
- metadata +3 -3
- data/app/assets/javascripts/pghero/highlight.pack.js +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcc43819e4fd46df067329130dd1ec05ba31e607979711246b6d2c9fea15f1a5
|
4
|
+
data.tar.gz: b7903e303e496b128328c42c2ed636fd81f339942972989ff6a3d32c6fcce5c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ab511f84766e4edffa56e7e066d17514bf77648b618e2836097d73cc83bb8816a21cb0880cf29dfcf000785a14a1bf2149b930f854b7e0a1a4144a37889246c
|
7
|
+
data.tar.gz: 80039f617b1ced77237f4395dca4c87fdbfdcd3a03675eb5a1c40de326c7fd053b459f4783a3e38104e06509b15caad9e409181fc1e7baedceb29e024c708660
|
data/CHANGELOG.md
CHANGED
@@ -2,11 +2,12 @@
|
|
2
2
|
//= require ./nouislider
|
3
3
|
//= require ./Chart.bundle
|
4
4
|
//= require ./chartkick
|
5
|
-
//= require ./highlight.
|
5
|
+
//= require ./highlight.min
|
6
6
|
|
7
7
|
function highlightQueries() {
|
8
|
-
$("pre code").each(function(i, block) {
|
9
|
-
|
8
|
+
$("pre code").each(function (i, block) {
|
9
|
+
$(block).addClass("language-pgsql");
|
10
|
+
hljs.highlightElement(block);
|
10
11
|
});
|
11
12
|
}
|
12
13
|
|
@@ -45,9 +46,9 @@ function initSlider() {
|
|
45
46
|
});
|
46
47
|
|
47
48
|
// remove outline for mouse only
|
48
|
-
$(".noUi-handle").mousedown(function() {
|
49
|
+
$(".noUi-handle").mousedown(function () {
|
49
50
|
$(this).addClass("no-outline");
|
50
|
-
}).blur(function() {
|
51
|
+
}).blur(function () {
|
51
52
|
$(this).removeClass("no-outline");
|
52
53
|
});
|
53
54
|
|
@@ -61,14 +62,14 @@ function initSlider() {
|
|
61
62
|
var time = timeAt(offset);
|
62
63
|
|
63
64
|
var html = "";
|
64
|
-
if (time
|
65
|
-
if (selector
|
65
|
+
if (time === now) {
|
66
|
+
if (selector === "#range-end") {
|
66
67
|
html = "Now";
|
67
68
|
}
|
68
69
|
} else {
|
69
70
|
html = time.getDate() + " " + months[time.getMonth()] + " " + pad(time.getHours()) + ":" + pad(time.getMinutes());
|
70
71
|
}
|
71
|
-
$(selector).
|
72
|
+
$(selector).text(html);
|
72
73
|
}
|
73
74
|
|
74
75
|
function timeAt(offset) {
|
@@ -77,7 +78,7 @@ function initSlider() {
|
|
77
78
|
}
|
78
79
|
|
79
80
|
function timeParam(time) {
|
80
|
-
return time.toISOString();
|
81
|
+
return time.toISOString().replace(/\.000Z$/, "Z");
|
81
82
|
}
|
82
83
|
|
83
84
|
function queriesPath(params) {
|
@@ -115,7 +116,7 @@ function initSlider() {
|
|
115
116
|
|
116
117
|
var path = queriesPath(params);
|
117
118
|
|
118
|
-
$(".queries-table th a").each(
|
119
|
+
$(".queries-table th a").each(function () {
|
119
120
|
var p = $.extend({}, params, {sort: $(this).data("sort"), min_average_time: minAverageTime, min_calls: minCalls, debug: debug});
|
120
121
|
if (!p.sort) {
|
121
122
|
delete p.sort;
|
@@ -135,7 +136,7 @@ function initSlider() {
|
|
135
136
|
|
136
137
|
var callback = function (response, status, xhr) {
|
137
138
|
if (status === "error" ) {
|
138
|
-
$(".queries-info").css("color", "red").
|
139
|
+
$(".queries-info").css("color", "red").text(xhr.status + " " + xhr.statusText);
|
139
140
|
} else {
|
140
141
|
highlightQueries();
|
141
142
|
}
|
@@ -152,7 +153,7 @@ function initSlider() {
|
|
152
153
|
refreshStats(true);
|
153
154
|
});
|
154
155
|
updateText();
|
155
|
-
$(
|
156
|
+
$(function () {
|
156
157
|
refreshStats(false);
|
157
158
|
});
|
158
159
|
}
|
@@ -0,0 +1,373 @@
|
|
1
|
+
/*!
|
2
|
+
Highlight.js v11.7.0 (git: 82688fad18)
|
3
|
+
(c) 2006-2022 undefined and other contributors
|
4
|
+
License: BSD-3-Clause
|
5
|
+
*/
|
6
|
+
var hljs=function(){"use strict";var e={exports:{}};function t(e){
|
7
|
+
return e instanceof Map?e.clear=e.delete=e.set=()=>{
|
8
|
+
throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{
|
9
|
+
throw Error("set is read-only")
|
10
|
+
}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((n=>{var i=e[n]
|
11
|
+
;"object"!=typeof i||Object.isFrozen(i)||t(i)})),e}
|
12
|
+
e.exports=t,e.exports.default=t;class n{constructor(e){
|
13
|
+
void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}
|
14
|
+
ignoreMatch(){this.isMatchIgnored=!0}}function i(e){
|
15
|
+
return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")
|
16
|
+
}function r(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]
|
17
|
+
;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}
|
18
|
+
const s=e=>!!e.scope||e.sublanguage&&e.language;class o{constructor(e,t){
|
19
|
+
this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){
|
20
|
+
this.buffer+=i(e)}openNode(e){if(!s(e))return;let t=""
|
21
|
+
;t=e.sublanguage?"language-"+e.language:((e,{prefix:t})=>{if(e.includes(".")){
|
22
|
+
const n=e.split(".")
|
23
|
+
;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")
|
24
|
+
}return`${t}${e}`})(e.scope,{prefix:this.classPrefix}),this.span(t)}
|
25
|
+
closeNode(e){s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){
|
26
|
+
this.buffer+=`<span class="${e}">`}}const a=(e={})=>{const t={children:[]}
|
27
|
+
;return Object.assign(t,e),t};class c{constructor(){
|
28
|
+
this.rootNode=a(),this.stack=[this.rootNode]}get top(){
|
29
|
+
return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){
|
30
|
+
this.top.children.push(e)}openNode(e){const t=a({scope:e})
|
31
|
+
;this.add(t),this.stack.push(t)}closeNode(){
|
32
|
+
if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){
|
33
|
+
for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}
|
34
|
+
walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){
|
35
|
+
return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),
|
36
|
+
t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){
|
37
|
+
"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{
|
38
|
+
c._collapse(e)})))}}class l extends c{constructor(e){super(),this.options=e}
|
39
|
+
addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}
|
40
|
+
addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root
|
41
|
+
;n.sublanguage=!0,n.language=t,this.add(n)}toHTML(){
|
42
|
+
return new o(this,this.options).value()}finalize(){return!0}}function g(e){
|
43
|
+
return e?"string"==typeof e?e:e.source:null}function d(e){return p("(?=",e,")")}
|
44
|
+
function u(e){return p("(?:",e,")*")}function h(e){return p("(?:",e,")?")}
|
45
|
+
function p(...e){return e.map((e=>g(e))).join("")}function f(...e){const t=(e=>{
|
46
|
+
const t=e[e.length-1]
|
47
|
+
;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}
|
48
|
+
})(e);return"("+(t.capture?"":"?:")+e.map((e=>g(e))).join("|")+")"}
|
49
|
+
function b(e){return RegExp(e.toString()+"|").exec("").length-1}
|
50
|
+
const m=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
|
51
|
+
;function E(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n
|
52
|
+
;let i=g(e),r="";for(;i.length>0;){const e=m.exec(i);if(!e){r+=i;break}
|
53
|
+
r+=i.substring(0,e.index),
|
54
|
+
i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+t):(r+=e[0],
|
55
|
+
"("===e[0]&&n++)}return r})).map((e=>`(${e})`)).join(t)}
|
56
|
+
const x="[a-zA-Z]\\w*",w="[a-zA-Z_]\\w*",y="\\b\\d+(\\.\\d+)?",_="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",O="\\b(0b[01]+)",v={
|
57
|
+
begin:"\\\\[\\s\\S]",relevance:0},N={scope:"string",begin:"'",end:"'",
|
58
|
+
illegal:"\\n",contains:[v]},k={scope:"string",begin:'"',end:'"',illegal:"\\n",
|
59
|
+
contains:[v]},M=(e,t,n={})=>{const i=r({scope:"comment",begin:e,end:t,
|
60
|
+
contains:[]},n);i.contains.push({scope:"doctag",
|
61
|
+
begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
|
62
|
+
end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})
|
63
|
+
;const s=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)
|
64
|
+
;return i.contains.push({begin:p(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i
|
65
|
+
},S=M("//","$"),R=M("/\\*","\\*/"),j=M("#","$");var A=Object.freeze({
|
66
|
+
__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:x,UNDERSCORE_IDENT_RE:w,
|
67
|
+
NUMBER_RE:y,C_NUMBER_RE:_,BINARY_NUMBER_RE:O,
|
68
|
+
RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
|
69
|
+
SHEBANG:(e={})=>{const t=/^#![ ]*\//
|
70
|
+
;return e.binary&&(e.begin=p(t,/.*\b/,e.binary,/\b.*/)),r({scope:"meta",begin:t,
|
71
|
+
end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},
|
72
|
+
BACKSLASH_ESCAPE:v,APOS_STRING_MODE:N,QUOTE_STRING_MODE:k,PHRASAL_WORDS_MODE:{
|
73
|
+
begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
|
74
|
+
},COMMENT:M,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:R,HASH_COMMENT_MODE:j,
|
75
|
+
NUMBER_MODE:{scope:"number",begin:y,relevance:0},C_NUMBER_MODE:{scope:"number",
|
76
|
+
begin:_,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:O,relevance:0},
|
77
|
+
REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,
|
78
|
+
end:/\/[gimuy]*/,illegal:/\n/,contains:[v,{begin:/\[/,end:/\]/,relevance:0,
|
79
|
+
contains:[v]}]}]},TITLE_MODE:{scope:"title",begin:x,relevance:0},
|
80
|
+
UNDERSCORE_TITLE_MODE:{scope:"title",begin:w,relevance:0},METHOD_GUARD:{
|
81
|
+
begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{
|
82
|
+
"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{
|
83
|
+
t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function I(e,t){
|
84
|
+
"."===e.input[e.index-1]&&t.ignoreMatch()}function T(e,t){
|
85
|
+
void 0!==e.className&&(e.scope=e.className,delete e.className)}function L(e,t){
|
86
|
+
t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",
|
87
|
+
e.__beforeBegin=I,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,
|
88
|
+
void 0===e.relevance&&(e.relevance=0))}function B(e,t){
|
89
|
+
Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function D(e,t){
|
90
|
+
if(e.match){
|
91
|
+
if(e.begin||e.end)throw Error("begin & end are not supported with match")
|
92
|
+
;e.begin=e.match,delete e.match}}function H(e,t){
|
93
|
+
void 0===e.relevance&&(e.relevance=1)}const P=(e,t)=>{if(!e.beforeMatch)return
|
94
|
+
;if(e.starts)throw Error("beforeMatch cannot be used with starts")
|
95
|
+
;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]
|
96
|
+
})),e.keywords=n.keywords,e.begin=p(n.beforeMatch,d(n.begin)),e.starts={
|
97
|
+
relevance:0,contains:[Object.assign(n,{endsParent:!0})]
|
98
|
+
},e.relevance=0,delete n.beforeMatch
|
99
|
+
},C=["of","and","for","in","not","or","if","then","parent","list","value"]
|
100
|
+
;function $(e,t,n="keyword"){const i=Object.create(null)
|
101
|
+
;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{
|
102
|
+
Object.assign(i,$(e[n],t,n))})),i;function r(e,n){
|
103
|
+
t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|")
|
104
|
+
;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){
|
105
|
+
return t?Number(t):(e=>C.includes(e.toLowerCase()))(e)?0:1}const z={},K=e=>{
|
106
|
+
console.error(e)},W=(e,...t)=>{console.log("WARN: "+e,...t)},X=(e,t)=>{
|
107
|
+
z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0)
|
108
|
+
},G=Error();function Z(e,t,{key:n}){let i=0;const r=e[n],s={},o={}
|
109
|
+
;for(let e=1;e<=t.length;e++)o[e+i]=r[e],s[e+i]=!0,i+=b(t[e-1])
|
110
|
+
;e[n]=o,e[n]._emit=s,e[n]._multi=!0}function F(e){(e=>{
|
111
|
+
e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,
|
112
|
+
delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={
|
113
|
+
_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope
|
114
|
+
}),(e=>{if(Array.isArray(e.begin)){
|
115
|
+
if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
|
116
|
+
G
|
117
|
+
;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"),
|
118
|
+
G;Z(e,e.begin,{key:"beginScope"}),e.begin=E(e.begin,{joinWith:""})}})(e),(e=>{
|
119
|
+
if(Array.isArray(e.end)){
|
120
|
+
if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
|
121
|
+
G
|
122
|
+
;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"),
|
123
|
+
G;Z(e,e.end,{key:"endScope"}),e.end=E(e.end,{joinWith:""})}})(e)}function V(e){
|
124
|
+
function t(t,n){
|
125
|
+
return RegExp(g(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))
|
126
|
+
}class n{constructor(){
|
127
|
+
this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}
|
128
|
+
addRule(e,t){
|
129
|
+
t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),
|
130
|
+
this.matchAt+=b(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)
|
131
|
+
;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(E(e,{joinWith:"|"
|
132
|
+
}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex
|
133
|
+
;const t=this.matcherRe.exec(e);if(!t)return null
|
134
|
+
;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n]
|
135
|
+
;return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){
|
136
|
+
this.rules=[],this.multiRegexes=[],
|
137
|
+
this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){
|
138
|
+
if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n
|
139
|
+
;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),
|
140
|
+
t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){
|
141
|
+
return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){
|
142
|
+
this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){
|
143
|
+
const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex
|
144
|
+
;let n=t.exec(e)
|
145
|
+
;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{
|
146
|
+
const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}
|
147
|
+
return n&&(this.regexIndex+=n.position+1,
|
148
|
+
this.regexIndex===this.count&&this.considerAll()),n}}
|
149
|
+
if(e.compilerExtensions||(e.compilerExtensions=[]),
|
150
|
+
e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.")
|
151
|
+
;return e.classNameAliases=r(e.classNameAliases||{}),function n(s,o){const a=s
|
152
|
+
;if(s.isCompiled)return a
|
153
|
+
;[T,D,F,P].forEach((e=>e(s,o))),e.compilerExtensions.forEach((e=>e(s,o))),
|
154
|
+
s.__beforeBegin=null,[L,B,H].forEach((e=>e(s,o))),s.isCompiled=!0;let c=null
|
155
|
+
;return"object"==typeof s.keywords&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords),
|
156
|
+
c=s.keywords.$pattern,
|
157
|
+
delete s.keywords.$pattern),c=c||/\w+/,s.keywords&&(s.keywords=$(s.keywords,e.case_insensitive)),
|
158
|
+
a.keywordPatternRe=t(c,!0),
|
159
|
+
o&&(s.begin||(s.begin=/\B|\b/),a.beginRe=t(a.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),
|
160
|
+
s.end&&(a.endRe=t(a.end)),
|
161
|
+
a.terminatorEnd=g(a.end)||"",s.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(s.end?"|":"")+o.terminatorEnd)),
|
162
|
+
s.illegal&&(a.illegalRe=t(s.illegal)),
|
163
|
+
s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>r(e,{
|
164
|
+
variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?r(e,{
|
165
|
+
starts:e.starts?r(e.starts):null
|
166
|
+
}):Object.isFrozen(e)?r(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{n(e,a)
|
167
|
+
})),s.starts&&n(s.starts,o),a.matcher=(e=>{const t=new i
|
168
|
+
;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"
|
169
|
+
}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"
|
170
|
+
}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){
|
171
|
+
return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{
|
172
|
+
constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}
|
173
|
+
const Y=i,Q=r,ee=Symbol("nomatch");var te=(t=>{
|
174
|
+
const i=Object.create(null),r=Object.create(null),s=[];let o=!0
|
175
|
+
;const a="Could not find the language '{}', did you forget to load/include a language module?",c={
|
176
|
+
disableAutodetect:!0,name:"Plain text",contains:[]};let g={
|
177
|
+
ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,
|
178
|
+
languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",
|
179
|
+
cssSelector:"pre code",languages:null,__emitter:l};function b(e){
|
180
|
+
return g.noHighlightRe.test(e)}function m(e,t,n){let i="",r=""
|
181
|
+
;"object"==typeof t?(i=e,
|
182
|
+
n=t.ignoreIllegals,r=t.language):(X("10.7.0","highlight(lang, code, ...args) has been deprecated."),
|
183
|
+
X("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
|
184
|
+
r=e,i=t),void 0===n&&(n=!0);const s={code:i,language:r};k("before:highlight",s)
|
185
|
+
;const o=s.result?s.result:E(s.language,s.code,n)
|
186
|
+
;return o.code=s.code,k("after:highlight",o),o}function E(e,t,r,s){
|
187
|
+
const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(S)
|
188
|
+
;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(S),n=""
|
189
|
+
;for(;t;){n+=S.substring(e,t.index)
|
190
|
+
;const r=y.case_insensitive?t[0].toLowerCase():t[0],s=(i=r,N.keywords[i]);if(s){
|
191
|
+
const[e,i]=s
|
192
|
+
;if(M.addText(n),n="",c[r]=(c[r]||0)+1,c[r]<=7&&(R+=i),e.startsWith("_"))n+=t[0];else{
|
193
|
+
const n=y.classNameAliases[e]||e;M.addKeyword(t[0],n)}}else n+=t[0]
|
194
|
+
;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(S)}var i
|
195
|
+
;n+=S.substring(e),M.addText(n)}function d(){null!=N.subLanguage?(()=>{
|
196
|
+
if(""===S)return;let e=null;if("string"==typeof N.subLanguage){
|
197
|
+
if(!i[N.subLanguage])return void M.addText(S)
|
198
|
+
;e=E(N.subLanguage,S,!0,k[N.subLanguage]),k[N.subLanguage]=e._top
|
199
|
+
}else e=x(S,N.subLanguage.length?N.subLanguage:null)
|
200
|
+
;N.relevance>0&&(R+=e.relevance),M.addSublanguage(e._emitter,e.language)
|
201
|
+
})():l(),S=""}function u(e,t){let n=1;const i=t.length-1;for(;n<=i;){
|
202
|
+
if(!e._emit[n]){n++;continue}const i=y.classNameAliases[e[n]]||e[n],r=t[n]
|
203
|
+
;i?M.addKeyword(r,i):(S=r,l(),S=""),n++}}function h(e,t){
|
204
|
+
return e.scope&&"string"==typeof e.scope&&M.openNode(y.classNameAliases[e.scope]||e.scope),
|
205
|
+
e.beginScope&&(e.beginScope._wrap?(M.addKeyword(S,y.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),
|
206
|
+
S=""):e.beginScope._multi&&(u(e.beginScope,t),S="")),N=Object.create(e,{parent:{
|
207
|
+
value:N}}),N}function p(e,t,i){let r=((e,t)=>{const n=e&&e.exec(t)
|
208
|
+
;return n&&0===n.index})(e.endRe,i);if(r){if(e["on:end"]){const i=new n(e)
|
209
|
+
;e["on:end"](t,i),i.isMatchIgnored&&(r=!1)}if(r){
|
210
|
+
for(;e.endsParent&&e.parent;)e=e.parent;return e}}
|
211
|
+
if(e.endsWithParent)return p(e.parent,t,i)}function f(e){
|
212
|
+
return 0===N.matcher.regexIndex?(S+=e[0],1):(I=!0,0)}function b(e){
|
213
|
+
const n=e[0],i=t.substring(e.index),r=p(N,e,i);if(!r)return ee;const s=N
|
214
|
+
;N.endScope&&N.endScope._wrap?(d(),
|
215
|
+
M.addKeyword(n,N.endScope._wrap)):N.endScope&&N.endScope._multi?(d(),
|
216
|
+
u(N.endScope,e)):s.skip?S+=n:(s.returnEnd||s.excludeEnd||(S+=n),
|
217
|
+
d(),s.excludeEnd&&(S=n));do{
|
218
|
+
N.scope&&M.closeNode(),N.skip||N.subLanguage||(R+=N.relevance),N=N.parent
|
219
|
+
}while(N!==r.parent);return r.starts&&h(r.starts,e),s.returnEnd?0:n.length}
|
220
|
+
let m={};function w(i,s){const a=s&&s[0];if(S+=i,null==a)return d(),0
|
221
|
+
;if("begin"===m.type&&"end"===s.type&&m.index===s.index&&""===a){
|
222
|
+
if(S+=t.slice(s.index,s.index+1),!o){const t=Error(`0 width match regex (${e})`)
|
223
|
+
;throw t.languageName=e,t.badRule=m.rule,t}return 1}
|
224
|
+
if(m=s,"begin"===s.type)return(e=>{
|
225
|
+
const t=e[0],i=e.rule,r=new n(i),s=[i.__beforeBegin,i["on:begin"]]
|
226
|
+
;for(const n of s)if(n&&(n(e,r),r.isMatchIgnored))return f(t)
|
227
|
+
;return i.skip?S+=t:(i.excludeBegin&&(S+=t),
|
228
|
+
d(),i.returnBegin||i.excludeBegin||(S=t)),h(i,e),i.returnBegin?0:t.length})(s)
|
229
|
+
;if("illegal"===s.type&&!r){
|
230
|
+
const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"')
|
231
|
+
;throw e.mode=N,e}if("end"===s.type){const e=b(s);if(e!==ee)return e}
|
232
|
+
if("illegal"===s.type&&""===a)return 1
|
233
|
+
;if(A>1e5&&A>3*s.index)throw Error("potential infinite loop, way more iterations than matches")
|
234
|
+
;return S+=a,a.length}const y=O(e)
|
235
|
+
;if(!y)throw K(a.replace("{}",e)),Error('Unknown language: "'+e+'"')
|
236
|
+
;const _=V(y);let v="",N=s||_;const k={},M=new g.__emitter(g);(()=>{const e=[]
|
237
|
+
;for(let t=N;t!==y;t=t.parent)t.scope&&e.unshift(t.scope)
|
238
|
+
;e.forEach((e=>M.openNode(e)))})();let S="",R=0,j=0,A=0,I=!1;try{
|
239
|
+
for(N.matcher.considerAll();;){
|
240
|
+
A++,I?I=!1:N.matcher.considerAll(),N.matcher.lastIndex=j
|
241
|
+
;const e=N.matcher.exec(t);if(!e)break;const n=w(t.substring(j,e.index),e)
|
242
|
+
;j=e.index+n}
|
243
|
+
return w(t.substring(j)),M.closeAllNodes(),M.finalize(),v=M.toHTML(),{
|
244
|
+
language:e,value:v,relevance:R,illegal:!1,_emitter:M,_top:N}}catch(n){
|
245
|
+
if(n.message&&n.message.includes("Illegal"))return{language:e,value:Y(t),
|
246
|
+
illegal:!0,relevance:0,_illegalBy:{message:n.message,index:j,
|
247
|
+
context:t.slice(j-100,j+100),mode:n.mode,resultSoFar:v},_emitter:M};if(o)return{
|
248
|
+
language:e,value:Y(t),illegal:!1,relevance:0,errorRaised:n,_emitter:M,_top:N}
|
249
|
+
;throw n}}function x(e,t){t=t||g.languages||Object.keys(i);const n=(e=>{
|
250
|
+
const t={value:Y(e),illegal:!1,relevance:0,_top:c,_emitter:new g.__emitter(g)}
|
251
|
+
;return t._emitter.addText(e),t})(e),r=t.filter(O).filter(N).map((t=>E(t,e,!1)))
|
252
|
+
;r.unshift(n);const s=r.sort(((e,t)=>{
|
253
|
+
if(e.relevance!==t.relevance)return t.relevance-e.relevance
|
254
|
+
;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1
|
255
|
+
;if(O(t.language).supersetOf===e.language)return-1}return 0})),[o,a]=s,l=o
|
256
|
+
;return l.secondBest=a,l}function w(e){let t=null;const n=(e=>{
|
257
|
+
let t=e.className+" ";t+=e.parentNode?e.parentNode.className:""
|
258
|
+
;const n=g.languageDetectRe.exec(t);if(n){const t=O(n[1])
|
259
|
+
;return t||(W(a.replace("{}",n[1])),
|
260
|
+
W("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}
|
261
|
+
return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return
|
262
|
+
;if(k("before:highlightElement",{el:e,language:n
|
263
|
+
}),e.children.length>0&&(g.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
|
264
|
+
console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),
|
265
|
+
console.warn("The element with unescaped HTML:"),
|
266
|
+
console.warn(e)),g.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML)
|
267
|
+
;t=e;const i=t.textContent,s=n?m(i,{language:n,ignoreIllegals:!0}):x(i)
|
268
|
+
;e.innerHTML=s.value,((e,t,n)=>{const i=t&&r[t]||n
|
269
|
+
;e.classList.add("hljs"),e.classList.add("language-"+i)
|
270
|
+
})(e,n,s.language),e.result={language:s.language,re:s.relevance,
|
271
|
+
relevance:s.relevance},s.secondBest&&(e.secondBest={
|
272
|
+
language:s.secondBest.language,relevance:s.secondBest.relevance
|
273
|
+
}),k("after:highlightElement",{el:e,result:s,text:i})}let y=!1;function _(){
|
274
|
+
"loading"!==document.readyState?document.querySelectorAll(g.cssSelector).forEach(w):y=!0
|
275
|
+
}function O(e){return e=(e||"").toLowerCase(),i[e]||i[r[e]]}
|
276
|
+
function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
|
277
|
+
r[e.toLowerCase()]=t}))}function N(e){const t=O(e)
|
278
|
+
;return t&&!t.disableAutodetect}function k(e,t){const n=e;s.forEach((e=>{
|
279
|
+
e[n]&&e[n](t)}))}
|
280
|
+
"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{
|
281
|
+
y&&_()}),!1),Object.assign(t,{highlight:m,highlightAuto:x,highlightAll:_,
|
282
|
+
highlightElement:w,
|
283
|
+
highlightBlock:e=>(X("10.7.0","highlightBlock will be removed entirely in v12.0"),
|
284
|
+
X("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{g=Q(g,e)},
|
285
|
+
initHighlighting:()=>{
|
286
|
+
_(),X("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},
|
287
|
+
initHighlightingOnLoad:()=>{
|
288
|
+
_(),X("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")
|
289
|
+
},registerLanguage:(e,n)=>{let r=null;try{r=n(t)}catch(t){
|
290
|
+
if(K("Language definition for '{}' could not be registered.".replace("{}",e)),
|
291
|
+
!o)throw t;K(t),r=c}
|
292
|
+
r.name||(r.name=e),i[e]=r,r.rawDefinition=n.bind(null,t),r.aliases&&v(r.aliases,{
|
293
|
+
languageName:e})},unregisterLanguage:e=>{delete i[e]
|
294
|
+
;for(const t of Object.keys(r))r[t]===e&&delete r[t]},
|
295
|
+
listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v,
|
296
|
+
autoDetection:N,inherit:Q,addPlugin:e=>{(e=>{
|
297
|
+
e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{
|
298
|
+
e["before:highlightBlock"](Object.assign({block:t.el},t))
|
299
|
+
}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{
|
300
|
+
e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),s.push(e)}
|
301
|
+
}),t.debugMode=()=>{o=!1},t.safeMode=()=>{o=!0
|
302
|
+
},t.versionString="11.7.0",t.regex={concat:p,lookahead:d,either:f,optional:h,
|
303
|
+
anyNumberOfTimes:u};for(const t in A)"object"==typeof A[t]&&e.exports(A[t])
|
304
|
+
;return Object.assign(t,A),t})({});return te}()
|
305
|
+
;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `pgsql` grammar compiled for Highlight.js 11.7.0 */
|
306
|
+
(()=>{var E=(()=>{"use strict";return E=>{
|
307
|
+
const T=E.COMMENT("--","$"),N="\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$",A="BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ",R=A.trim().split(" ").map((E=>E.split("|")[0])).join("|"),I="ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY INET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST".split(" ").map((E=>E.split("|")[0])).join("|")
|
308
|
+
;return{name:"PostgreSQL",aliases:["postgres","postgresql"],supersetOf:"sql",
|
309
|
+
case_insensitive:!0,keywords:{
|
310
|
+
keyword:"ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ",
|
311
|
+
built_in:"CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED "
|
312
|
+
},illegal:/:==|\W\s*\(\*|(^|\s)\$[a-z]|\{\{|[a-z]:\s*$|\.\.\.|TO:|DO:/,
|
313
|
+
contains:[{className:"keyword",variants:[{begin:/\bTEXT\s*SEARCH\b/},{
|
314
|
+
begin:/\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/},{
|
315
|
+
begin:/\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/},{
|
316
|
+
begin:/\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/},{
|
317
|
+
begin:/\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/},{begin:/\bNULLS\s+(FIRST|LAST)\b/},{
|
318
|
+
begin:/\bEVENT\s+TRIGGER\b/},{begin:/\b(MAPPING|OR)\s+REPLACE\b/},{
|
319
|
+
begin:/\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/},{
|
320
|
+
begin:/\b(SHARE|EXCLUSIVE)\s+MODE\b/},{
|
321
|
+
begin:/\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/},{
|
322
|
+
begin:/\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/
|
323
|
+
},{begin:/\bPRESERVE\s+ROWS\b/},{begin:/\bDISCARD\s+PLANS\b/},{
|
324
|
+
begin:/\bREFERENCING\s+(OLD|NEW)\b/},{begin:/\bSKIP\s+LOCKED\b/},{
|
325
|
+
begin:/\bGROUPING\s+SETS\b/},{
|
326
|
+
begin:/\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/},{
|
327
|
+
begin:/\b(WITH|WITHOUT)\s+HOLD\b/},{
|
328
|
+
begin:/\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/},{
|
329
|
+
begin:/\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/},{
|
330
|
+
begin:/\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/},{
|
331
|
+
begin:/\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/},{begin:/\bIS\s+(NOT\s+)?UNKNOWN\b/
|
332
|
+
},{begin:/\bSECURITY\s+LABEL\b/},{begin:/\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/
|
333
|
+
},{begin:/\bWITH\s+(NO\s+)?DATA\b/},{begin:/\b(FOREIGN|SET)\s+DATA\b/},{
|
334
|
+
begin:/\bSET\s+(CATALOG|CONSTRAINTS)\b/},{begin:/\b(WITH|FOR)\s+ORDINALITY\b/},{
|
335
|
+
begin:/\bIS\s+(NOT\s+)?DOCUMENT\b/},{
|
336
|
+
begin:/\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/},{
|
337
|
+
begin:/\b(STRIP|PRESERVE)\s+WHITESPACE\b/},{
|
338
|
+
begin:/\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/},{
|
339
|
+
begin:/\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/},{begin:/\bAT\s+TIME\s+ZONE\b/},{
|
340
|
+
begin:/\bGRANTED\s+BY\b/},{begin:/\bRETURN\s+(QUERY|NEXT)\b/},{
|
341
|
+
begin:/\b(ATTACH|DETACH)\s+PARTITION\b/},{
|
342
|
+
begin:/\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/},{
|
343
|
+
begin:/\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/
|
344
|
+
},{begin:/\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/}]},{
|
345
|
+
begin:/\b(FORMAT|FAMILY|VERSION)\s*\(/},{begin:/\bINCLUDE\s*\(/,
|
346
|
+
keywords:"INCLUDE"},{begin:/\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/
|
347
|
+
},{
|
348
|
+
begin:/\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/
|
349
|
+
},{begin:/\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,relevance:10},{
|
350
|
+
begin:/\bEXTRACT\s*\(/,end:/\bFROM\b/,returnEnd:!0,keywords:{
|
351
|
+
type:"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR"
|
352
|
+
}},{begin:/\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,keywords:{keyword:"NAME"}},{
|
353
|
+
begin:/\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,keywords:{
|
354
|
+
keyword:"DOCUMENT CONTENT"}},{beginKeywords:"CACHE INCREMENT MAXVALUE MINVALUE",
|
355
|
+
end:E.C_NUMBER_RE,returnEnd:!0,keywords:"BY CACHE INCREMENT MAXVALUE MINVALUE"
|
356
|
+
},{className:"type",begin:/\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/},{className:"type",
|
357
|
+
begin:/\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/
|
358
|
+
},{
|
359
|
+
begin:/\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/,
|
360
|
+
keywords:{keyword:"RETURNS",
|
361
|
+
type:"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER"
|
362
|
+
}},{begin:"\\b("+I+")\\s*\\("},{begin:"\\.("+R+")\\b"},{
|
363
|
+
begin:"\\b("+R+")\\s+PATH\\b",keywords:{keyword:"PATH",
|
364
|
+
type:A.replace("PATH ","")}},{className:"type",begin:"\\b("+R+")\\b"},{
|
365
|
+
className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{
|
366
|
+
className:"string",begin:"(e|E|u&|U&)'",end:"'",contains:[{begin:"\\\\."}],
|
367
|
+
relevance:10},E.END_SAME_AS_BEGIN({begin:N,end:N,contains:[{
|
368
|
+
subLanguage:["pgsql","perl","python","tcl","r","lua","java","php","ruby","bash","scheme","xml","json"],
|
369
|
+
endsWithParent:!0}]}),{begin:'"',end:'"',contains:[{begin:'""'}]
|
370
|
+
},E.C_NUMBER_MODE,E.C_BLOCK_COMMENT_MODE,T,{className:"meta",variants:[{
|
371
|
+
begin:"%(ROW)?TYPE",relevance:10},{begin:"\\$\\d+"},{begin:"^#\\w",end:"$"}]},{
|
372
|
+
className:"symbol",begin:"<<\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\s*>>",relevance:10}]}}
|
373
|
+
})();hljs.registerLanguage("pgsql",E)})();
|