/* vim: set expandtab sw=4 ts=4 sts=4: */ /** * @fileoverview function used in QBE for DB * @name Database Operations * * @requires jQuery * @requires jQueryUI * @requires js/functions.js * */ function getFormatsText () { return { '=': ' = \'%s\'', '>': ' > \'%s\'', '>=': ' >= \'%s\'', '<': ' < \'%s\'', '<=': ' <= \'%s\'', '!=': ' != \'%s\'', 'LIKE': ' LIKE \'%s\'', 'LIKE \%...\%': ' LIKE \'%%%s%%\'', 'NOT LIKE': ' NOT LIKE \'%s\'', 'BETWEEN': ' BETWEEN \'%s\'', 'NOT BETWEEN': ' NOT BETWEEN \'%s\'', 'IS NULL': ' \'%s\' IS NULL', 'IS NOT NULL': ' \'%s\' IS NOT NULL', 'REGEXP': ' REGEXP \'%s\'', 'REGEXP ^...$': ' REGEXP \'^%s$\'', 'NOT REGEXP': ' NOT REGEXP \'%s\'' }; } function generateCondition (criteriaDiv, table) { query = '`' + escapeBacktick(table.val()) + '`.'; query += '`' + escapeBacktick(table.siblings('.columnNameSelect').first().val()) + '`'; if (criteriaDiv.find('.criteria_rhs').first().val() === 'text') { formatsText = getFormatsText(); query += sprintf(formatsText[criteriaDiv.find('.criteria_op').first().val()], escapeSingleQuote(criteriaDiv.find('.rhs_text_val').first().val())); } else { query += ' ' + criteriaDiv.find('.criteria_op').first().val(); query += ' `' + escapeBacktick(criteriaDiv.find('.tableNameSelect').first().val()) + '`.'; query += '`' + escapeBacktick(criteriaDiv.find('.columnNameSelect').first().val()) + '`'; } return query; } function generateWhereBlock () { var count = 0; var query = ''; $('.tableNameSelect').each(function () { var criteriaDiv = $(this).siblings('.slide-wrapper').first(); var useCriteria = $(this).siblings('.criteria_col').first(); if ($(this).val() !== '' && useCriteria.prop('checked')) { if (count > 0) { criteriaDiv.find('input.logical_op').each(function () { if ($(this).prop('checked')) { query += ' ' + $(this).val() + ' '; } }); } query += generateCondition(criteriaDiv, $(this)); count++; } }); return query; } function generateJoin (newTable, tableAliases, fk) { query = ''; query += ' \n\tLEFT JOIN ' + '`' + escapeBacktick(newTable) + '`'; if (tableAliases[fk.TABLE_NAME][0] !== '') { query += ' AS `' + escapeBacktick(tableAliases[newTable][0]) + '`'; query += ' ON `' + escapeBacktick(tableAliases[fk.TABLE_NAME][0]) + '`'; } else { query += ' ON `' + escapeBacktick(fk.TABLE_NAME) + '`'; } query += '.`' + fk.COLUMN_NAME + '`'; if (tableAliases[fk.REFERENCED_TABLE_NAME][0] !== '') { query += ' = `' + escapeBacktick(tableAliases[fk.REFERENCED_TABLE_NAME][0]) + '`'; } else { query += ' = `' + escapeBacktick(fk.REFERENCED_TABLE_NAME) + '`'; } query += '.`' + fk.REFERENCED_COLUMN_NAME + '`'; return query; } function existReference (table, fk, usedTables) { var isReferredBy = fk.TABLE_NAME === table && usedTables.includes(fk.REFERENCED_TABLE_NAME); var isReferencedBy = fk.REFERENCED_TABLE_NAME === table && usedTables.includes(fk.TABLE_NAME); return isReferredBy || isReferencedBy; } function tryJoinTable (table, tableAliases, usedTables, foreignKeys) { for (var i = 0; i < foreignKeys.length; i++) { var fk = foreignKeys[i]; if (existReference(table, fk, usedTables)) { return generateJoin(table, tableAliases, fk); } } return ''; } function appendTable (table, tableAliases, usedTables, foreignKeys) { var query = tryJoinTable (table, tableAliases, usedTables, foreignKeys); if (query === '') { if (usedTables.length > 0) { query += '\n\t, '; } query += '`' + escapeBacktick(table) + '`'; if (tableAliases[table][0] !== '') { query += ' AS `' + escapeBacktick(tableAliases[table][0]) + '`'; } } usedTables.push(table); return query; } function generateFromBlock (tableAliases, foreignKeys) { var usedTables = []; query = ''; for (var table in tableAliases) { if (tableAliases.hasOwnProperty(table)) { query += appendTable(table, tableAliases, usedTables, foreignKeys); } } return query; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
codemirror | Folder | 0755 |
|
|
designer | Folder | 0755 |
|
|
jqplot | Folder | 0755 |
|
|
transformations | Folder | 0755 |
|
|
vendor | Folder | 0755 |
|
|
ajax.js | File | 30.51 KB | 0644 |
|
chart.js | File | 18.08 KB | 0644 |
|
common.js | File | 18.75 KB | 0644 |
|
config.js | File | 26.88 KB | 0644 |
|
console.js | File | 55.94 KB | 0644 |
|
cross_framing_protection.js | File | 471 B | 0644 |
|
db_central_columns.js | File | 10.86 KB | 0644 |
|
db_multi_table_query.js | File | 7.85 KB | 0644 |
|
db_operations.js | File | 6.21 KB | 0644 |
|
db_qbe.js | File | 2.47 KB | 0644 |
|
db_query_generator.js | File | 4.39 KB | 0644 |
|
db_search.js | File | 8.56 KB | 0644 |
|
db_structure.js | File | 15.43 KB | 0644 |
|
db_tracking.js | File | 3.57 KB | 0644 |
|
doclinks.js | File | 20.16 KB | 0644 |
|
error_report.js | File | 10.58 KB | 0644 |
|
export.js | File | 34.24 KB | 0644 |
|
export_output.js | File | 289 B | 0644 |
|
functions.js | File | 171.32 KB | 0644 |
|
gis_data_editor.js | File | 14.42 KB | 0644 |
|
import.js | File | 5.51 KB | 0644 |
|
indexes.js | File | 27.01 KB | 0644 |
|
keyhandler.js | File | 3.25 KB | 0644 |
|
makegrid.js | File | 96.42 KB | 0644 |
|
menu-resizer.js | File | 8.12 KB | 0644 |
|
messages.php | File | 40.42 KB | 0644 |
|
microhistory.js | File | 11.32 KB | 0644 |
|
multi_column_sort.js | File | 3.21 KB | 0644 |
|
navigation.js | File | 59.35 KB | 0644 |
|
normalization.js | File | 27.47 KB | 0644 |
|
page_settings.js | File | 1.71 KB | 0644 |
|
replication.js | File | 3.13 KB | 0644 |
|
rte.js | File | 46.57 KB | 0644 |
|
server_databases.js | File | 5.56 KB | 0644 |
|
server_plugins.js | File | 495 B | 0644 |
|
server_privileges.js | File | 18.58 KB | 0644 |
|
server_status_advisor.js | File | 3.63 KB | 0644 |
|
server_status_monitor.js | File | 84.47 KB | 0644 |
|
server_status_processes.js | File | 6.17 KB | 0644 |
|
server_status_queries.js | File | 1.13 KB | 0644 |
|
server_status_sorter.js | File | 1.96 KB | 0644 |
|
server_status_variables.js | File | 3.19 KB | 0644 |
|
server_user_groups.js | File | 1.34 KB | 0644 |
|
server_variables.js | File | 4.17 KB | 0644 |
|
shortcuts_handler.js | File | 3.19 KB | 0644 |
|
sql.js | File | 37.76 KB | 0644 |
|
tbl_change.js | File | 27.89 KB | 0644 |
|
tbl_chart.js | File | 13.8 KB | 0644 |
|
tbl_find_replace.js | File | 1.54 KB | 0644 |
|
tbl_gis_visualization.js | File | 10.7 KB | 0644 |
|
tbl_operations.js | File | 13.88 KB | 0644 |
|
tbl_relation.js | File | 8.83 KB | 0644 |
|
tbl_select.js | File | 15.44 KB | 0644 |
|
tbl_structure.js | File | 19.41 KB | 0644 |
|
tbl_tracking.js | File | 3.85 KB | 0644 |
|
tbl_zoom_plot_jqplot.js | File | 21.81 KB | 0644 |
|
u2f.js | File | 2.47 KB | 0644 |
|
whitelist.php | File | 1.26 KB | 0644 |
|