NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name BigQuery: Switch to Standard SQL // @version 0.1 // @description Ensure the Standard SQL dialect is always selected unless there's nonempty SQL text // @author alexlloyd // @match https://bigquery.cloud.google.com/* // @license MIT // @grant none // ==/UserScript== // Docs: http://tampermonkey.net/documentation.php (function () { 'use strict'; var reg = new RegExp('^SELECT FROM \\[(.*):(.*)\\] LIMIT 1000$') var enableStandardSql = () => { var checkedCheckbox = document.querySelector('#use-legacy-sql .jfk-checkbox-checked'); var codeMirrorContainer = document.querySelector('.CodeMirror'); if (checkedCheckbox) { console.log('bq-enable-standard-sql: #use-legacy-sql is checked and .CodeMirror is empty, clicking to uncheck'); checkedCheckbox.click(); } if (codeMirrorContainer) { setTimeout(function() { var sql = codeMirrorContainer.CodeMirror.getValue(); var match = sql.match(reg) if (match !== null) { var [full, project, table] = match; var text_box = codeMirrorContainer.CodeMirror text_box.setValue('SELECT FROM `' + project + '.' + table + '` LIMIT 1000'); console.log('bq-enable-standard-sql: #.CodeMirror contains Legacy SQL, changing to Standard'); // TODO: move caret to between SELECT and FROM. Alternatively, work out how to trigger the tableCtrl.queryTable function to overwrite the textbox // if(text_box.createTextRange) { // var range = text_box.createTextRange(); // range.move('character', 7); // range.select(); // } // else { // if(text_box.selectionStart) { // text_box.focus(); // text_box.setSelectionRange(7, 7); // } // else // text_box.focus(); // } } }, 100); } }; var pollPeriodMs = 500; console.log('bq-enable-standard-sql: Starting, pollPeriodMs=' + pollPeriodMs); setInterval(enableStandardSql, pollPeriodMs); })();