Skip to content

Commit 64988ea

Browse files
committed
Firefly-1978: fixed VizieR upload
- response to feedback: fixed a bug
1 parent c7b7997 commit 64988ea

5 files changed

Lines changed: 35 additions & 23 deletions

File tree

src/firefly/js/ui/tap/ObjectIDSearch.jsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import {useFieldGroupRerender, useFieldGroupValue, useFieldGroupWatch} from 'fir
66
import {
77
DebugObsCore, getPanelPrefix, makeCollapsibleCheckHeader, makeFieldErrorList, makePanelStatusUpdater
88
} from 'firefly/ui/tap/TableSearchHelpers';
9-
import { ADQL_LINE_LENGTH, getAsEntryForTableName, makeUploadSchema, tapHelpId } from 'firefly/ui/tap/TapUtil';
9+
import {
10+
makeFullyQualifiedColumn, ADQL_LINE_LENGTH, getTableNameAlias, makeUploadSchema, tapHelpId
11+
} from 'firefly/ui/tap/TapUtil';
1012
import {bool,string,object} from 'prop-types';
1113
import {ColsShape, getColValidator} from 'firefly/charts/ui/ColumnOrExpression';
1214
import {CheckboxGroupInputField} from '../CheckboxGroupInputField.jsx';
@@ -284,8 +286,8 @@ function makeObjectIDConstraints(fldObj, uploadInfo, tableName, canUpload, selec
284286
}
285287
}
286288
else if (!useSIAv2) {
287-
const preFix= (serverFile && canUpload) ? `${getAsEntryForTableName(tableName)}` : '';
288-
adqlConstraint = `(ut.${uploadedObjectID} = ${preFix}.${objectID})`;
289+
const preFix= (serverFile && canUpload) ? getTableNameAlias(tableName) : '';
290+
adqlConstraint = `(ut.${uploadedObjectID} = ${makeFullyQualifiedColumn(preFix,objectID)})`;
289291
}
290292

291293
const errAry= errList.getErrors();

src/firefly/js/ui/tap/SpatialSearch.jsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ import {DebugObsCore, getPanelPrefix, makeCollapsibleCheckHeader, makeConstraint
3333
makeFieldErrorList} from './TableSearchHelpers.jsx';
3434
import {showUploadTableChooser} from '../UploadTableChooser.js';
3535
import {
36-
getAsEntryForTableName, getColumnAttribute, getTapServiceByURL, makeUploadSchema, maybeQuote,
36+
makeFullyQualifiedColumn,
37+
getTableNameAlias, getColumnAttribute, getTapServiceByURL, makeUploadSchema, maybeQuote,
3738
tapHelpId
3839
} from './TapUtil.js';
3940
import {
@@ -712,7 +713,6 @@ function makeSpatialConstraints(columnsModel, obsCoreEnabled, fldObj, uploadInfo
712713
const errList= makeFieldErrorList();
713714
const tabAs= 'ut';
714715
const validUpload= Boolean(serverFile && upLonCol && upLatCol && canUpload);
715-
const preFix= validUpload ? `${getAsEntryForTableName(tableName)}.` : '';
716716
if (!validUpload && spatialType===MULTI) {
717717
if (!serverFile) errList.addError('Upload file has not been specified');
718718
if (!upLonCol && !upLatCol) errList.addError('Upload columns have not been specified');
@@ -736,10 +736,10 @@ function makeSpatialConstraints(columnsModel, obsCoreEnabled, fldObj, uploadInfo
736736
const ucdCoord = getUCDCoord(columnsModel, cenLon);
737737
const worldSys = posCol[ucdCoord.key].coord;
738738
const adqlCoordSys = posCol[ucdCoord.key].adqlCoord;
739-
const point = cenLon===cenLat ?
740-
`${maybeQuote(preFix+cenLon)}` :
741-
`POINT('${adqlCoordSys}', ${maybeQuote(preFix+cenLon)}, ${maybeQuote(preFix+cenLat)})`;
742-
739+
const preFix= (spatialType===MULTI) && validUpload ? getTableNameAlias(tableName) : '';
740+
const lonColStr= makeFullyQualifiedColumn(preFix,cenLon);
741+
const latColStr= makeFullyQualifiedColumn(preFix,cenLat);
742+
const point = cenLon===cenLat ? lonColStr : `POINT('${adqlCoordSys}', ${lonColStr}, ${latColStr})`;
743743

744744
if (spatialType===SINGLE) {
745745
if (!radiusSizeField?.value && spatialMethod === CONE_CHOICE_KEY) errList.addError('Missing radius input');

src/firefly/js/ui/tap/TableColumnsConstraints.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {getCellValue, getColumn, getColumns, getColumnValues, getTblById, watchT
66
import {SelectInfo} from '../../tables/SelectInfo.js';
77
import {dispatchTableFilter, dispatchTableAddLocal, TABLE_LOADED, TABLE_REPLACE, TABLE_SELECT} from '../../tables/TablesCntlr.js';
88
import {ColumnConstraintsPanel, getTableConstraints} from './ColumnConstraintsPanel.jsx';
9-
import {ADQL_LINE_LENGTH, maybeQuote} from './TapUtil.js';
9+
import {makeFullyQualifiedColumn, ADQL_LINE_LENGTH, maybeQuote} from './TapUtil.js';
1010

1111
const COLS_TO_DISPLAY_FIRST = ['column_name','unit','ucd','description','datatype','arraysize','utype','xtype','principal'];
1212

@@ -242,6 +242,8 @@ export function tableColumnsConstraints(columnsModel,tableName) {
242242
const {whereFragment, selcolsArray, errors} = tableConstraints;
243243
if (errors) return {valid: false, message: errors};
244244

245-
const selcols= tableName ? makeColsLines(selcolsArray.map( (c) => `${tableName}.${c}`)) : makeColsLines(selcolsArray);
245+
const selcols= tableName
246+
? makeColsLines(selcolsArray.map( (c) => makeFullyQualifiedColumn(tableName, c)))
247+
: makeColsLines(selcolsArray);
246248
return {valid: true, where: whereFragment, selcols, selcolsArray};
247249
}

src/firefly/js/ui/tap/TapSearchSubmit.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import {
3-
ADQL_QUERY_KEY, getAsEntryForTableName, getServiceHiPS, getServiceId, getServiceLabel,
3+
ADQL_QUERY_KEY, getTableNameAlias, getServiceHiPS, getServiceId, getServiceLabel,
44
makeTapSearchTitle,
55
maybeQuote, TAP_UPLOAD_SCHEMA,
66
USER_ENTERED_TITLE
@@ -137,15 +137,15 @@ export function getAdqlQuery(tapBrowserState, additionalClauses, allowColumnCons
137137
}
138138

139139
const helperFragment = getHelperConstraints(tapBrowserState);
140-
const tableAsName = getAsEntryForTableName(tableName); // alias is used when upload table is present
140+
const tNameAlias = getTableNameAlias(tableName); // alias is used when upload table is present
141141
const tableCol = tableColumnsConstraints(tapBrowserState.columnsModel,
142-
isUpload ? tableAsName : undefined);
142+
isUpload ? tNameAlias : undefined);
143143

144144
const { table:uploadTable, asTable:uploadAsTable, columns:uploadColumns} = isUpload ?
145145
getTapUploadSchemaEntry(tapBrowserState) : {};
146146

147147
const fromTables= isUpload ?
148-
`${tableName} AS ${tableAsName}, ${TAP_UPLOAD_SCHEMA}.${uploadTable} ${uploadAsTable ? 'AS '+uploadAsTable : ''}` :
148+
`${tableName} AS ${tNameAlias}, ${TAP_UPLOAD_SCHEMA}.${uploadTable} ${uploadAsTable ? 'AS '+uploadAsTable : ''}` :
149149
tableName;
150150

151151
// check for errors
@@ -159,7 +159,7 @@ export function getAdqlQuery(tapBrowserState, additionalClauses, allowColumnCons
159159
}
160160

161161
// build columns
162-
let selcols = tableCol.selcols || (isUpload ? `${tableAsName}.*` : '*');
162+
let selcols = tableCol.selcols || (isUpload ? `${tNameAlias}.*` : '*');
163163
if (isUpload) {
164164
const ut= uploadAsTable ?? uploadTable ?? '';
165165
const tCol= uploadColumns.filter(({use}) => use).map( ({name}) => ut+'.'+name);

src/firefly/js/ui/tap/TapUtil.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,12 @@ export function getColumnAttribute(columnsModel, colName, attrName) {
537537

538538
const hasElements= (a) => Boolean(isArray(a) && a?.length);
539539

540-
export const getAsEntryForTableName= (tableName) => tableName?.[0] ?? 'x';
540+
export function getTableNameAlias(tableName) {
541+
if (!tableName) return 'x';
542+
if (tableName.length > 1 && tableName[0]==='"') return tableName[1].toLowerCase();
543+
if (tableName.length) return tableName[0].toLowerCase();
544+
return 'x';
545+
}
541546

542547
export function mergeServices(startingServices, additional) {
543548
if (!hasElements(additional)) return startingServices;
@@ -611,16 +616,19 @@ const validColumnNameRE=/^[A-Za-z][A-Za-z_0-9]*(\.[A-Za-z][A-Za-z_0-9]*){0,3}$/;
611616
*/
612617
export function maybeQuote(name, isTable=false) {
613618
if (!name || (name.startsWith('"') && name.endsWith('"'))) return name;
619+
if (!isTable && name.includes('.')) {
620+
const [table,col, ...rest]= name.split('.');
621+
const colPart= rest.length ? [col,...rest].join('.') : col;
622+
if (table.length && colPart.length) return `${table}.${maybeQuote(colPart)}`;
623+
}
614624
const re= isTable ? validTableNameRE : validColumnNameRE;
615625
return (name.match(re)) ? name : `"${name}"`;
616626
}
617627

618-
619-
/**
620-
* group key for fieldgroup comp
621-
*/
622-
623-
628+
export function makeFullyQualifiedColumn(tName, cName) {
629+
if (!tName) return maybeQuote(cName);
630+
return `${tName}.${maybeQuote(cName)}`;
631+
}
624632

625633

626634

0 commit comments

Comments
 (0)