diff --git a/forward_engineering/ddlProvider/ddlProvider.js b/forward_engineering/ddlProvider/ddlProvider.js index 3ac74430..be20f851 100644 --- a/forward_engineering/ddlProvider/ddlProvider.js +++ b/forward_engineering/ddlProvider/ddlProvider.js @@ -1,6 +1,11 @@ const _ = require('lodash'); const templates = require('./ddlTemplates'); -const { getFullEntityName, replaceSpaceWithUnderscore, wrapInBrackets } = require('../utils/general'); +const { + getFullEntityName, + getEntityNameWithTemporaryFlag, + replaceSpaceWithUnderscore, + wrapInBrackets, +} = require('../utils/general'); const { getViewTagsStatement } = require('../helpers/unityTagsHelper'); const { getTablePropertiesClause, checkTablePropertiesDefined } = require('../helpers/tableHelper'); const viewHelper = require('../helpers/viewHelper'); @@ -31,7 +36,11 @@ module.exports = app => { const isTemporary = !isMaterialized && schema.viewTemporary; const isGlobal = isTemporary && schema.viewGlobal; const orReplace = !ifNotExists && schema.viewOrReplace; - const name = bucketName ? `${bucketName}.${viewName}` : `${viewName}`; + const name = getEntityNameWithTemporaryFlag({ + containerName: bucketName, + entityName: viewName, + isTemporary, + }); const tableProperties = schema.tableProperties && Array.isArray(schema.tableProperties) ? viewHelper.filterRedundantProperties(schema.tableProperties, ['transient_lastDdlTime']) diff --git a/forward_engineering/helpers/tableHelper.js b/forward_engineering/helpers/tableHelper.js index 0617c167..64e1af93 100644 --- a/forward_engineering/helpers/tableHelper.js +++ b/forward_engineering/helpers/tableHelper.js @@ -8,6 +8,7 @@ const { encodeStringLiteral, getDifferentItems, getFullEntityName, + getEntityNameWithTemporaryFlag, getDBVersionNumber, generateFullEntityName, executeUnlessStreaming, @@ -480,7 +481,12 @@ const getTableStatement = const tableName = replaceSpaceWithUnderscore(prepareName(getName(tableData))); const fullTableName = isCalledFromAlterScript ? generateFullEntityName({ entity: { role: tableData }, dbVersion }) - : getFullEntityName(dbName, tableName); + : getEntityNameWithTemporaryFlag({ + containerName: dbName, + entityName: tableName, + isTemporary: tableData.temporaryTable, + }); + const { columns, deactivatedColumnNames } = getColumns(entityJsonSchema, definitions, dbVersion); const keyNames = keyHelper.getKeyNames(tableData, entityJsonSchema, definitions); const tableColumns = getTableColumnsStatement(columns, tableData.using, keyNames.compositePartitionKey); diff --git a/forward_engineering/helpers/viewHelper.js b/forward_engineering/helpers/viewHelper.js index 8e98d5e0..05f464e4 100644 --- a/forward_engineering/helpers/viewHelper.js +++ b/forward_engineering/helpers/viewHelper.js @@ -8,7 +8,11 @@ const _ = require('lodash'); const { getKeyNames } = require('./keyHelper'); const { getColumns } = require('./columnHelper'); const { getPartitionKeyStatement, getPartitionsKeys, getClusteringKeys } = require('./tableHelper'); -const { encodeStringLiteral, commentDeactivatedStatement } = require('../utils/general'); +const { + encodeStringLiteral, + commentDeactivatedStatement, + getEntityNameWithTemporaryFlag, +} = require('../utils/general'); const { prepareName } = require('../../shared/general'); const getColumnNames = (collectionRefsDefinitionsMap, columns) => { @@ -30,7 +34,12 @@ const getColumnNames = (collectionRefsDefinitionsMap, columns) => { const collectionName = collection.code || collection.collectionName; const db = _.first(itemData.bucket) || {}; const dbName = db.code || db.name; - const fullColumnName = `${dbName ? prepareName(dbName) + '.' : ''}${prepareName(collectionName)}.${prepareName(itemData.name)} as ${prepareName(name)}`; + const tablePrefix = getEntityNameWithTemporaryFlag({ + containerName: prepareName(dbName), + entityName: prepareName(collectionName), + isTemporary: collection.temporaryTable, + }); + const fullColumnName = `${tablePrefix}.${prepareName(itemData.name)} as ${prepareName(name)}`; return commentDeactivatedStatement(fullColumnName, definition.isActivated); }), ).filter(_.identity); @@ -49,7 +58,11 @@ const getFromStatement = (collectionRefsDefinitionsMap, columns) => { const bucket = _.first(source?.bucket) || {}; const collectionName = prepareName(collection.collectionName || collection.code); const bucketName = prepareName(bucket.name || bucket.code || ''); - const fullCollectionName = bucketName ? `${bucketName}.${collectionName}` : `${collectionName}`; + const fullCollectionName = getEntityNameWithTemporaryFlag({ + containerName: bucketName, + entityName: collectionName, + isTemporary: collection.temporaryTable, + }); return fullCollectionName; }) diff --git a/forward_engineering/utils/general.js b/forward_engineering/utils/general.js index 8f2d3e4b..56360fd4 100644 --- a/forward_engineering/utils/general.js +++ b/forward_engineering/utils/general.js @@ -190,6 +190,12 @@ const getEntityData = (object, properties = [], type = 'new') => const getFullEntityName = (dbName, entityName) => (dbName ? `${dbName}.${entityName}` : entityName); +/** + * Builds full entity name, omitting container/schema when isTemporary is true. + */ +const getEntityNameWithTemporaryFlag = ({ containerName, entityName, isTemporary = false }) => + containerName && !isTemporary ? `${containerName}.${entityName}` : entityName; + /** * @param bucketName {string} * @param tableName {string} @@ -347,6 +353,7 @@ module.exports = { wrapInParseJsonCall, getEntityData, getFullEntityName, + getEntityNameWithTemporaryFlag, generateFullEntityName, getEntityNameFromCollection, getEntityProperties,