http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/f2180b8f/exec/java-exec/src/main/resources/rest/static/js/respond.min.js ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/static/js/respond.min.js b/exec/java-exec/src/main/resources/rest/static/js/respond.min.js new file mode 100644 index 0000000..80a7b69 --- /dev/null +++ b/exec/java-exec/src/main/resources/rest/static/js/respond.min.js @@ -0,0 +1,5 @@ +/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl + * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT + * */ + +!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?: o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeC hild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substr ing(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&(" //"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this); \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/f2180b8f/exec/java-exec/src/main/resources/rest/storage/update.ftl ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/storage/update.ftl b/exec/java-exec/src/main/resources/rest/storage/update.ftl index 1b3316a..2a276e1 100644 --- a/exec/java-exec/src/main/resources/rest/storage/update.ftl +++ b/exec/java-exec/src/main/resources/rest/storage/update.ftl @@ -11,7 +11,7 @@ <#include "*/generic.ftl"> <#macro page_head> - <script src="http://malsup.github.com/jquery.form.js"></script> + <script src="/static/js/jquery.form.js"></script> </#macro> <#macro page_body> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/f2180b8f/exec/java-exec/src/main/resources/rest/www/drill.ico ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/www/drill.ico b/exec/java-exec/src/main/resources/rest/www/drill.ico deleted file mode 100644 index 0f9654e..0000000 Binary files a/exec/java-exec/src/main/resources/rest/www/drill.ico and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/f2180b8f/exec/java-exec/src/main/resources/rest/www/graph.js ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/resources/rest/www/graph.js b/exec/java-exec/src/main/resources/rest/www/graph.js deleted file mode 100644 index 2d38e63..0000000 --- a/exec/java-exec/src/main/resources/rest/www/graph.js +++ /dev/null @@ -1,313 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor - * license agreements. See the NOTICE file distributed with this work for additional - * information regarding copyright ownership. The ASF licenses this file to - * You under the Apache License, Version 2.0 (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required - * by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS - * OF ANY KIND, either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - */ - -$(window).load(function () { - // for each record, unroll the array pointed to by "fieldpath" into a new - // record for each element of the array - function unnest (table, fieldpath, dest) { - var faccess = accessor(fieldpath); - return $.map(table, function (record, index) { - var ra = []; - var nested = faccess(record); - for (var i = 0; i < nested.length; i++) { - var newrec = $.extend({}, record); - newrec[dest] = nested[i]; - ra.push(newrec); - } - return ra; - }); - } - - // for each record, project "fieldpath" into "dest". - function extract (table, fieldpath, dest) { - var faccess = accessor(fieldpath); - return $.map(table, function (record, index) { - var newrec = $.extend({}, record); - newrec[dest] = faccess(newrec); - return newrec; - }); - } - - // creates a function that will traverse tree of objects based the '.' - // delimited "path" - function accessor (path) { - path = path.split("."); - return function (obj) { - for (var i = 0; i < path.length; i++) - obj = obj[path[i]]; - return obj; - } - } - - // sample use of unnest/extract - function extractminortimes (profile) { - var t1 = unnest([profile], "fragmentProfile", "ma"); - var t2 = unnest(t1, "ma.minorFragmentProfile", "mi"); - - var timetable = $.map(t2, function (record, index) { - var newrec = { - "name" : record.ma.majorFragmentId + "-" + - record.mi.minorFragmentId, - "category" : record.ma.majorFragmentId, - "start" : (record.mi.startTime - record.start) / 1000.0, - "end" : (record.mi.endTime - record.start) / 1000.0 - }; - return newrec; - }); - - timetable.sort(function (r1, r2) { - if (r1.category == r2.category) { - //return r1.name > r2.name; - return r1.end - r1.start > r2.end - r2.start ? 1 : -1; - } - else return r1.category > r2.category ? 1 : -1; - - }); - return timetable; - } - - // write the "fieldpaths" for the table "table" into the "domtable" - function builddomtable (domtable, table, fieldpaths) { - var faccessors = $.map(fieldpaths, function (d, i) { - return accessor(d); - }); - - var domrow = domtable.append("tr"); - for (var i = 0; i < fieldpaths.length; i++) - domrow.append("th").text(fieldpaths[i]); - for (var i = 0; i < table.length; i++) { - domrow = domtable.append("tr"); - for (var j = 0; j < faccessors.length; j++) - domrow.append("td").text(faccessors[j](table[i])); - } - } - - // parse the short physical plan into a dagreeD3 structure - function parseplan (planstring) { - var g = new dagreD3.Digraph(); - var ps = $.map(planstring.trim().split("\n"), function (s) { - return [/^([0-9-]+)( *)([a-zA-Z]*)/.exec(s).slice(1)]; - }); - - // nodes - for (var i = 0; i < ps.length; i++) { - g.addNode(ps[i][0], { - label: ps[i][2] + " " + ps[i][0], - fragment: parseInt(ps[i][0].split("-")[0]) - }); - } - - // edges - var st = [ps[0]]; - for (var i = 1; i < ps.length; i++) { - var top = st.pop(); - while (top[1].length >= ps[i][1].length) - top = st.pop(); - - g.addEdge(null, ps[i][0], top[0]); - - if (ps[i][1].length != top[1].length) - st.push(top); - if (ps[i][1].length >= top[1].length) - st.push(ps[i]); - } - return g; - } - - // graph a "planstring" into the d3 svg handle "svg" - function buildplangraph (svg, planstring) { - var padding = 20; - var graph = parseplan(planstring); - - var renderer = new dagreD3.Renderer(); - renderer.zoom(function () {return function (graph, root) {}}); - - var oldDrawNodes = renderer.drawNodes(); - renderer.drawNodes(function(graph, root) { - var svgNodes = oldDrawNodes(graph, root); - svgNodes.each(function(u) { - var fc = d3.rgb(globalconfig.majorcolorscale(graph.node(u).fragment)); - d3.select(this).select("rect") - .style("fill", graph.node(u).label.split(" ")[0].endsWith("Exchange") ? "white" : fc) - .style("stroke", "#000") - .style("stroke-width", "1px") - }); - return svgNodes; - }); - - var oldDrawEdgePaths = renderer.drawEdgePaths(); - renderer.drawEdgePaths(function(graph, root) { - var svgEdgePaths = oldDrawEdgePaths(graph, root); - svgEdgePaths.each(function(u) { - d3.select(this).select("path") - .style("fill", "none") - .style("stroke", "#000") - .style("stroke-width", "1px") - }); - return svgEdgePaths; - }); - - var shiftedgroup = svg.append("g") - .attr("transform", "translate(" + padding + "," + padding + ")"); - var layout = dagreD3.layout().nodeSep(20).rankDir("BT"); - var result = renderer.layout(layout).run(graph, shiftedgroup); - - svg.attr("width", result.graph().width + 2 * padding) - .attr("height", result.graph().height + 2 * padding); - } - - function buildtimingchart (svgdest, timetable) { - var chartprops = { - "w" : 800, - "h" : -1, - "svg" : svgdest, - "bheight" : 2, - "bpad" : 0, - "margin" : 50, - "scaler" : null, - "colorer" : null, - }; - - chartprops.h = timetable.length * (chartprops.bheight + chartprops.bpad * 2) - - chartprops.svg - .attr("width", chartprops.w + 2 * chartprops.margin) - .attr("height", chartprops.h + 2 * chartprops.margin) - .attr("class", "svg"); - - chartprops.scaler = d3.scale.linear() - .domain([d3.min(timetable, accessor("start")), - d3.max(timetable, accessor("end"))]) - .range([0, chartprops.w - chartprops.bpad * 2]); - chartprops.colorer = globalconfig.majorcolorscale; - - // backdrop - chartprops.svg.append("g") - .selectAll("rect") - .data(timetable) - .enter() - .append("rect") - .attr("x", 0) - .attr("y", function(d, i) {return i * (chartprops.bheight + 2 * chartprops.bpad);}) - .attr("width", chartprops.w) - .attr("height", chartprops.bheight + chartprops.bpad * 2) - .attr("stroke", "none") - .attr("fill", function(d) {return d3.rgb(chartprops.colorer(d.category));}) - .attr("opacity", 0.1) - .attr("transform", "translate(" + chartprops.margin + "," + - chartprops.margin + ")"); - - // bars - chartprops.svg.append('g') - .selectAll("rect") - .data(timetable) - .enter() - .append("rect") - //.attr("rx", 3) - //.attr("ry", 3) - .attr("x", function(d) {return chartprops.scaler(d.start) + chartprops.bpad;}) - .attr("y", function(d, i) {return i * (chartprops.bheight + 2 * chartprops.bpad) + chartprops.bpad;}) - .attr("width", function(d) {return (chartprops.scaler(d.end) - chartprops.scaler(d.start));}) - .attr("height", chartprops.bheight) - .attr("stroke", "none") - .attr("fill", function(d) {return d3.rgb(chartprops.colorer(d.category));}) - .attr("transform", "translate(" + chartprops.margin + "," + - chartprops.margin + ")"); - - // grid lines - chartprops.svg.append("g") - .attr("transform", "translate(" + - (chartprops.bpad + chartprops.margin) + "," + - (chartprops.h + chartprops.margin) + ")") - .attr("class", "grid") - .call(d3.svg.axis() - .scale(chartprops.scaler) - .tickSize(-chartprops.h, 0) - .tickFormat("")) - .style("stroke", "#000") - .style("opacity", 0.2); - - // ticks - chartprops.svg.append("g") - .attr("transform", "translate(" + - (chartprops.bpad + chartprops.margin) + "," + - (chartprops.h + chartprops.margin) + ")") - .attr("class", "grid") - .call(d3.svg.axis() - .scale(chartprops.scaler) - .orient('bottom') - .tickSize(0, 0) - .tickFormat(d3.format(".2f"))); - } - - function loadprofile (queryid, callback) { - $.ajax({ - type: "GET", - dataType: "json", - url: "/profiles/" + queryid + ".json", - success: callback, - error: function (x, y, z) { - console.log(x); - console.log(y); - console.log(z); - } - }); - } - - function setupglobalconfig (profile) { - globalconfig.profile = profile; - globalconfig.majorcolorscale = d3.scale.category20() - .domain([0, d3.max(profile.fragmentProfile, accessor("majorFragmentId"))]); - - } - - String.prototype.endsWith = function(suffix) { - return this.indexOf(suffix, this.length - suffix.length) !== -1; - }; - - loadprofile(globalconfig.queryid, function (profile) { - setupglobalconfig(profile); - - var queryvisualdrawn = false; - var timingoverviewdrawn = false; - var jsonprofileshown = false; - - // trigger svg drawing when visible - $('#query-tabs').on('shown.bs.tab', function (e) { - if (queryvisualdrawn || !e.target.href.endsWith("#query-visual")) return; - buildplangraph(d3.select("#query-visual-canvas"), profile.plan); - queryvisualdrawn = true; - }) - $('#fragment-accordion').on('shown.bs.collapse', function (e) { - if (timingoverviewdrawn || e.target.id != "fragment-overview") return; - buildtimingchart(d3.select("#fragment-overview-canvas"), extractminortimes(profile)); - timingoverviewdrawn = true; - }); - - // select default tabs - $('#fragment-overview').collapse('show'); - $('#operator-overview').collapse('show'); - $('#query-tabs a[href="#query-query"]').tab('show'); - - - // add json profile on click - $('#full-json-profile-json').on('shown.bs.collapse', function (e) { - if (jsonprofileshown) return; - $('#full-json-profile-json').html(JSON.stringify(globalconfig.profile, null, 4)); - }); - - //builddomtable(d3.select("#timing-table") - // .append("tbody"), extractminortimes(profile), - // ["name", "start", "end"]); - }); -}); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/f2180b8f/exec/jdbc/pom.xml ---------------------------------------------------------------------- diff --git a/exec/jdbc/pom.xml b/exec/jdbc/pom.xml index b707760..c57f18b 100644 --- a/exec/jdbc/pom.xml +++ b/exec/jdbc/pom.xml @@ -35,7 +35,7 @@ <artifactId>drill-java-exec</artifactId> <version>${project.version}</version> </dependency> - <dependency> + <dependency> <groupId>org.apache.drill.contrib.storage-hive</groupId> <artifactId>drill-storage-hive-core</artifactId> <version>${project.version}</version> @@ -99,8 +99,8 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> - <forkCount>1</forkCount> - <reuseForks>false</reuseForks> + <forkCount>1</forkCount> + <reuseForks>false</reuseForks> </configuration> </plugin> <plugin> @@ -144,6 +144,10 @@ <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> + <exclusion> + <groupId>org.mortbay.jetty</groupId> + <artifactId>servlet-api-2.5</artifactId> + </exclusion> </exclusions> <scope>test</scope> </dependency> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/f2180b8f/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 9499ebf..f74ad2b 100644 --- a/pom.xml +++ b/pom.xml @@ -164,6 +164,8 @@ <excludeSubprojects>false</excludeSubprojects> <excludes> <exclude>**/*.log</exclude> + <exclude>**/*.css</exclude> + <exclude>**/*.js</exclude> <exclude>**/*.md</exclude> <exclude>sandbox/**</exclude> <exclude>**/*.json</exclude> @@ -287,7 +289,7 @@ </configuration> </execution> <execution> - <id>no_commons_logging</id> + <id>avoid_bad_dependencies</id> <goals> <goal>enforce</goal> </goals> @@ -296,6 +298,8 @@ <bannedDependencies> <excludes> <exclude>commons-logging</exclude> + <exclude>javax.servlet:servlet-api</exclude> + <exclude>org.mortbay.jetty:servlet-api-2.5</exclude> </excludes> </bannedDependencies> </rules> @@ -620,6 +624,14 @@ <groupId>org.mortbay.jetty</groupId> <artifactId>servlet-api-2.5</artifactId> </exclusion> + <exclusion> + <groupId>org.mortbay.jetty</groupId> + <artifactId>servlet-api-2.5</artifactId> + </exclusion> + <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </exclusion> <exclusion> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> @@ -696,6 +708,10 @@ <version>2.4.1</version> <exclusions> <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </exclusion> + <exclusion> <groupId>org.mortbay.jetty</groupId> <artifactId>servlet-api</artifactId> </exclusion> @@ -955,6 +971,11 @@ <artifactId>servlet-api-2.5</artifactId> </exclusion> <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </exclusion> + + <exclusion> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> </exclusion> @@ -1042,6 +1063,10 @@ <artifactId>servlet-api-2.5</artifactId> </exclusion> <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </exclusion> + <exclusion> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> </exclusion> @@ -1186,6 +1211,10 @@ <version>0.94.17-mapr-1405-m7-4.0.1</version> <exclusions> <exclusion> + <artifactId>servlet-api-2.5</artifactId> + <groupId>org.mortbay.jetty</groupId> + </exclusion> + <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> @@ -1282,6 +1311,10 @@ <version>2.3.0-cdh5.0.3</version> <exclusions> <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </exclusion> + <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> @@ -1336,6 +1369,10 @@ <version>2.4.0.2.1.3.0-563</version> <exclusions> <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </exclusion> + <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion>
