Commit bfcbe492 authored by Ayush Tiwari's avatar Ayush Tiwari

bt5_config: Replace BM with one zexp file

parent 8d08790c
# This script indexes the preferred Transformation to produce
# a variation of a product.
# transformation_item_list is a list of:
# transformation, variation_list_list
# transformation is a transformation to index, while variation_list_list
# is a list of variation categories that are relevant for the produced resource
from Products.ERP5Type.Document import newTempMovement
# List of dictionaries:
# { id:resource_id,
# variation_text: resource_variation_text,
# row_dict_list: list of rows to insert; each row is represented as a dict.}
row_dict_dict_list = []
portal = context.getPortalObject()
for transformation_relative_url, variation_list_list in transformation_item_list:
transformation = portal.restrictedTraverse(transformation_relative_url)
resource = transformation.getResourceValue()
if resource is None:
continue
for variation_list in variation_list_list:
movement = newTempMovement(resource, 'temp',
specialise_value=transformation,
variation_category_list=variation_list,
resource_value=resource,
quantity=1.0)
base_row = dict(uid=resource.getUid(), variation_text=movement.getVariationText())
row_dict_list = []
for amount in movement.getAggregatedAmountList():
transformed_resource_uid = amount.getResourceUid()
quantity = amount.getQuantity()
if transformed_resource_uid is not None and quantity is not None:
row_dict = base_row.copy()
row_dict.update(transformed_uid=transformed_resource_uid,
transformed_variation_text=amount.getVariationText(),
quantity=quantity)
row_dict_list.append(row_dict)
base_row['row_dict_list'] = row_dict_list
row_dict_dict_list.append(base_row)
context.z_catalog_transformation_list(row_dict_dict_list=row_dict_dict_list)
# Indexing all transformation lines for all possible variations of a Resource can be very costly.
# Avoid doing this in a single transaction, and split the operation.
batch_size = 100
current_batch = []
current_size = 0
for i, transformation in enumerate(getDefaultConversionTransformationValue):
if transformation is None:
continue
transformation_relative_url = transformation.getRelativeUrl()
variation_list_list = getTransformationVariationCategoryCartesianProduct[i]
size = len(transformation)*len(variation_list_list)
if size + current_size < batch_size:
current_batch.append((transformation_relative_url, variation_list_list))
current_size += size
else:
if current_batch:
context.activate(activity='SQLQueue').SQLCatalog_catalogTransformation(current_batch)
current_batch = [(transformation_relative_url, variation_list_list)]
current_size = size
if current_batch:
context.activate(activity='SQLQueue').SQLCatalog_catalogTransformation(current_batch)
"""
Default full text searchable key implementation.
"""
from Products.ZSQLCatalog.SQLCatalog import ComplexQuery
from Products.ZSQLCatalog.SQLCatalog import Query
query = ComplexQuery(Query(title=value),
Query(reference=value),
operator="OR")
return query
from Products.ERP5Type.Log import log
from Products.ZSQLCatalog.SQLCatalog import Query
# warn by logging (not possible use python's warn module in restricted environment)
log("'quick_search_text' and 'advanced_search_text' scriptable keys are deprecated. Use 'search_text' instead.")
return Query(search_text=value)
"""
Search text query generator. Accepts a string and returns a ComplexQuery.
For example:
search_text = DMS reference:bt5-dms version:001 language:bg mine:yes (portal_type:Presentation OR portal_type:File) created:12m contributor_title:%tyagov%
will parse search_text and generate a complexQuery which will return all documents which:
- have full_text searchable text containing "DMS"
- have reference equal to bt5-dms
- have portal_type "Presentation" OR "File"
- are created within last 12 months
- are owned by current logged in user
- are contributed by given Person's title
- etc ..
"""
if 'full_text' in context.sql_search_tables:
column = 'SearchableText'
else:
column = 'title'
node = context.Base_getAdvancedSearchSyntaxTreeNode(value, column=column)
if node is None:
return context.buildSingleQuery(column, value)
else:
return context.buildQueryFromAbstractSyntaxTreeNode(node, column, ignore_unknown_columns=True)
from Products.ZSQLCatalog.SQLCatalog import Query, SimpleQuery, AndQuery
portal = context.getPortalObject()
# This scriptable key supports content_translation if the table is present
catalog = portal.portal_catalog.getSQLCatalog()
if 'content_translation' in catalog.getProperty('sql_search_tables'):
if [x for x in catalog.getProperty('sql_catalog_search_keys', []) if 'Mroonga' in x]:
return AndQuery(SimpleQuery(**{'content_translation.translated_text': value, 'comparison_operator': 'mroonga_boolean'}),
Query(**{'content_translation.property_name': 'title'}))
else:
return AndQuery(SimpleQuery(**{'content_translation.translated_text': value, 'comparison_operator': 'match_boolean'}),
Query(**{'content_translation.property_name': 'title'}))
# Otherwise it simply use title
return Query(title=value)
DELETE FROM category WHERE <dtml-sqltest uid op=eq type=int>
\ No newline at end of file
<dtml-comment>
JM: Since unindexing a measure triggers the reindexing of the related
resource (what will clean the measure table - cf z0_catalog_measure_list),
is it required to delete according to uid column?
The test against metric_type_uid is there in case we delete a metric_type_uid
category that is used as an implicit measure.
</dtml-comment>
DELETE FROM measure
WHERE <dtml-sqltest uid op=eq type=int>
OR <dtml-sqltest uid op=eq type=int column="metric_type_uid">
DELETE FROM quantity_unit_conversion
WHERE <dtml-sqltest uid op=eq type=int>
\ No newline at end of file
DELETE FROM stock WHERE <dtml-sqltest uid op=eq type=int multiple>
\ No newline at end of file
DELETE FROM transformation
WHERE <dtml-sqltest uid op=eq type=int>
\ No newline at end of file
DELETE FROM versioning WHERE <dtml-sqltest uid op=eq type=int>
\ No newline at end of file
REPLACE INTO
alarm (uid, alarm_date)
VALUES
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
(
<dtml-sqlvar expr="uid[loop_item]" type="int">,
<dtml-sqlvar expr="getAlarmDate[loop_item]" type="datetime" optional>
)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
<dtml-let delivery_list="[]">
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
<dtml-if "isDelivery[loop_item]">
<dtml-call expr="delivery_list.append(loop_item)">
</dtml-if>
</dtml-in>
<dtml-if expr="_.len(delivery_list) > 0">
REPLACE INTO
delivery
VALUES
<dtml-in prefix="loop" expr="delivery_list">
(
<dtml-sqlvar expr="uid[loop_item]" type="int">,
<dtml-sqlvar expr="getSourceUid[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getDestinationUid[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getSourceSectionUid[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getDestinationSectionUid[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getResourceUid[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getStartDate[loop_item]" type="datetime" optional>,
<dtml-sqlvar expr="getStartDateRangeMin[loop_item]" type="datetime" optional>,
<dtml-sqlvar expr="getStartDateRangeMax[loop_item]" type="datetime" optional>,
<dtml-sqlvar expr="getStopDate[loop_item]" type="datetime" optional>,
<dtml-sqlvar expr="getStopDateRangeMin[loop_item]" type="datetime" optional>,
<dtml-sqlvar expr="getStopDateRangeMax[loop_item]" type="datetime" optional>
)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
</dtml-if>
</dtml-let>
DELETE FROM
item
WHERE
<dtml-in uid>
uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
</dtml-in>
;
<dtml-var "'\0'">
<dtml-let movement_list="[]" uid_dict="{}">
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
<dtml-if "isMovement[loop_item] and isAccountable[loop_item] and getMovedItemUidList[loop_item]">
<dtml-call expr="uid_dict.update({uid[loop_item]: uid_dict.get(uid[loop_item], -1) + 1})">
<dtml-call expr="movement_list.append(loop_item)">
</dtml-if>
</dtml-in>
<dtml-if expr="_.len(movement_list) > 0">
REPLACE INTO
item
VALUES
<dtml-in prefix="loop" expr="movement_list">
<dtml-in expr="getMovedItemUidList[loop_item]">
(
<dtml-call expr="uid_dict.update({uid[loop_item]: uid_dict.get(uid[loop_item], -1) + 1})">
<dtml-sqlvar expr="uid[loop_item]" type="int">,
<dtml-sqlvar expr="uid_dict[uid[loop_item]]" type="int">,
<dtml-sqlvar expr="getStopDate[loop_item]" type="datetime" optional>,
<dtml-sqlvar expr="getDestinationUid[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getDestinationSectionUid[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getResourceUid[loop_item]" type="int" optional>,
<dtml-sqlvar sequence-item type="int" optional>,
<dtml-sqlvar expr="getVariationText[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getSimulationState[loop_item]" type="string" optional>
)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
</dtml-if>
</dtml-let>
\ No newline at end of file
DELETE FROM `measure` WHERE
<dtml-sqltest uid column="resource_uid" type="int" multiple>;
<dtml-let measure_list="[]">
<dtml-in getMeasureRowList prefix="loop">
<dtml-call expr="loop_item and measure_list.extend(loop_item)">
</dtml-in>
<dtml-if measure_list>
<dtml-var sql_delimiter>
REPLACE INTO `measure`
VALUES
<dtml-in measure_list prefix="loop">
(
<dtml-sqlvar expr="loop_item['uid']" type="int">,
<dtml-sqlvar expr="loop_item['resource_uid']" type="int">,
<dtml-sqlvar expr="loop_item['variation']" type="string">,
<dtml-sqlvar expr="loop_item['metric_type_uid']" type="int">,
<dtml-sqlvar expr="loop_item['quantity']" type="float">
)
<dtml-unless sequence-end>,</dtml-unless>
</dtml-in>
</dtml-if>
</dtml-let>
DELETE FROM
category
WHERE
<dtml-in uid>
uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
</dtml-in>
;
<dtml-var "'\0'">
<dtml-let category_list="[]" getCategoryParentUidList="portal_categories.getCategoryParentUidList">
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
<dtml-if expr="getCategoryList[loop_item]">
<dtml-let uid_list="getCategoryParentUidList(getCategoryList[loop_item])">
<dtml-if uid_list>
<dtml-in prefix="uid" expr="uid_list">
<dtml-call expr="category_list.append((uid[loop_item], uid_item[0], uid_item[1], uid_item[2]))">
</dtml-in></dtml-if></dtml-let></dtml-if></dtml-in>
<dtml-if expr="category_list">
REPLACE INTO category VALUES
<dtml-in prefix="loop" expr="category_list">
(<dtml-sqlvar expr="loop_item[0]" type="int">, <dtml-sqlvar expr="loop_item[1]" type="int">, <dtml-sqlvar expr="loop_item[2]" type="int">, <dtml-sqlvar expr="loop_item[3]" type="int">)<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
</dtml-if>
</dtml-let>
\ No newline at end of file
DELETE FROM
category
WHERE
<dtml-in uid>
uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
</dtml-in>
;
<dtml-var "'\0'">
<dtml-let category_list="[]" getCategoryParentUidList="portal_categories.getCategoryParentUidList">
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
<dtml-if expr="getAcquiredCategoryList[loop_item]">
<dtml-let uid_list="getCategoryParentUidList(getAcquiredCategoryList[loop_item])">
<dtml-if uid_list>
<dtml-in prefix="uid" expr="uid_list">
<dtml-call expr="category_list.append((uid[loop_item], uid_item[0], uid_item[1], uid_item[2]))">
</dtml-in></dtml-if></dtml-let></dtml-if></dtml-in>
<dtml-if expr="category_list">
REPLACE INTO category VALUES
<dtml-in prefix="loop" expr="category_list">
(<dtml-sqlvar expr="loop_item[0]" type="int">, <dtml-sqlvar expr="loop_item[1]" type="int">, <dtml-sqlvar expr="loop_item[2]" type="int">, <dtml-sqlvar expr="loop_item[3]" type="int">)<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
</dtml-if>
</dtml-let>
\ No newline at end of file
REPLACE INTO
catalog
(`uid`, `security_uid`, `owner`, `viewable_owner`, `path`, `relative_url`, `parent_uid`, `id`, `description`, `title`, `meta_type`,
`portal_type`, `opportunity_state`, `corporate_registration_code`, `ean13_code`, `validation_state`, `simulation_state`,
`causality_state`, `invoice_state`, `payment_state`, `event_state`, `immobilisation_state`, `reference`, `grouping_reference`, `grouping_date`,
`source_reference`, `destination_reference`, `string_index`, `int_index`, `float_index`, `has_cell_content`, `creation_date`,
`modification_date`)
VALUES
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
(
<dtml-sqlvar expr="uid[loop_item]" type="int">,
<dtml-sqlvar expr="security_uid[loop_item]" type="int">,
<dtml-sqlvar expr="getOwnerInfo[loop_item]['id']" type="string">,
<dtml-sqlvar expr="(getViewPermissionOwner[loop_item] is not None) and getViewPermissionOwner[loop_item] or ''" type="string" optional>,
<dtml-sqlvar expr="getPath[loop_item]" type="string">,
<dtml-sqlvar expr="getRelativeUrl[loop_item]" type="string">,
<dtml-sqlvar expr="getParentUid[loop_item]" type="int">,
<dtml-sqlvar expr="id[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getDescription[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getTitle[loop_item]" type="string" optional>,
<dtml-sqlvar expr="meta_type[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getPortalType[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getOpportunityState[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getCorporateRegistrationCode[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getEan13Code[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getValidationState[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getSimulationState[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getCausalityState[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getInvoiceState[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getPaymentState[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getEventState[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getImmobilisationState[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getReference[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getGroupingReference[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getGroupingDate[loop_item]" type="datetime" optional>,
<dtml-sqlvar expr="getSourceReference[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getDestinationReference[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getStringIndex[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getIntIndex[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getFloatIndex[loop_item]" type="float" optional>,
<dtml-sqlvar expr="hasCellContent[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getCreationDate[loop_item]" type="datetime" optional>,
<dtml-sqlvar expr="getModificationDate[loop_item]" type="datetime" optional>
)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
DELETE FROM
predicate_category
WHERE
<dtml-in uid>
uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
</dtml-in>
;
<dtml-var "'\0'">
<dtml-let predicate_list="[]">
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
<dtml-if "isPredicate[loop_item]">
<dtml-if expr="_.len(predicate_property_dict[loop_item]) > 0">
<dtml-call expr="predicate_list.append(loop_item)">
</dtml-if>
</dtml-if>
</dtml-in>
<dtml-if expr="_.len(predicate_list) > 0">
REPLACE INTO predicate_category VALUES
<dtml-in prefix="loop" expr="predicate_list">
<dtml-if sequence-start><dtml-else>,</dtml-if>
<dtml-if "predicate_property_dict[loop_item].has_key('membership_criterion_category_list')">
<dtml-let uid_list="portal_categories.CategoryTool_getPreferredPredicateCategoryParentUidItemList(predicate_property_dict[loop_item]['membership_criterion_category_list'], getObject[loop_item])">
<dtml-if uid_list>
<dtml-in "uid_list">
(<dtml-sqlvar expr="uid[loop_item]" type="int">, <dtml-var "_['sequence-item'][0]" >, <dtml-var "_['sequence-item'][1]" >, <dtml-var "_['sequence-item'][2]" >)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
<dtml-else>
(<dtml-sqlvar expr="uid[loop_item]" type="int">, 0, 0,1)
</dtml-if>
</dtml-let>
<dtml-else>
(<dtml-sqlvar expr="uid[loop_item]" type="int">, 0, 0,1)
</dtml-if>
</dtml-in>
</dtml-if>
</dtml-let>
<dtml-let predicate_list="[]">
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
<dtml-if "isPredicate[loop_item]">
<dtml-if expr="_.len(predicate_property_dict[loop_item]) > 0">
<dtml-call expr="predicate_list.append(loop_item)">
</dtml-if>
</dtml-if>
</dtml-in>
<dtml-if expr="_.len(predicate_list) > 0">
REPLACE INTO predicate VALUES
<dtml-in prefix="loop" expr="predicate_list">
<dtml-if sequence-start><dtml-else>,</dtml-if>
(
<dtml-sqlvar expr="uid[loop_item]" type="int">,
<dtml-sqlvar expr="predicate_property_dict[loop_item].get('quantity', None)" type="float" optional>,
<dtml-sqlvar expr="predicate_property_dict[loop_item].get('quantity_range_min', None)" type="float" optional>,
<dtml-sqlvar expr="predicate_property_dict[loop_item].get('quantity_range_max', None)" type="float" optional>,
<dtml-sqlvar expr="predicate_property_dict[loop_item].get('start_date', None)" type="datetime" optional>,
<dtml-sqlvar expr="predicate_property_dict[loop_item].get('start_date_range_min', None)" type="datetime" optional>,
<dtml-sqlvar expr="predicate_property_dict[loop_item].get('start_date_range_max', None)" type="datetime" optional>
)
</dtml-in>
</dtml-if>
</dtml-let>
<dtml-let quantity_unit_conversion_dict="{}" value_list="[]">
<dtml-in getQuantityUnitConversionDefinitionRowList
prefix="loop">
<dtml-if loop_item>
<dtml-comment>
Make sure that we get no duplicates, and also aggregate the uids of the modified resources for deletion
</dtml-comment>
<dtml-in loop_item prefix="inner">
<dtml-call expr="quantity_unit_conversion_dict.setdefault(inner_item['resource_uid'], {}).setdefault(inner_item['quantity_unit_uid'], inner_item)">
</dtml-in>
</dtml-if>
</dtml-in>
<dtml-if quantity_unit_conversion_dict>
DELETE FROM `quantity_unit_conversion` WHERE
<dtml-sqltest "quantity_unit_conversion_dict.keys()" column="resource_uid" type="int" multiple>;
<dtml-var sql_delimiter>
<dtml-in "quantity_unit_conversion_dict.values()" prefix="loop">
<dtml-call "value_list.extend(loop_item.values())">
</dtml-in>
REPLACE INTO `quantity_unit_conversion`
VALUES
<dtml-in "value_list" prefix="loop">
(
<dtml-sqlvar expr="loop_item['uid']" type="int" optional>,
<dtml-sqlvar expr="loop_item['resource_uid']" type="int">,
<dtml-sqlvar expr="loop_item['quantity_unit_uid']" type="int">,
<dtml-sqlvar expr="loop_item['quantity']" type="float">
)
<dtml-unless sequence-end>,</dtml-unless>
</dtml-in>
</dtml-if>
</dtml-let>
\ No newline at end of file
<dtml-let row_list="[]">
<dtml-in prefix="loop" expr="_.range(_.len(optimised_roles_and_users))">
<dtml-in prefix="role" expr="optimised_roles_and_users[loop_item]">
<dtml-call expr="row_list.append([role_item[0], role_item[2]])">
</dtml-in>
</dtml-in>
<dtml-if expr="row_list">
INSERT INTO
roles_and_users(uid, allowedRolesAndUsers)
VALUES
<dtml-in prefix="row" expr="row_list">
(<dtml-sqlvar expr="row_item[0]" type="string">, <dtml-sqlvar expr="row_item[1]" type="string">)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
</dtml-if>
</dtml-let>
DELETE FROM
stock
WHERE
<dtml-in uid>
uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
</dtml-in>
;
<dtml-var "'\0'">
<dtml-let row_list="[]" uid_dict="{}">
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
<dtml-if "not(isInventoryMovement[loop_item]) and isMovement[loop_item] and getResourceUid[loop_item]">
<dtml-in prefix="movement" expr="asMovementList[loop_item]" no_push_item>
<dtml-let movement_item_quantity="movement_item.getInventoriatedQuantity() or 0">
<dtml-if "getDestinationUid[loop_item]">
<dtml-call expr="uid_dict.update({uid[loop_item]: uid_dict.get(uid[loop_item], -1) + 1})">
<dtml-call expr="row_list.append([
uid[loop_item],
uid_dict[uid[loop_item]],
getExplanationUid[loop_item],
getDestinationUid[loop_item],
getDestinationSectionUid[loop_item],
getDestinationPaymentUid[loop_item],
getDestinationFunctionUid[loop_item],
getDestinationProjectUid[loop_item],
getDestinationFundingUid[loop_item],
getLedgerUid[loop_item],
getDestinationPaymentRequestUid[loop_item],
getSourceSectionUid[loop_item],
getSourceUid[loop_item],
getResourceUid[loop_item],
movement_item_quantity,
isCancellationAmount[loop_item],
isAccountable[loop_item],
movement_item.getStopDate(),
movement_item.getStartDate(),
getDestinationInventoriatedTotalAssetPrice[loop_item],
getPortalType[loop_item],
getSimulationState[loop_item],
getVariationText[loop_item],
getSubVariationText[loop_item]])">
</dtml-if>
<dtml-if "getSourceUid[loop_item]">
<dtml-call expr="uid_dict.update({uid[loop_item]: uid_dict.get(uid[loop_item], -1) + 1})">
<dtml-call expr="row_list.append([
uid[loop_item],
uid_dict[uid[loop_item]],
getExplanationUid[loop_item],
getSourceUid[loop_item],
getSourceSectionUid[loop_item],
getSourcePaymentUid[loop_item],
getSourceFunctionUid[loop_item],
getSourceProjectUid[loop_item],
getSourceFundingUid[loop_item],
getLedgerUid[loop_item],
getSourcePaymentRequestUid[loop_item],
getDestinationSectionUid[loop_item],
getDestinationUid[loop_item],
getResourceUid[loop_item],
-movement_item_quantity,
isCancellationAmount[loop_item],
isAccountable[loop_item],
movement_item.getStartDate(),
movement_item.getStopDate(),
getSourceInventoriatedTotalAssetPrice[loop_item],
getPortalType[loop_item],
getSimulationState[loop_item],
getVariationText[loop_item],
getSubVariationText[loop_item]])">
</dtml-if>
</dtml-let>
</dtml-in>
</dtml-if>
</dtml-in>
<dtml-if "row_list">
REPLACE INTO
stock
(
`uid`,
`order_id`,
`explanation_uid`,
`node_uid`,
`section_uid`,
`payment_uid`,
`function_uid`,
`project_uid`,
`funding_uid`,
`ledger_uid`,
`payment_request_uid`,
`mirror_section_uid`,
`mirror_node_uid`,
`resource_uid`,
`quantity`,
`is_cancellation`,
`is_accountable`,
`date`,
`mirror_date`,
`total_price`,
`portal_type`,
`simulation_state`,
`variation_text`,
`sub_variation_text`
)
VALUES
<dtml-in prefix="row" expr="row_list">
(
<dtml-sqlvar expr="row_item[0]" type="int">,
<dtml-sqlvar expr="row_item[1]" type="int">,
<dtml-sqlvar expr="row_item[2]" type="int" optional>,
<dtml-sqlvar expr="row_item[3]" type="int">,
<dtml-sqlvar expr="row_item[4]" type="int" optional>,
<dtml-sqlvar expr="row_item[5]" type="int" optional>,
<dtml-sqlvar expr="row_item[6]" type="int" optional>,
<dtml-sqlvar expr="row_item[7]" type="int" optional>,
<dtml-sqlvar expr="row_item[8]" type="int" optional>,
<dtml-sqlvar expr="row_item[9]" type="int" optional>,
<dtml-sqlvar expr="row_item[10]" type="int" optional>,
<dtml-sqlvar expr="row_item[11]" type="int" optional>,
<dtml-sqlvar expr="row_item[12]" type="int" optional>,
<dtml-sqlvar expr="row_item[13]" type="int">,
<dtml-sqlvar expr="row_item[14]" type="float" optional>,
<dtml-sqlvar expr="row_item[15]" type="int">,
<dtml-sqlvar expr="row_item[16]" type="int">,
<dtml-sqlvar expr="row_item[17]" type="datetime" optional>,
<dtml-sqlvar expr="row_item[18]" type="datetime" optional>,
<dtml-sqlvar expr="row_item[19]" type="float" optional>,
<dtml-sqlvar expr="row_item[20]" type="string" optional>,
<dtml-sqlvar expr="row_item[21]" type="string" optional>,
<dtml-sqlvar expr="row_item[22]" type="string" optional>,
<dtml-sqlvar expr="row_item[23]" type="string" optional>
)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
</dtml-if>
</dtml-let>
<dtml-let row_list="[]">
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
<dtml-if "not(isInventoryMovement[loop_item]) and isMovement[loop_item] and getResourceUid[loop_item]">
<dtml-if "getDestinationUid[loop_item]">
<dtml-call expr="row_list.append([
uid[loop_item],
order_id[loop_item],
getExplanationUid[loop_item],
getDestinationUid[loop_item],
getDestinationSectionUid[loop_item],
getDestinationPaymentUid[loop_item],
getDestinationFunctionUid[loop_item],
getDestinationProjectUid[loop_item],
getDestinationFundingUid[loop_item],
getLedgerUid[loop_item],
getDestinationPaymentRequestUid[loop_item],
getSourceSectionUid[loop_item],
getSourceUid[loop_item],
getResourceUid[loop_item],
getInventoriatedQuantity[loop_item],
isCancellationAmount[loop_item],
isAccountable[loop_item],
getStopDate[loop_item],
getStartDate[loop_item],
getDestinationInventoriatedTotalAssetPrice[loop_item],
getPortalType[loop_item],
getSimulationState[loop_item],
getVariationText[loop_item],
getSubVariationText[loop_item]])">
</dtml-if>
<dtml-if "getSourceUid[loop_item]">
<dtml-call expr="row_list.append([
uid[loop_item],
mirror_order_id[loop_item],
getExplanationUid[loop_item],
getSourceUid[loop_item],
getSourceSectionUid[loop_item],
getSourcePaymentUid[loop_item],
getSourceFunctionUid[loop_item],
getSourceProjectUid[loop_item],
getSourceFundingUid[loop_item],
getLedgerUid[loop_item],
getSourcePaymentRequestUid[loop_item],
getDestinationSectionUid[loop_item],
getDestinationUid[loop_item],
getResourceUid[loop_item],
-(getInventoriatedQuantity[loop_item] or 0),
isCancellationAmount[loop_item],
isAccountable[loop_item],
getStartDate[loop_item],
getStopDate[loop_item],
getSourceInventoriatedTotalAssetPrice[loop_item],
getPortalType[loop_item],
getSimulationState[loop_item],
getVariationText[loop_item],
getSubVariationText[loop_item]])">
</dtml-if>
</dtml-if>
</dtml-in>
<dtml-if "row_list">
INSERT INTO
stock
VALUES
<dtml-in prefix="row" expr="row_list">
(
<dtml-sqlvar expr="row_item[0]" type="int">,
<dtml-sqlvar expr="row_item[1]" type="int">,
<dtml-sqlvar expr="row_item[2]" type="int" optional>,
<dtml-sqlvar expr="row_item[3]" type="int">,
<dtml-sqlvar expr="row_item[4]" type="int" optional>,
<dtml-sqlvar expr="row_item[5]" type="int" optional>,
<dtml-sqlvar expr="row_item[6]" type="int" optional>,
<dtml-sqlvar expr="row_item[7]" type="int" optional>,
<dtml-sqlvar expr="row_item[8]" type="int" optional>,
<dtml-sqlvar expr="row_item[9]" type="int" optional>,
<dtml-sqlvar expr="row_item[10]" type="int" optional>,
<dtml-sqlvar expr="row_item[11]" type="int" optional>,
<dtml-sqlvar expr="row_item[12]" type="int" optional>,
<dtml-sqlvar expr="row_item[13]" type="int">,
<dtml-sqlvar expr="row_item[14]" type="float" optional>,
<dtml-sqlvar expr="row_item[15]" type="int">,
<dtml-sqlvar expr="row_item[16]" type="int">,
<dtml-sqlvar expr="row_item[17]" type="datetime" optional>,
<dtml-sqlvar expr="row_item[18]" type="datetime" optional>,
<dtml-sqlvar expr="row_item[19]" type="float" optional>,
<dtml-sqlvar expr="row_item[20]" type="string" optional>,
<dtml-sqlvar expr="row_item[21]" type="string" optional>,
<dtml-sqlvar expr="row_item[22]" type="string" optional>,
<dtml-sqlvar expr="row_item[23]" type="string" optional>
)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
</dtml-if>
</dtml-let>
<dtml-let row_list="[]">
<dtml-in prefix="loop" expr="_.range(_.len(subject_set_uid))">
<dtml-if expr="optimised_subject_list[loop_item]">
<dtml-in prefix="role" expr="optimised_subject_list[loop_item]">
<dtml-call expr="row_list.append([subject_set_uid[loop_item], role_item])">
</dtml-in>
</dtml-if>
</dtml-in>
<dtml-if expr="row_list">
INSERT INTO
subject
(`subject_set_uid`, `subject`)
VALUES
<dtml-in prefix="row" expr="row_list">
(<dtml-sqlvar expr="row_item[0]" type="string">, <dtml-sqlvar expr="row_item[1]" type="string">)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
</dtml-if>
</dtml-let>
<dtml-let row_list="[]">
<dtml-in row_dict_dict_list prefix="outer">
DELETE FROM `transformation` WHERE
<dtml-sqltest expr="outer_item['uid']" column="uid" type="int">
AND
<dtml-sqltest expr="outer_item['variation_text']" column="variation_text" type="string">;
<dtml-var sql_delimiter>
<dtml-call "row_list.extend(outer_item['row_dict_list'])">
</dtml-in>
<dtml-if "len(row_list)>0">
<dtml-var sql_delimiter>
INSERT INTO `transformation`
VALUES
<dtml-in row_list prefix="loop">
(
<dtml-sqlvar expr="loop_item['uid']" type="int">,
<dtml-sqlvar expr="loop_item['variation_text']" type="string">,
<dtml-sqlvar expr="loop_item['transformed_uid']" type="int">,
<dtml-sqlvar expr="loop_item['transformed_variation_text']" type="string">,
<dtml-sqlvar expr="loop_item['quantity']" type="float">
)
<dtml-unless sequence-end>,</dtml-unless>
</dtml-in>
</dtml-if>
</dtml-let>
\ No newline at end of file
INSERT INTO translation VALUES
<dtml-in prefix="loop" expr="_.range(_.len(language))">
(
<dtml-sqlvar expr="language[loop_item]" type="string">,
<dtml-sqlvar expr="message_context[loop_item]" type="string">,
<dtml-sqlvar expr="portal_type[loop_item]" type="string">,
<dtml-sqlvar expr="original_message[loop_item]" type="string">,
<dtml-sqlvar expr="translated_message[loop_item]" type="string">
)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
REPLACE INTO `user` (`uid`, `user_id`) VALUES
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
(
<dtml-sqlvar expr="uid[loop_item]" type="int">,
<dtml-sqlvar expr="getUserId[loop_item]" type="string">
)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
REPLACE INTO
versioning
(`uid`, `version`, `language`, `revision`, `subject_set_uid`, `effective_date`,
`expiration_date`, `creation_date_index`, `frequency_index`)
VALUES
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
(
<dtml-sqlvar expr="uid[loop_item]" type="int">,
<dtml-sqlvar expr="getVersion[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getLanguage[loop_item]" type="string" optional>,
<dtml-sqlvar expr="getRevision[loop_item]" type="string" optional>,
<dtml-sqlvar expr="subject_set_uid[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getEffectiveDate[loop_item]" type="datetime" optional>,
<dtml-sqlvar expr="getExpirationDate[loop_item]" type="datetime" optional>,
<dtml-sqlvar expr="getCreationDateIndex[loop_item]" type="int" optional>,
<dtml-sqlvar expr="getFrequencyIndex[loop_item]" type="int" optional>
)
<dtml-if sequence-end>
<dtml-else>
,
</dtml-if>
</dtml-in>
<dtml-if select_expression>
SELECT count(*) from (
SELECT DISTINCT
<dtml-in getCatalogSearchResultKeys> <dtml-var sequence-item><dtml-if sequence-end> <dtml-else>, </dtml-if> </dtml-in>
<dtml-if select_expression>,<dtml-var select_expression></dtml-if>
<dtml-else>
SELECT COUNT(DISTINCT(catalog.uid))
</dtml-if>
FROM
<dtml-if from_expression>
<dtml-var from_expression>
<dtml-else>
<dtml-in from_table_list> <dtml-var sequence-item> AS <dtml-var sequence-key><dtml-if sequence-end><dtml-else>,</dtml-if></dtml-in>
</dtml-if>
<dtml-if selection_domain>
<dtml-let expression="portal_selections.buildSQLJoinExpressionFromDomainSelection(selection_domain, category_table_alias = 'domain_category')">
<dtml-if expression> , <dtml-var expression> </dtml-if>
</dtml-let>
</dtml-if>
<dtml-if selection_report>
<dtml-let expression="portal_selections.buildSQLJoinExpressionFromDomainSelection(selection_report, category_table_alias = 'report_category')">
<dtml-if expression> , <dtml-var expression> </dtml-if>
</dtml-let>
</dtml-if>
WHERE
1 = 1
<dtml-if where_expression>
AND <dtml-var where_expression>
</dtml-if>
<dtml-if selection_domain>
<dtml-let expression="portal_selections.buildSQLExpressionFromDomainSelection(selection_domain, category_table_alias = 'domain_category')">
<dtml-if expression> AND <dtml-var expression> </dtml-if>
</dtml-let>
</dtml-if>
<dtml-if selection_report>
<dtml-let expression="portal_selections.buildSQLExpressionFromDomainSelection(selection_report, strict_membership=1, category_table_alias = 'report_category')">
<dtml-if expression> AND <dtml-var expression> </dtml-if>
</dtml-let>
</dtml-if>
<dtml-if sort_on>
ORDER BY
<dtml-var sort_on>
</dtml-if>
<dtml-if group_by_expression>
GROUP BY
<dtml-var group_by_expression>
</dtml-if>
<dtml-if select_expression>
) as q
</dtml-if>
<dtml-comment>XXX what is the meaning of limit_expression while counting ? -jerome</dtml-comment>
<dtml-if limit_expression>
LIMIT <dtml-var "limit_expression">
</dtml-if>
# Host:
# Database: test
# Table: 'catalog'
#
CREATE TABLE `alarm` (
`uid` BIGINT UNSIGNED NOT NULL,
`alarm_date` DATETIME,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB;
# Host:
# Database: test
# Table: 'catalog'
#
CREATE TABLE `catalog` (
`uid` BIGINT UNSIGNED NOT NULL,
`security_uid` INT UNSIGNED,
`owner` varbinary(255) NOT NULL default '',
`viewable_owner` varbinary(255) NOT NULL default '',
`path` varchar(255) NOT NULL default '',
`relative_url` varchar(255) NOT NULL default '',
`parent_uid` BIGINT UNSIGNED default '0',
`id` varchar(255) default '',
`description` text,
`title` varchar(255) default '',
`meta_type` varchar(255) default '',
`portal_type` varchar(255) default '',
`opportunity_state` varchar(255) default '',
`corporate_registration_code` varchar(255),
`ean13_code` varchar(255),
`validation_state` varchar(255) default '',
`simulation_state` varchar(255) default '',
`causality_state` varchar(255) default '',
`invoice_state` varchar(255) default '',
`payment_state` varchar(255) default '',
`event_state` varchar(255) default '',
`immobilisation_state` varchar(255) default '',
`reference` varchar(255) binary default '',
`grouping_reference` varchar(255) default '',
`grouping_date` datetime,
`source_reference` varchar(255) default '',
`destination_reference` varchar(255) default '',
`string_index` varchar(255),
`int_index` INT,
`float_index` real,
`has_cell_content` bool,
`creation_date` datetime,
`modification_date` datetime,
`indexation_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`uid`),
KEY `security_uid` (`security_uid`),
KEY `owner` (`owner`),
KEY `viewable_owner` (`viewable_owner`),
KEY `Parent` (`parent_uid`),
KEY `Path` (`path`),
KEY `Title` (`title`),
KEY `Reference` (`reference`),
KEY `relative_url` (`relative_url`),
KEY `Portal Type` (`portal_type`, `reference`),
KEY `opportunity_state` (`opportunity_state`),
KEY `validation_state_portal_type` (`validation_state`, `portal_type`),
KEY `simulation_state_portal_type` (`simulation_state`, `portal_type`),
KEY `causality_state_portal_type` (`causality_state`, `portal_type`),
KEY `invoice_state` (`invoice_state`),
KEY `payment_state` (`payment_state`),
KEY `event_state` (`event_state`)
) ENGINE=InnoDB;
# Host:
# Database: test
# Table: 'category'
#
CREATE TABLE `category` (
`uid` BIGINT UNSIGNED NOT NULL,
`category_uid` BIGINT UNSIGNED default '0',
`base_category_uid` BIGINT UNSIGNED default '0',
`category_strict_membership` tinyint(1) default '0',
PRIMARY KEY (`uid`, `category_uid`, `base_category_uid`, `category_strict_membership`),
KEY `Membership` (`category_uid`,`base_category_uid`)
) ENGINE=InnoDB;
\ No newline at end of file
CREATE TABLE `delivery` (
`uid` BIGINT UNSIGNED NOT NULL,
`source_uid` BIGINT UNSIGNED default '0',
`destination_uid` BIGINT UNSIGNED default '0',
`source_section_uid` BIGINT UNSIGNED default '0',
`destination_section_uid` BIGINT UNSIGNED default '0',
`resource_uid` BIGINT UNSIGNED default '0',
`start_date` datetime default NULL,
`start_date_range_min` datetime default NULL,
`start_date_range_max` datetime default NULL,
`stop_date` datetime default NULL,
`stop_date_range_min` datetime default NULL,
`stop_date_range_max` datetime default NULL,
PRIMARY KEY (`uid`),
KEY `source_uid` (`source_uid`),
KEY `destination_uid` (`destination_uid`),
KEY `source_section_uid` (`source_section_uid`),
KEY `destination_section_uid` (`destination_section_uid`),
KEY `resource_uid` (`resource_uid`),
KEY `start_date` (`start_date`)
) ENGINE=InnoDB
# Host:
# Database: test
# Table: 'item'
#
CREATE TABLE `item` (
`uid` BIGINT UNSIGNED NOT NULL,
`order_id` TINYINT UNSIGNED NOT NULL,
`date` datetime,
`node_uid` BIGINT UNSIGNED default '0',
`section_uid` BIGINT UNSIGNED default '0',
`resource_uid` BIGINT UNSIGNED default '0',
`aggregate_uid` BIGINT UNSIGNED default '0',
`variation_text` VARCHAR(255),
`simulation_state` VARCHAR(255) default '',
PRIMARY KEY (`uid`, `aggregate_uid`,`order_id`),
KEY `section_uid` (`section_uid`),
KEY `resource_uid` (`resource_uid`),
KEY `variation_text` (`variation_text`),
KEY `aggregate_simulation_state_date` (`aggregate_uid`,`simulation_state`,`date`),
KEY `node_simulation_state_date` (`node_uid`,`simulation_state`,`date`)
) ENGINE=InnoDB;
CREATE TABLE `measure` (
`uid` BIGINT UNSIGNED NOT NULL,
`resource_uid` BIGINT UNSIGNED NOT NULL,
`variation` VARCHAR(255),
`metric_type_uid` BIGINT UNSIGNED NOT NULL,
`quantity` REAL NOT NULL,
PRIMARY KEY (`uid`, `variation`),
KEY (`metric_type_uid`)
) ENGINE=InnoDB;
CREATE TABLE predicate (
uid BIGINT UNSIGNED NOT NULL,
`quantity` real ,
`quantity_range_min` real ,
`quantity_range_max` real ,
`start_date` datetime,
`start_date_range_min` datetime ,
`start_date_range_max` datetime ,
PRIMARY KEY `uid` (`uid`)
) ENGINE=InnoDB;
# Host:
# Database: test
# Table: 'category'
#
CREATE TABLE `predicate_category` (
`uid` BIGINT UNSIGNED NOT NULL,
`category_uid` BIGINT UNSIGNED default '0',
`base_category_uid` BIGINT UNSIGNED default '0',
`category_strict_membership` tinyint(1) default '0',
PRIMARY KEY (`uid`, `category_uid`, `base_category_uid`, `category_strict_membership`),
KEY `category_strict_membership` (`category_strict_membership`),
KEY `Membership` (`category_uid`,`base_category_uid`)
) ENGINE=InnoDB;
CREATE TABLE `quantity_unit_conversion` (
`uid` BIGINT UNSIGNED,
`resource_uid` BIGINT UNSIGNED NOT NULL,
`quantity_unit_uid` BIGINT UNSIGNED NOT NULL,
`quantity` REAL NOT NULL,
PRIMARY KEY (`resource_uid`, `quantity_unit_uid`),
KEY (`uid`)
) ENGINE=InnoDB;
# Host:
# Database: test
# Table: 'record'
#
CREATE TABLE `record` (
`uid` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`path` varchar(255) NOT NULL default '',
`catalog` BOOL NOT NULL default 0,
`played` BOOL NOT NULL default 0,
`date` DATETIME NOT NULL,
PRIMARY KEY (`uid`),
KEY `played` (`played`),
KEY `date` (`date`)
) ENGINE=InnoDB;
CREATE TABLE roles_and_users (
uid INT UNSIGNED,
allowedRolesAndUsers VARCHAR(255),
KEY `uid` (`uid`),
KEY `allowedRolesAndUsers` (`allowedRolesAndUsers`)
) ENGINE=InnoDB;
# Host:
# Database: test
# Table: 'stock'
#
CREATE TABLE `stock` (
`uid` BIGINT UNSIGNED NOT NULL,
`order_id` BIGINT UNSIGNED NOT NULL,
`explanation_uid` BIGINT UNSIGNED,
`node_uid` BIGINT UNSIGNED,
`section_uid` BIGINT UNSIGNED,
`payment_uid` BIGINT UNSIGNED,
`function_uid` BIGINT UNSIGNED,
`project_uid` BIGINT UNSIGNED,
`funding_uid` BIGINT UNSIGNED,
`ledger_uid` BIGINT UNSIGNED,
`payment_request_uid` BIGINT UNSIGNED,
`mirror_section_uid` BIGINT UNSIGNED,
`mirror_node_uid` BIGINT UNSIGNED,
`resource_uid` BIGINT UNSIGNED,
`quantity` real,
`is_cancellation` BOOLEAN,
`is_accountable` BOOLEAN,
`date` datetime,
`mirror_date` datetime,
`total_price` real ,
`portal_type` VARCHAR(255),
`simulation_state` varchar(255) default '',
`variation_text` VARCHAR(255),
`sub_variation_text` VARCHAR(255),
PRIMARY KEY (`uid`, `order_id`),
KEY `quantity` (`quantity`),
KEY `section_uid_portal_type_mirror_section_uid` (`section_uid`, `portal_type`, `mirror_section_uid`),
KEY `mirror_section_uid` (`mirror_section_uid`),
KEY `mirror_node_uid` (`mirror_node_uid`),
KEY `node_uid` (`node_uid`),
KEY `payment_uid` (`payment_uid`),
KEY `function_uid` (`function_uid`),
KEY `payment_request_uid` (`payment_request_uid`),
KEY `project_uid` (`project_uid`),
KEY `funding_uid` (`funding_uid`),
KEY `explanation_uid` (`explanation_uid`),
KEY `state_section_node_date` (`simulation_state`, `section_uid`, `node_uid`, `date`),
KEY `resource_node_uid` (`resource_uid`, `node_uid`),
KEY `resource_section_node_uid` (`resource_uid`, `section_uid`, `node_uid`, `simulation_state`),
KEY `date` (`date`)
) ENGINE=InnoDB;
CREATE TABLE subject (
subject_set_uid INT UNSIGNED NOT NULL,
subject VARCHAR(255),
KEY `subject_set_uid` (`subject_set_uid`),
KEY `subject` (`subject`)
) ENGINE=InnoDB;
CREATE TABLE `transformation` (
`uid` bigint(20) unsigned NOT NULL,
`variation_text` varchar(255) default '',
`transformed_uid` bigint(20) unsigned NOT NULL,
`transformed_variation_text` varchar(255) default '',
`quantity` double,
KEY `resource` (`uid`, `variation_text`),
KEY `transformed_resource` (`transformed_uid`, `transformed_variation_text`)
) ENGINE=InnoDB;
CREATE TABLE translation (
language VARCHAR(255),
message_context VARCHAR(50),
portal_type VARCHAR(255),
original_message VARCHAR(255),
translated_message VARCHAR(255),
KEY `message` (`translated_message`),
KEY `original_message` (`original_message`),
KEY `type_translated_message` (`portal_type`,`translated_message`)
) ENGINE=InnoDB;
CREATE TABLE `user` (
`uid` BIGINT UNSIGNED NOT NULL,
`user_id` varchar(255) binary default '',
PRIMARY KEY (`uid`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB;
CREATE TABLE `versioning` (
`uid` BIGINT UNSIGNED NOT NULL,
`version` varchar(10) default '',
`language` varchar(5) default '',
`revision` varchar(10) default '',
`subject_set_uid` INT UNSIGNED,
`effective_date` datetime default NULL,
`expiration_date` datetime default NULL,
`creation_date_index` INT,
`frequency_index` INT,
PRIMARY KEY (`uid`),
KEY `version` (`version`),
KEY `language` (`language`),
KEY `subject_set_uid` (`subject_set_uid`),
KEY `effective_date` (`effective_date`),
KEY `expiration_date` (`expiration_date`),
KEY `frequency_index` (`creation_date_index`, `frequency_index`)
) ENGINE=InnoDB;
<dtml-comment>Do not delete rows really, but just mark them as "played" to avoid dead locks</dtml-comment>
UPDATE
record
SET
played = 1
WHERE
<dtml-in uid_list>
uid = <dtml-sqlvar sequence-item type="string"><dtml-if sequence-end><dtml-else> OR </dtml-if>
</dtml-in>
REPLACE INTO
catalog (uid, path,relative_url,security_uid,portal_type,parent_uid)
VALUES
(<dtml-sqlvar uid type="int">, 'deleted','',NULL,'',NULL)
<dtml-var sql_delimiter>
<dtml-comment>
Note on "UPDATE stock" query: this query preserve transactionality of movement
deletion: all movements deleted in a single transaction will be either
simultaneously found by Inventory Tool API, or simultaneously not found.
This does not change anything WRT inventories, modulo unindexation lag.
</dtml-comment>
UPDATE stock
SET simulation_state=''
WHERE uid=<dtml-sqlvar uid type="int">
SELECT
TABLE_NAME, COLUMN_NAME
FROM
information_schema.COLUMNS
WHERE
TABLE_SCHEMA=DATABASE()
\ No newline at end of file
SELECT <dtml-if uid_only>uid<dtml-else>uid,path</dtml-if> from catalog
WHERE
1 = 1
<dtml-if path>
AND <dtml-sqltest path op=eq type="string">
</dtml-if>
<dtml-if path_list>
AND path IN (<dtml-in path_list><dtml-sqlvar sequence-item type="string">
<dtml-if sequence-end><dtml-else>,</dtml-if></dtml-in>)
</dtml-if>
SELECT <dtml-if path_only>path<dtml-else>uid,path</dtml-if> from catalog
WHERE
1 = 1
<dtml-if expr="uid is not None">
AND <dtml-sqltest uid op=eq type="int">
</dtml-if>
<dtml-if uid_list>
AND uid IN (<dtml-in uid_list><dtml-sqlvar sequence-item type="int">
<dtml-if sequence-end><dtml-else>,</dtml-if></dtml-in>)
</dtml-if>
# Warning : This method is obsolete, the new method is IdTool_zCommit
# it's kept for backward compatiblity
commit
\ No newline at end of file
# Warning : This method is obsolete, the new method is IdTool_zGenerateId
# it's kept for backward compatiblity
# DO NOT FORGET TO COMMIT AFTER !!
# commit ZSQL method should be z_portal_ids_commit
BEGIN
<dtml-var sql_delimiter>
INSERT INTO portal_ids (`id_group`, `last_id`)
VALUES (<dtml-sqlvar id_group type="string">, <dtml-sqlvar expr="id_count + default" type="int">)
ON DUPLICATE KEY UPDATE `last_id` = `last_id` + <dtml-sqlvar id_count type="int">
<dtml-var sql_delimiter>
SELECT `last_id` AS `LAST_INSERT_ID()` FROM portal_ids
WHERE `id_group` = <dtml-sqlvar id_group type="string">
INSERT INTO
catalog (id, path)
VALUES
<dtml-in "_.range(count - 1)">
( <dtml-sqlvar instance_id type="string"> , 'reserved' ) ,
</dtml-in>
( <dtml-sqlvar instance_id type="string"> , 'reserved' );
<dtml-var "'\0'">
SELECT
uid
FROM
catalog
WHERE
path = 'reserved'
AND
id = <dtml-sqlvar instance_id type="string">
LIMIT
10000
SELECT
uid, path
FROM
record
WHERE
played = 0
AND catalog = <dtml-sqlvar catalog type="int">
ORDER BY
date
INSERT INTO
record (path, catalog, played, date)
VALUES
<dtml-in path_list>
(
<dtml-sqlvar sequence-item type="string">,
<dtml-sqlvar catalog type="int">,
0,
NOW()
)
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
<dtml-var table_1>.portal_type = 'Base Category' AND
<dtml-var table_1>.uid = <dtml-var table_0>.base_category_uid AND
<dtml-var table_0>.category_strict_membership = 1 AND
<dtml-var table_0>.uid = catalog.uid
\ No newline at end of file
<dtml-var table_2>.uid = <dtml-var table_0>.category_uid
AND <dtml-var table_0>.base_category_uid = <dtml-var "portal_categories.skill.getUid()">
AND <dtml-var table_0>.uid = <dtml-var table_1>.uid
AND <dtml-var table_1>.parent_uid = catalog.uid
AND <dtml-var table_1>.portal_type = 'Career'
<dtml-var table_0>.uid = <dtml-var table_1>.uid
<dtml-var RELATED_QUERY_SEPARATOR>
<dtml-var table_2>.uid = <dtml-var table_1>.category_uid
<dtml-var RELATED_QUERY_SEPARATOR>
<dtml-var table_1>.base_category_uid = <dtml-var "portal_categories.aggregate.getUid()">
AND <dtml-var table_0>.uid = <dtml-var table_1>.uid
AND <dtml-var table_0>.parent_uid = <dtml-var query_table>.uid
\ No newline at end of file
<dtml-comment>
table_0 : catalog as children
</dtml-comment>
<dtml-var table_0>.parent_uid = catalog.uid
<dtml-var table_1>.uid = <dtml-var table_0>.explanation_uid
<dtml-var RELATED_QUERY_SEPARATOR>
<dtml-var table_0>.uid = <dtml-var query_table>.uid
<dtml-var table_1>.message_context = "portal_type"
AND <dtml-var table_1>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
<dtml-var RELATED_QUERY_SEPARATOR>
<dtml-var table_1>.original_message = <dtml-var table_0>.portal_type
AND <dtml-var table_0>.uid = stock.explanation_uid
\ No newline at end of file
<dtml-var table_1>.uid = <dtml-var table_0>.parent_uid
<dtml-var RELATED_QUERY_SEPARATOR>
<dtml-var table_0>.uid = <dtml-var query_table>.parent_uid
\ No newline at end of file
<dtml-comment>
table_0 category as resource
table_1 category as use
</dtml-comment>
catalog.uid = <dtml-var table_0>.uid
AND <dtml-var table_0>.base_category_uid = <dtml-var "portal_categories.resource.getUid()">
AND <dtml-var table_0>.category_uid = <dtml-var table_1>.uid
AND <dtml-var table_1>.base_category_uid = <dtml-var "portal_categories.use.getUid()">
\ No newline at end of file
<dtml-var table_0>.uid = catalog.uid AND
<dtml-var table_0>.subject_set_uid = <dtml-var table_1>.subject_set_uid
\ No newline at end of file
<dtml-var table_2>.original_message = <dtml-var table_1>.portal_type
AND <dtml-var table_2>.message_context = "portal_type"
AND <dtml-var table_2>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
AND <dtml-var table_1>.uid = <dtml-var table_0>.category_uid
AND <dtml-var table_0>.base_category_uid = <dtml-var "portal_categories.causality.getUid()">
AND <dtml-var table_0>.uid = catalog.uid
<dtml-var table_0>.original_message = catalog.causality_state
AND <dtml-var table_0>.message_context = "causality_state"
AND <dtml-var table_0>.portal_type = catalog.portal_type
AND <dtml-var table_0>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
\ No newline at end of file
<dtml-var table_0>.original_message = catalog.causality_state
AND <dtml-var table_0>.message_context = "causality_state_title"
AND <dtml-var table_0>.portal_type = catalog.portal_type
AND <dtml-var table_0>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
\ No newline at end of file
<dtml-var table_0>.original_message = catalog.opportunity_state
AND <dtml-var table_0>.message_context = "opportunity_state"
AND <dtml-var table_0>.portal_type = catalog.portal_type
AND <dtml-var table_0>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
<dtml-var table_0>.original_message = catalog.opportunity_state
AND <dtml-var table_0>.message_context = "opportunity_state_title"
AND <dtml-var table_0>.portal_type = catalog.portal_type
AND <dtml-var table_0>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
<dtml-var table_0>.original_message = catalog.portal_type
AND <dtml-var table_0>.message_context = "portal_type"
AND <dtml-var table_0>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
\ No newline at end of file
<dtml-var table_0>.original_message = catalog.simulation_state
AND <dtml-var table_0>.message_context = "simulation_state"
AND <dtml-var table_0>.portal_type = catalog.portal_type
AND <dtml-var table_0>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
\ No newline at end of file
<dtml-var table_0>.original_message = catalog.simulation_state
AND <dtml-var table_0>.message_context = "simulation_state_title"
AND <dtml-var table_0>.portal_type = catalog.portal_type
AND <dtml-var table_0>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
<dtml-var table_0>.original_message = catalog.validation_state
AND <dtml-var table_0>.message_context = "validation_state"
AND <dtml-var table_0>.portal_type = catalog.portal_type
AND <dtml-var table_0>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
\ No newline at end of file
<dtml-var table_0>.original_message = catalog.validation_state
AND <dtml-var table_0>.message_context = "validation_state_title"
AND <dtml-var table_0>.portal_type = catalog.portal_type
AND <dtml-var table_0>.language = <dtml-sqlvar "Localizer.get_selected_language()" type="string">
\ No newline at end of file
((<dtml-var table_0>.is_accountable = 0
AND <dtml-var table_0>.uid = catalog.parent_uid
AND <dtml-var table_0>.uid = <dtml-var table_1>.uid)
OR
(<dtml-var table_0>.is_accountable = 1
AND <dtml-var table_0>.uid = catalog.uid
AND <dtml-var table_0>.uid = <dtml-var table_1>.uid))
REPLACE INTO
catalog (uid, id, path)
VALUES
<dtml-in uid>
(<dtml-sqlvar sequence-item type="int">, 'used', 'reserved')
<dtml-if sequence-end><dtml-else>,</dtml-if>
</dtml-in>
\ No newline at end of file
SELECT DISTINCT
<dtml-in getCatalogSearchResultKeys> <dtml-var sequence-item><dtml-if sequence-end> <dtml-else>, </dtml-if> </dtml-in>
<dtml-if select_expression>,<dtml-var select_expression></dtml-if>
FROM
<dtml-if from_expression>
<dtml-var from_expression>
<dtml-else>
<dtml-in from_table_list> <dtml-var sequence-item> AS <dtml-var sequence-key><dtml-if sequence-end><dtml-else>,</dtml-if></dtml-in>
</dtml-if>
<dtml-if selection_domain>
<dtml-let expression="portal_selections.buildSQLJoinExpressionFromDomainSelection(selection_domain, category_table_alias = 'domain_category')">
<dtml-if expression> , <dtml-var expression> </dtml-if>
</dtml-let>
</dtml-if>
<dtml-if selection_report>
<dtml-let expression="portal_selections.buildSQLJoinExpressionFromDomainSelection(selection_report, category_table_alias = 'report_category')">
<dtml-if expression> , <dtml-var expression> </dtml-if>
</dtml-let>
</dtml-if>
WHERE
1 = 1
<dtml-if where_expression>
AND <dtml-var where_expression>
</dtml-if>
<dtml-if selection_domain>
<dtml-let expression="portal_selections.buildSQLExpressionFromDomainSelection(selection_domain, category_table_alias = 'domain_category')">
<dtml-if expression> AND <dtml-var expression> </dtml-if>
</dtml-let>
</dtml-if>
<dtml-if selection_report>
<dtml-let expression="portal_selections.buildSQLExpressionFromDomainSelection(selection_report, strict_membership=1, category_table_alias = 'report_category')">
<dtml-if expression> AND <dtml-var expression> </dtml-if>
</dtml-let>
</dtml-if>
<dtml-if group_by_expression>
GROUP BY
<dtml-var group_by_expression>
</dtml-if>
<dtml-if sort_on>
ORDER BY
<dtml-var sort_on>
</dtml-if>
<dtml-if limit_expression>
LIMIT <dtml-var "limit_expression">
</dtml-if>
SELECT
DISTINCT uid
FROM
roles_and_users
WHERE
allowedRolesAndUsers
IN (<dtml-in security_roles_list><dtml-var sequence-item><dtml-if sequence-end><dtml-else>,</dtml-if></dtml-in>)
DELETE FROM catalog WHERE <dtml-sqltest uid op=eq type=int>
\ No newline at end of file
portal_catalog/erp5_mysql_innodb | 1 | 1
portal_catalog/erp5_mysql_innodb/SQLCatalog_catalogTransformation | 1 | 1
portal_catalog/erp5_mysql_innodb/SQLCatalog_catalogTransformationList | 1 | 1
portal_catalog/erp5_mysql_innodb/SQLCatalog_makeFullTextQuery | 1 | 1
portal_catalog/erp5_mysql_innodb/SQLCatalog_makeQuickSearchQuery | 1 | 1
portal_catalog/erp5_mysql_innodb/SQLCatalog_makeSearchTextQuery | 1 | 1
portal_catalog/erp5_mysql_innodb/SQLCatalog_makeTranslatedTitleQuery | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_alarm | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_catalog | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_category | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_delivery | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_item | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_measure | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_predicate | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_predicate_category | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_quantity_unit_conversion | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_record | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_roles_and_users | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_subject | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_transformation | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_translation | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_user | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_drop_versioning | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_alarm | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_category | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_item | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_measure | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_predicate | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_predicate_category | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_quantity_unit_conversion | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_transformation | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_user | 1 | 1
portal_catalog/erp5_mysql_innodb/z0_uncatalog_versioning | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_alarm_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_delivery_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_item_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_measure_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_movement_category_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_non_movement_category_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_object_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_paths | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_predicate_category_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_predicate_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_quantity_unit_conversion_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_roles_and_users_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_stock_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_stock_list_without_delete_for_inventory_virtual_movement | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_subject_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_transformation_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_translation_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_user_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_catalog_versioning_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_clear_reserved | 1 | 1
portal_catalog/erp5_mysql_innodb/z_count_results | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_alarm | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_catalog | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_category | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_delivery | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_item | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_measure | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_predicate | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_predicate_category | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_quantity_unit_conversion | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_record | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_roles_and_users | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_subject | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_transformation | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_translation | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_user | 1 | 1
portal_catalog/erp5_mysql_innodb/z_create_versioning | 1 | 1
portal_catalog/erp5_mysql_innodb/z_delete_recorded_object_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_delete_translation_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_delete_uid | 1 | 1
portal_catalog/erp5_mysql_innodb/z_get_table_schema | 1 | 1
portal_catalog/erp5_mysql_innodb/z_getitem_by_path | 1 | 1
portal_catalog/erp5_mysql_innodb/z_getitem_by_uid | 1 | 1
portal_catalog/erp5_mysql_innodb/z_portal_ids_commit | 1 | 1
portal_catalog/erp5_mysql_innodb/z_portal_ids_generate_id | 1 | 1
portal_catalog/erp5_mysql_innodb/z_produce_reserved_uid_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_read_recorded_object_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_record_object_list | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_base_category_id | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_career_skill | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_child_aggregate | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_children | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_explanation | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_explanation_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_explanation_translated_portal_type_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_function_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_funding_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_grand_parent | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_ledger_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_metric_type | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_mirror_section_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_node_uid_from_item | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_node_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_parent | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_payment_request_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_payment_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_predicate | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_predicate_category | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_project_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_resource_from_use | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_resource_uid_from_item | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_resource_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_section_uid_from_item | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_section_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_strict_membership_function_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_strict_membership_funding_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_strict_membership_ledger_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_strict_membership_mirror_section_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_strict_membership_node_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_strict_membership_payment_request_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_strict_membership_payment_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_strict_membership_project_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_strict_membership_resource_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_strict_membership_section_uid_from_stock | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_subject | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_translated_causality_portal_type | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_translated_causality_state | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_translated_causality_state_title | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_translated_opportunity_state | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_translated_opportunity_state_title | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_translated_portal_type | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_translated_simulation_state | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_translated_simulation_state_title | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_translated_validation_state | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_translated_validation_state_title | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_uid | 1 | 1
portal_catalog/erp5_mysql_innodb/z_related_uid_or_parent_uid | 1 | 1
portal_catalog/erp5_mysql_innodb/z_reserve_uid | 1 | 1
portal_catalog/erp5_mysql_innodb/z_search_results | 1 | 1
portal_catalog/erp5_mysql_innodb/z_search_security | 1 | 1
portal_catalog/erp5_mysql_innodb/z_select_optimizer_switch | 1 | 1
portal_catalog/erp5_mysql_innodb/z_show_category_columns | 1 | 1
portal_catalog/erp5_mysql_innodb/z_show_columns | 1 | 1
portal_catalog/erp5_mysql_innodb/z_show_index | 1 | 1
portal_catalog/erp5_mysql_innodb/z_show_tables | 1 | 1
portal_catalog/erp5_mysql_innodb/z_uncatalog_delivery | 1 | 1
portal_catalog/erp5_mysql_innodb/z_uncatalog_object | 1 | 1
portal_catalog/erp5_mysql_innodb/z_unique_values | 1 | 1
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment