Changelog
For user-facing changes, refer to the What's New? page.
The format is based on Keep a Changelog and this project adheres to Romantic Versioning.
5.11.13
2024-01-18
Fixed
- PIVOT-5110 Fixed
DrillthroughProperties
deep clone method. - PIVOT-5283 Fixed
QueryResultsProcessingTask
statistics on aggregation duration. - PIVOT-6475 Fixed a bug in aggregates cache which might lead to producing empty results on subsequent queries involving the same location.
- PIVOT-7838 Fixed class cast in
ShiftMeasure.LevelShift#equals
. - PIVOT-8343 Improved record query performance when run on current thread by not creating empty completion tasks for non-matching partitions.
- PIVOT-8427 Fixed null value handling in Copper UDAF
.outputFromBuffer()
. - PIVOT-8480 Fixed bug in
GetAggregatesResultCellsetTester
that caused an error while checking integer measures with.hasValues()
.
5.11.12
2023-12-07
Added
- PIVOT-7176 The cube filter is now used in distributed cubes to limit the number of data nodes the query is sent to.
- PIVOT-8274 Added
CsvSourceFactory
to create anICSVSource
.
Deprecated
- PIVOT-8274 Deprecated
CSVSource
, useCsvSourceFactory
instead.
Fixed
- PIVOT-7367 PIVOT-8013 Context values are now properly propagated along a chain of measures after going through Copper's measure optimization.
- PIVOT-7580 Fix continuous MDX query initialization issue caused by uninitialized post-processor on a query cube.
- PIVOT-8322 Fix NotSerializableException when using
Copper.userDefinedAgg
on a query cube. - PIVOT-8182 In a distributed setup, unexpected errors that happened in one cube while sending a message should no longer cause off-heap memory leaks after failing to properly receive this message in another cube. These leaks are believed to be Netty buffers that were not properly released on error handling.
Security
- PIVOT-8320 Migrated the products to depend on Spring Boot 2.7.18, to address CVE-2023-44487 and CVE-2023-46673.
- PIVOT-8320 Upgrade
ch.qos.logback:logback-core
,ch.qos.logback:logback-classic
andch.qos.logback:logback-access
to version 1.2.13 to fix CVE-2023-6378.
5.11.11
2023-10-12
Fixed
- PIVOT-7632 The XMLA Servlet now properly handles Excel' requests to cancel a query. Excel primarily sends cancellation requests when a user types in a search bar, stops typing (a query is sent to Atoti Server), and then resumes typing.
- PIVOT-7910
NeighborValuePostProcessor
no longer throws anAssertionError
if queried on a non-existing member of the shifting hierarchy.
Security
- PIVOT-7695 Migrate the products to depend on SpringBoot 2.7.16, to address as many CVEs as possible.
- PIVOT-7695 Upgrade AWS SDK, from 1.11.708 to 1.12.562.
- PIVOT-7695 Upgrade Google Cloud Storage, from 1.106.1 to 1.118.1.
- PIVOT-7695 Upgrade Azure dependencies to be compatible with SpringBoot versions.
- PIVOT-7695 Upgrade Apache Hadoop dependencies, from 3.3.1 to 3.3.6.
- PIVOT-7695 Upgrade Apache Avro from 1.7.7 to 1.11.3.
- PIVOT-7695 Upgrade Apache Parquet from 1.12.2 to 1.13.1.
- PIVOT-7695 Upgrade Jgroups from 4.2.4.Final to 4.2.23.Final.
- PIVOT-7695 Upgrade Velocity Engine (code generation) from 2.0 to 2.3.
- PIVOT-7695 Upgrade Zipkin/Brave (APM) from 5.13.3 to 5.13.11.
- PIVOT-7695 Migrate Jackson to 2.13.5 to address CVEs, relying on SpringBoot's BOM to do so.
- PIVOT-7695 Upgrade guava from 31.0.1 to 32.1.2 to mitigate reported CVEs. Guava is not immediately used in Atoti Server but the optional Datastore Schema Printer and cloud sources.
- PIVOT-7695 Removed h2 database from our compiled dependencies. It now has the scope
test
? - PIVOT-7888 Upgraded libraries to connect to Microsoft Azure (
azure-identity
to 1.10.1,azure-core-http-netty
to 1.13.7,azure-keyvault-keys
to 4.6.5,azure-storage-blob
to 12.24.0,azure-storage-blob-cryptography
to 12.23.0,azure-resourcemanager
to 2.30.0)
5.11.10
2023-08-31
Added
- PIVOT-7295 Add a CubeFilter translator to allow the cube filters to be added to the map of context values in REST queries.
Changed
- PIVOT-6776 Mapper functions in post-processors no longer have to write
null
values int result cells explicitly.
5.11.9
2023-07-24
Added
- PIVOT-5860 In the
MemoryAnalysisService
MBean, added an operationDump full application memory statistics
exporting memory statistics for all versions.
Changed
- PIVOT-5860 In the
MemoryAnalysisService
MBean, renamed the operationDump memory statistics
toDump memory statistics for most recent version
since this operation only exports the most recent version.
Fixed
- PIVOT-7050 Inserting data into an initially empty joined store now correctly updates corresponding analysis hierarchies.
- PIVOT-7315 Fix overriding epoch dimension visibility with the mdx context.
- PIVOT-7316 Fix query issue when distributing field is null or "N/A". The query engine used to skip cubes with only null distributing fields values.
- PIVOT-7336
Copper.storeLookup
could use a too recent Datastore version when a transaction would create a Datastore version but not an ActivePivot one. - PIVOT-7349
RecordFormat#getFieldNames
no longer creates a new list at each method call, thus improving its footprint. - PIVOT-7359 When asked to output the
K
top/bottom elements of the vector, theZeroVector
class no longer throwsIndexArrayOutOfBoundException
whenK = vector.size()
. - PIVOT-7377 Fixed a parallelism issue, and improved the speed of an aggregate provider transaction in a very specific case: multiple database partitions only contribute to a unique partition of an aggregate provider.
- PIVOT-7419 Fix bug in DrilldownMember causing members to be missing in the result.
5.11.8
2023-06-08
Fixed
- PIVOT-7123 Fix Class Cast Exception that would occur when performing a data export from an MDX Query containing a calculated member.
5.11.7
2023-05-02
Added
- PIVOT-6804 Add possibility to enable aggressive check (using
ActiveVIamProperty#AGGRESSIVE_CELLSET_SIZE_CHECK_PROPERTY
) on MDX CellSet axis positions during axis materialization (see andIMdxContext#getAxisPositionLimit()
).
Fixed
- PIVOT-5316 Fix issue with not seeing all processor cores for Windows machines with 64+ CPUs.
- PIVOT-5978
LimitedByteArrayOutputStream
now handles specific edge cases that could cause the XMLA Servlet to still generate Out of Memory Errors. - PIVOT-6213
TransactionQueryRunner
no longer creates a transaction object on a partition when there is a transaction on the store. - PIVOT-6642 Improve thread synchronization in the MDX engine.
- PIVOT-6917 Distributed drillthrough queries properly function when one of the application's data nodes declares concealed hierarchies.
- PIVOT-7020 Correctly propagate exception to partitions of a
JITPrimitiveAggregatesRetrieval
. - PIVOT-7062 Fix data loading for JDBC drivers that do not support fetch size hints.
- PIVOT-7089 Fix data race when discarding retrieval results in the query engine.
- PIVOT-7105 Fix
TimestampFunction
regression causing an exception to be thrown for any input data type being Nullable.
Security
- PIVOT-7057 Upgrade Spring boot starter parent and Spring boot dependencies version from 2.6.0 to 2.6.14, Cxf version from 3.4.5 to 3.4.10 and Google cloud storage version from 1.106.0 to 1.106.1 to fix vulnerabilities.
5.11.6
2023-03-17
Added
- PIVOT-5523 The context value expiration time can now be configured by
ActiveViamProperty.CONTEXT_VALUE_MANAGER_VALUE_LIFETIME_PROPERTY
. This will affect the calculated members created by Excel. - PIVOT-5734
Copper#constant
now supports Object Vectors. - PIVOT-5929 Allow to add a prefix to the names generated in the content server with
ActiveViamProperty.CONTENT_SERVICE_NAME_GENERATOR_PREFIX
. This is done to easily differentiate between artifacts and assets created on different content server instances. - PIVOT-6168 Add execution context compute time per retrieval to query plan, only available for bitmap retrievals
- ADMINUI-10 In the sandbox, a /ui folder is created in the Content Server at startup if it does not exist yet. It contains the file structure necessary for Atoti UI to work correctly.
Changed
- PIVOT-6599 Restore APM's original
TraceableCsvSource
for backward compatibility, and makeTraceableCsvSourceV2
the default source in APM. - PIVOT-5317 internal The property
ActiveviamProperty#DATA_CUBE_REST_ENDPOINT_PROPERTY
has now been split into two properties,ActiveviamProperty#DATA_CUBE_REST_ENDPOINT_PORT_PROPERTY
andActiveviamProperty#DATA_CUBE_REST_ENDPOINT_SUFFIX_PROPERTY
.
Deprecated
- PIVOT-6599 Deprecate
TraceableCsvSource
.
Removed
- PIVOT-5317 Remove the syntax allowing to define multiple endpoint within a single application.
Fixed
- PIVOT-6175 Fix partitioning race conditions during query execution. The query engine now operates with immutable snapshots of partitioning state, which prevents wrong retrieval sizing and
ArrayIndexOutOfBoundsException
in particular. - PIVOT-6015 Fix copper first objects comparator being ignored
- PIVOT-6196 Fix an issue where we couldn't restart a
DistributedMessenger
when it was already paused. - PIVOT-6669 Speed up query using the Mdx range operator in subselects.
- PIVOT-6792 Fix race condition in distribution. The issue appeared intermittently on consecutive branch creation and deletion.
5.11.5
2022-12-28
Added
- PIVOT-5317 Data cube now can have a unique identifier using the fluent builder API
IDataClusterDescriptionBuilderWithIdAndMessengerDefinition#withUniqueIdentifierInCluster
. See migration notes. - PIVOT-5317 Breaking Expose remote data cube physical addresses in the query cube.
ADistributedMessenger
now includeCubeEndPointInfo
in its constructor, a data structure holding information regarding cube addresses and identifiers. These data are solely resolved by core ActivePivot, thus one has just to include the new field in any subsequent messenger.
Changed
- PIVOT-5693 Reduce transient memory footprint of the JIT aggregate provider. This is particularly crucial for use cases including a large number of small transactions.
- PIVOT-6046 Now the query engine checks for interruptions during the planning phase. This is done to avoid cases where the query involving a lot of filtering blocks the session.
Fixed
- PIVOT-5541 In a distributed application, a restart of a messenger will now properly free the port it was previously bound to. The freed port will be reusable, meaning that a messenger will no longer be able to use its entire dedicated range of ports.
- PIVOT-5668 Fix APM services monitoring. This resulted in loss of any customization to ActivePivot services.
- PIVOT-5809 Fix ArrayIndexOutOfBounds exceptions in
ActivePivotAggregatesRetriever
. - PIVOT-6159 Fix partitioning race condition during query execution. The issue could happen during a query execution where concurrent store transaction trigger the creation of new partitions.
- PIVOT-5813 Fix NullPointerException that could occurs with Copper's window.
- PIVOT-5825 Fix
IllegalArgumentException
occurring when defining a Copper bucketing hierarchy using a custom-named Copper join level as one of its underlying sources. - PIVOT-5867
AHibernateContentService
's locking strategy is improved to lock smaller unit of works. This will prevent potential deadlocks. - PIVOT-5873 Fix thread vector allocator un-consistency. Previously, a thread requesting a transient allocator could end-up with a direct memory allocator.
- PIVOT-5887 Arrange for a spare thread for continuous MDX updates. Previous implementation could cause live locks in case of work-stealing.
- PIVOT-5925 Prevent
NullPointerException
for non selected query partitions result cursor. - PIVOT-5994 Children of range-sharing retrievals are correctly printed as dependency in the query plan.
- PIVOT-5978 Prevent
OutOfMemoryError
crashes in the XMLA Servlet when attempting to send a message that does not fit in a byte array of sizeInteger.MAX_VALUE
.RuntimeException
will be thrown instead. - PIVOT-6053 Fix performance issue when reducing the number of allowed concurrent queries in the
MdxQueryBouncer
. - PIVOT-6133 Fix deadlock when allocating partition content.
5.11.4
2022-09-26
Added
- PIVOT-4365 Add an
MdxQueryBouncer
limiting the number of concurrently running mdx queries. See What's New? page for configuration details. - PIVOT-5027 Empty partitions are automatically dropped at the end of transactions.
- PIVOT-5077 Add
IDistributedActivePivotInstanceDescription.NO_REPLICATION_MEASURES
property to disable replication for certain measures on distributed cubes. - PIVOT-5183 Add rebuild operations for indexes to the datastore API.
- PIVOT-5472 Add
ActivePivotContentServiceMigrationUtil
to simplify migration from xml-based content service to a new json-based one (available from AP 6.0). - PIVOT-5631
Atoti UIResourceServerConfig
andAdminUIResourceServerConfig
are now core classes. You no more need to copy them from the Sandbox to your projects.
Changed
- PIVOT-4934 Adjust Logging levels for received statements on the MDX REST endpoint to INFO.
- PIVOT-5030 Disable RangeSharing for Post-Processors when an Analysis Hierarchy is expressed in the queried location.
- PIVOT-5626 Skip initialization of previously failed post-processors
- PIVOT-5657 Switch outer reference policy to auto-detection mode for the queries executed from Datastore MBeans.
- PIVOT-5677 Activiti dependencies upgraded from 5.22.0 to 5.23.0.
- PIVOT-5728 Improve JIT retrievals completion performance in some applications with a high partition count.
- PIVOT-5304 Improve the performance of the code handling the generation of the locations when analysis hierarchies are expressed.
- PIVOT-5671 Log the complete APM monitor result's only when detailed logging is enabled.
Fixed
- PIVOT-5041 Clarify the behaviour and error message of
Licensing.reload()
and its underlying MBean. - PIVOT-5365 Fix
ActivePivotVersion
releasing its reference to the datastore too early. In some cases, a race condition could lead to wrong results when using aKeepLastEpochPolicy
and querying an old not markedActivePivotVersion
with a JustInTime provider. - PIVOT-5479 Fix
ClassCastException
when querying the drillthrough headers on a distributed cube. - PIVOT-5458 Correctly propagate exception in
ExternalDatastoreRetrieval
. - PIVOT-5502 Fix cached data mutated in DatastoreService.
- PIVOT-5508 Fix the creation of the
ColumnIntegerRowMapping
memory statistics for MAC. - PIVOT-5515 Fix
ArrayIndexOutOfBoundsException
inChunkedBitmap
when adding two bitmaps. - PIVOT-5539 Fix
NullPointerException
when discarding transient results from a distributed measure with no value. - PIVOT-5502 Fix cached data mutated in DatastoreService.
- PIVOT-5575 Fix a performance issue impacting queries on cubes having partial providers and a large amount of hierarchies.
- PIVOT-5639 Fix an issue with nested combine operations with context value dependencies in Copper.
- PIVOT-5640 Fix an issue where unrelated store partitions could generate unnecessary transient objects. This reduces the memory footprint of small transactions.
- PIVOT-5661 Fixed potential deadlock in JDBCTask when all JDBCAppendRunnable crashed.
- PIVOT-5671 Hide sensitive information in logs.
- PIVOT-5713 Fix
ClassCastException
during the recording of distributed messages statistics. - PIVOT-5759 Fix Deadlock when allocating partition content.
- PIVOT-5777 Fix wrong parameter order in
RemoteContentService
.
5.11.3
2022-05-06
Changed
- PIVOT-5202 Improve the Copper doc on map methods to specify that the cells must be written into at each iteration.
Fixed
- PIVOT-5318 Fix ClassCastException in the PlanningGraph
- PIVOT-5333 Increase severity for full reset and pending initial discovery messages to
WARNING
in distributed clusters. - PIVOT-5395 Fix the creation of the
HashMapRowMapping
memory statistics for MAC. - PIVOT-5407 Fix Frequent Value compression not properly handling null values.
- PIVOT-5428 Fix
ArrayIndexOutOfBoundsException
when usingwithBatchSize
in parquet source. - PIVOT-5443 Fix
SimpleCubeDescriptionBuilder
not properly setting shared context values.
5.11.2
2022-04-01
Added
- PIVOT-5232 A UI to browse the Datastore. See
AdminUIResourceServerConfig
in the Sandbox. - PIVOT-5246 Add
ChunkSingleBoolean
to compress Boolean chunks containing the same value for all positions. - PIVOT-5301
BottomCountFunction
andTopCountFunction
should accept a string expression as a comparator.
Changed
- PIVOT-5232 Breaking Moved
JungSchemaPrinter
and associated classes to datastore test artifact.spring-boot
,netty
,google-guava
,azure-identity
,azure-security-keyvault-keys
andazure-storage-blob
are updated to the latest version. - PIVOT-5239 Improve
DirectedGraph.getEdgesTo
. - PIVOT-5275
Record
reading and writing operations now strictly follow the JVM's automatic type widening described in the JVM's spec. The previous behavior was to only allow the operations corresponding to the field type. - PIVOT-5322 Renaming of exposed properties related to consul service configuration within APM.
- PIVOT-5367 Renamed properties
intermediateSize
andtransientSize
inQueryResultLimit
tointermediateLimit
andtransientLimit
, respectively. - PIVOT-5411 Update Spring Boot to 2.6.6 which includes a vulnerability fix.
Removed
- PIVOT-5232 BREAKING
ContentServerResourceServerConfig
was removed. It is replaced byAdminUIResourceServerConfig
(See the Sandbox).
Fixed
- PIVOT-5098 Fixed an
IllegalStateException
when performing queries containing cached aggregates for primitive measures and primitive-aggregated measures. - PIVOT-5135 Creating a sub-second QueriesTimeLimit will now log a warning stating that such time limit will be ignored.
- PIVOT-5188 Fix potential bug in AnalyticFunctionPostProcessor where partitioning levels were not properly set.
- PIVOT-5218 Improve performance of the Mdx NonEmpty function
- PIVOT-5259 Correctly propagate custom aggregation function used for result reduction in distributed post-processors.
- PIVOT-5280 Using the flexible datastore no longer removes the insertion time and commit time update procedures.
- PIVOT-5291 Correctly group monitored JMX APM components and fix some variable visibility issues.
- PIVOT-5308 Clarify the javadoc of
Copper.StoreLookup
when the specified store has nullable key fields. - PIVOT-5309 Correctly set elapsed time in aggregate retrievals.
- PIVOT-5310 Fix retrieval result size figures when printing the query plan. In some cases, results were discarded before their result size computed.
- PIVOT-5311 Fix bug where hierarchy visibility was set to false but was still visible.
- PIVOT-5328 Fix an
NullPointerException
when having multiple threads discarding the same transient result at the same time. - PIVOT-5330 Fix issue with store size and cursor not being printed when using
SchemaPrinter
. - PIVOT-5335 Fix aggregates cache not being updated in Query Cubes after transactions without any impact on the pivot's structure.
- PIVOT-5342 Fix bug where we could not query joined store's lookup measure on grand total.
- PIVOT-5396 The reversed comparators did not return their plugin key.
5.11.1
2022-01-12
Added
- PIVOT-5170 Add result size reporting for distributed query plan print.
Changed
- PIVOT-5009 Prevent users from creating Copper join hierarchies based on a store field included in the mapping.
- PIVOT-5238 Parallelize
ActivePivotManagerBuilder
'spostProcess
to reduce cubes creation time.
Fixed
- PIVOT-5095 Fix real-time update on query with epoch hierarchy. Previously, real-time updates on such queries resulted in branch disappearing from the updated result. See Real-Time What-If Queries section.
- PIVOT-5189 Fix
IIterableAggregatesRetrievalResult#transferValues
that could copy the wrong aggregates. - PIVOT-5195 Fix bug in the revert to version. Some records were not reverted in some edge cases.
- PIVOT-5208 Enforce
PostProcessor
initialization when requesting the dataType of a post-processed measure. - PIVOT-5210 Fix a bug in lead, lag, first, last and window Copper functionalities when relying on a Context Value measure.
- PIVOT-5224 License is now redacted when logged.
5.11.0
2021-11-26
Added
- PIVOT-4449 Added a detailed reporting of CSV parsing errors. Use the
CSV_PARSING_REPORT_ENABLED
property to enable it, andCSV_PARSING_REPORT_MAX_ANOMALIES
to limit its size. - PIVOT-4639 Add parameter to auto-detect outer references in
DatastoreService
. - PIVOT-4642 Integrate APM (Application Performance Monitoring) library into ActivePivot.
- PIVOT-4653 ActivePivot's custom data structures following
com.qfs.chunk.IArray
andcom.qfs.chunk.IWritableArray
can now spawn a cursor. This cursor can be moved up and down the array and perform read/write operations at its current position. - PIVOT-4655 Add a data export service to download or export MDX queries.
- PIVOT-4676 The query plan now includes aggregation procedures time and external datastore retrievals for
PrimitiveAnalysisAggregationRetrieval
. It also includes the name of the used partial provider forPartialPrimitiveAggregatesRetrieval
. - PIVOT-4677 Integrate the Excel add-in library into ActivePivot.
- PIVOT-4708 Added virtual hierarchies experimental feature. Those are hierarchies whose members are not materialized. A hierarchy can be defined as virtual using the hierarchy builder API
.virtual()
. - PIVOT-4715 Added an interface
ICanUseOtherReferenceOrBuild
in the selection fluent builders for ease of use with Spring Beans. - PIVOT-4733 Allow to override measure aggregator xmla property with
CopperMeasure#withXmlaAggregator(int)
. - PIVOT-4804 Throw an exception when creating measures names with commas.
- PIVOT-4806 License path is now printed in the log.
- PIVOT-4815 Ability to name (give a alias) when selecting field in a
RecordQuery
or aGetByKeyQuery
. Before the name was the path of the field. - PIVOT-4824 Include epochId of the max and latest continuous query statistics.
- PIVOT-4847 Add
mark()
andunmark()
onIDatastoreVersion
. - PIVOT-4913 The JDBC Source will now log the exceptions that make its workers exit the parallel processing of records.
- PIVOT-5037 The Copper tester now supports
hasValues()
in every case and a new methodwithDelta()
to set the allowed delta between the values given by the user inhasValues()
and the actual values returned by the measures. - PIVOT-5059 Partial providers can now have a name using the fluent builder API
PartialBuilder#withName(..)
. - PIVOT-5060 Support encoding and decoding
NaN
and+/-Infinity
in JSON. - PIVOT-5069 Add the currently written record in case of type error in
IRecordFormat#newRecord()
. - PIVOT-5118 Add a toString() to
CloudCsvDataProvider()
for better error message. - PIVOT-5170 Log query results size by default when printing the query plan. Note that
DistributedAggregatesRetrieval
doesn't support such feature yet.
Changed
- PIVOT-3978 Partitioning fields are now automatically dictionarized.
- PIVOT-4315 The Copper Typing API is now simpler, only allowing to call
withType
after operations likeplus
,minus
, etc. - PIVOT-4498 The
ActiveViamPropertyFromSpringConfig.resolve()
bean is now namedActiveViamPropertyFromSpringConfig.SPRING_PROPERTIES_RESOLVER
. - PIVOT-4484 Deprecate usage of
OutputStream
inTableBuilder
and add usage ofStringBuilder
- PIVOT-4653
IVector
andIBlock
no longer extendIWritableArray
. - PIVOT-4653
IPostProcessor
abstract implementations are given a version 2, such asABasicPostProcessorV2
,ADynamicAggregationPostProcessorV2
andAAdvancedPostProcessorV2
. See the migration notes for details. - PIVOT-4747
ReferencedField
was replaced byReachableField
. - PIVOT-4781
StreamSnapshotService#snapShotStreams(String)
is now compatible withStreamSnapshotService#loadStreams(String)
. Now, both operation ignoreSTOPPED
streams. UseStreamSnapshotService#snapShotAllStreams(String)
to snapshot all streams including the stopped ones. - PIVOT-4789 Provide possible solutions in error message when we failed to initialize the
SaferNative
class inLinuxPlatform
. - PIVOT-4802 Reduce the memory consumption of
ModifiedLocation
, primarily used in cumulated aggregates and in shifted measures. - PIVOT-4808 Report error if the ActivePivotSchema fails to attach.
- PIVOT-4813 Update ActiveMonitor REST API documentation to correctly illustrate how a new monitor can be added.
- PIVOT-4820 Change constructors of
KeepLastEpochPolicy
andFlexibleDatastoreEpochPolicy
to useDuration
instead oflong
. - PIVOT-4833
AVectorAggregationFunction.aggregate
method will now receive a vector allocator. - PIVOT-4834 Chunks reading and writing operations now strictly follow the JVM's automatic type widening described in the JVM's spec. The previous behavior was to only allow the operations corresponding to the chunk type.
- PIVOT-4893 Vectors reading and writing operations now strictly follow the JVM's automatic type widening described in the JVM's spec. The previous behavior was to only allow the operations corresponding to the vector type.
- PIVOT-4912 Add default implementation of
CancellableCountedCompleter#afterCompute(Throwable)
callingCancellableCountedCompleter#tryComplete()
. - PIVOT-4947 Return a lighter ActivePivot description in SOAP webservices called
SoapActivePivotDiscovery
. - PIVOT-4959 Reorganize the
IVectorBinding
API. Some methods have seen their twoIVector
parameters inverted, but they now all carry the less confusing names ofleft
andright
(rather than source and destination). Theleft
vector will always receive the result of the vector operation. - PIVOT-4973
IReadableDatastore
now implementsIBranchedMultiVersion
. - PIVOT-5003 Reorganize
AMultiVersionAnalysisHierarchy
andAAnalysisHierarchy
to clearly state the methods to implement. The notable changes is that now, users must overrideAMultiVersionAnalysisHierarchy#processIntrospectedMember
to complete paths of introspected members, instead of overriding#contributeMember
directly. This change removed a lot of internal methods from the interfaceIAnalysisHierarchy
. - PIVOT-5003 Correct typo by renaming
IAnalysisHierarchyInfo#getUseInstropection
intoIAnalysisHierarchyInfo#getUseIntrospection
. - PIVOT-5032 Upgrade
org.apache.hadoop
to 3.3.1. - PIVOT-5021 Upgrade SpringBoot version to 2.5.4 and update dependencies.
- PIVOT-5024 Use
ChunkedIntegerArray
instead ofIntegerArray
inAMultiVersionUniqueRecordIndex
so that we can now put more than 300M records per partition. - PIVOT-5058 Implements the correct
equals()
andhashcode()
forStoreDescription
andVectorFieldDescription
. - PIVOT-5123 Partitioning modulo 1 now throws an exception.
- PIVOT-5129 Renamed
AnalysigAggregationProcedureFactory
toAnalysisAggregationProcedureFactory
. - PIVOT-5168 Bump Spring version to 2.6
- PIVOT-5168 Bump Jackson version to 2.13.0
- PIVOT-5168 Bump Apache Arrow version to 6.0.1
- PIVOT-5168 Bump Apache CXF version to 3.4.5
Removed
- APS-12776 Remove
IEpochManager.mark(...)
andIEpochManager.unmark(...)
. One should call them on the underlyingIEpochHistory
. - PIVOT-4244 Remove the XML descriptions of the cubes.
- PIVOT-4747
ISelectionField
was removed. UseSelectionField
instead. - PIVOT-4748
StreamUtil.negate
has been removed; we usePredicate.not
instead - PIVOT-4776
IMultiMap
was removed. Use aMap
whose values are collections instead. - PIVOT-4986 Release more resources after dropping a partition (dictionaries of indexes that are not used by a reference can now be released every time).
- PIVOT-5011 Remove the provided strings from exception messages in
RestContentServer
andJsonQueryService
. - PIVOT-5029
IAggregatedMeasureAware
was removed. - PIVOT-5084 Removed an invalid warning that was triggered when building Copper Hierarchies backed by a store. Said warning was stating these hierarchies shouldn't be factless.
- PIVOT-5094
IMultiVersionStorePartition#drop(IDroppedPartitionInformation)
does not take any argument anymore. - PIVOT-5117 Remove
TransactionWrapper
.
Fixed
- PIVOT-4487 Fix Copper post-processor bug where if the only underlying measures of a calculated measure were null or constant measures, the post-processor wouldn't be evaluated at all.
- PIVOT-4735 Fix continuous handler registration issue. The issue happened in distribution when some underlying measures have not yet appeared thus causing a duplication in handler key of the parent measure.
- PIVOT-4780 Fix unnecessary query plan logging when
queryPlanSummary
is enabled. - PIVOT-4800 Enhance query plan timing reports. This particularly fixes two man issues:
JITPrimitiveAggregatesRetrieval
Partitioned retrievals for non-existing partitions used to display the largest execution time of their siblings. Now, only partitioned retrievals that performed some work at least and whose result is empty will be reported in the timing section, along with the other retrievals with result- In some cases, for a group of related retrievals (siblings), timing were not printed if one of the sibling has no result. This edge case has been fixed
- PIVOT-4811 Fix
ClassCastException
inSingleValueFunction
when working with arrays. - PIVOT-4814 Fix an issue where exporting the memory statistic of a chunk containing non-direct vector blocks would throw a NPE.
- PIVOT-4816 Fix an issue occurring when merging two
AggregateStore
s. This caused the merged result to includenull
values instead of the correct value for some measures. - PIVOT-4818 Fix an issue leading to incorrect transitions between
IntegerArrayVersion
. - PIVOT-4819 Fix
UnsupportedOperationException
inActivePivotStatistics
. The issue happened when computing transaction fact statistics on an incompatible type of transaction. - PIVOT-4862 Fix an export error in the
IMemoryStatistic
generation for TombStone classes. - PIVOT-4866 Fix
NullPointerException
inFilterTranslator
. The issue could happen when translating a wildcard, e.g.null
, to the data cube. - PIVOT-4881 Fix an issue where the resizing of
IntegerArray
andLongArray
generated non-transient chunks regardless of itsisTransient
parameter. - PIVOT-4901 Prevent aggregates computation (i.e. GetAggregatesQuery) when mdx
CELL PROPERTIES
is equal toCELL_ORDINAL
. - PIVOT-4923 Fix hiding subtotals issue that could not hide all the measures.
- PIVOT-4935 Fix NPE when accessing an uninitialized datastore via MBean.
- PIVOT-4944 Fix the cleaning method of the prefetch scope location when executing more than one aggregation procedure in a single
PrimitiveAnalysisAggregationRetrieval
. - PIVOT-4946 Fix an issue with Copper
storeLookup
that could fail to find its underlying measures, in the case where these measures were previously re-optimized. - PIVOT-4949 Fix thread safety for
SharedDelegateDictionary#mapFromCell
. - PIVOT-4951 Fix an edge case issue with
IChunkInteger
sparse compression. - PIVOT-4956 Fix
GenericVectorBinding#applyAs..
operations for non-commutative operators. - PIVOT-4958 Fix the update of the ContentServer entries for branches containing characters that are illegal for FileSystem-specific paths.
- PIVOT-4964 Fix an
ArrayIndexOutOfBoundException
happening when compressing chunks with freed rows asFrequentValueChunk
. - PIVOT-4972 Fix branches not visible sometimes with continuous queries. The
ISecurityDetails
was not always propagated when registering queries. - PIVOT-4979 Fix missing fields issue in the analysis aggregation procedures when a cube filter is done on a Copper join.
- PIVOT-4992 Fix dependency issue in content-server-spring.
- PIVOT-4998 Reduce time spent at startup optimizing Copper measures
- PIVOT-5010 Properly set the level type of a slicing Copper hierarchy
- PIVOT-5016 Fix
ArrayIndexOutOfBoundsException
in theSetExpander
of the Mdx engine. - PIVOT-5038 Fixed errors in usage counting caused by decrementing the usage too many times.
- PIVOT-5050 Fix distributed post-processors initialization. This issue happened when chaining at least three post-processors where the bottom one in the chain is not initialized and caused missing dependencies propagation in some cases.
- PIVOT-5062 Fix
NullPointerException
inPointListRetrievalResult
in the case of a polymorphic distributed setup. - PIVOT-5068 Fix
NullPointerException
in the AggregatesResultCopier used by postprocessors. - PIVOT-5074 Fix
SubCubeProperties#removeRestriction(dimension, hierarchy)
. The issue happened in distributed polymorphic setup where the same dimension from two data nodes includes different hierarchies and one of the dimension hierarchies cardinality is greater than 1. - PIVOT-5078 The Parquet Source correctly parses boolean vectors.
- PIVOT-5097 Fix
NullPointerException
when registering aGetAggregatesQuery
build using a location Collections not supportingnull
elements. - PIVOT-5115 Fix
IllegalArgumentexception
during query plan logging whenexecutionTimingPrint
is enabled . - PIVOT-5119 Fix rollback process of store transactions.
- PIVOT-5128 Fix a memory leak that could happen upon query failure/cancellation if an
AggregatesCache
was used. * PIVOT-5137 FixLevelIdentifier.fromDescription
andHierachyIdentifier.fromDescription
. They did not handle correctly the escaping of@
. - PIVOT-5137 Fix
LevelIdentifier.fromDescription
andHierachyIdentifier.fromDescription
. They did not handle correctly the escaping of@
. - PIVOT-5151 Fix
QfsStrings.escape
with$
as escape symbol. - PIVOT-5156 Fixed missing query plan retrievals. The issue happened when underlying retrievals with different partitioning were merged. Note that this does not affect query results nor the query plan export feature, but only the query plan printing.
- PIVOT-5162 Fix potential NPE in
PrimitiveAnalysisAggregationRetrieval
when joining results.
5.10.2
2021-04-30
Added
- PIVOT-4486 Add the possibility to apply query cube filter on the prefetch of Copper analytic functions using the API
CopperAnalyticMeasure#withFilter(AnalyticFilter)
. - PIVOT-4713 Add the method
IDistributedHierarchyManager#waitForAllMessages
allowing to wait for all the recorded messages to be processed.
Changed
- PIVOT-4300 Post-processor dependency graph cycle detection is now enabled by default.
- PIVOT-4780 Change MBeans in
QueryPlanMonitoring
to print execution plan and timing full or as summary, e.g.QueryPlanMonitoring#enableExecutionTimingPrintFull()
orQueryPlanMonitoring#enableExecutionTimingPrintAsSummary()
.
Fixed
- APS-13016 Better handle network errors which were causing issues with license checks.
- PIVOT-4717 Fix UDAF error that could occur when totally emptying the underlying store.
- PIVOT-4725 Some datastore versions were not unmarked after stopping the cubes.
- PIVOT-4728 Measure names with several parentheses were not correctly supported by the Formula PostProcessor.
- PIVOT-4730 Prevent Real-Time statistics errors from crashing continuous queries update. The issue happened when statistics computations tried to fetch retrievals that had been dismissed by the query engine (usually because of a non-existent location).
- PIVOT-4739 Fix publishing of WindowReduceMeasure (description equality).
- PIVOT-4749 Clarify the documentation of the
cube/export/mdx/download
REST service endpoint. - PIVOT-4760 Fix an issue where
IStoreToParquetMapping
would map fields from the datastore to the wrong fields in the parquet schema. - PIVOT-4766 Fix Frequent Chunk Compression bug where nested
FrequentNullDoubleChunk
could be created. - PIVOT-4771 Fix NPE cause by
CopperPostProcessor#withInheritedContinuousQueryHandlers
. The issue happened while inheriting the handlers of a post-processor that hasn't any. - PIVOT-4772 Fix a query issue where wildcards on slicing analysis hierarchies based on isolated store fields would conflict with Copper bucketing hierarchies.
- PIVOT-4775 Fix an issue with
AAdvancedPostProcessor
performing an eager modification of the prefetched cube filter. - PIVOT-4775 Fix an issue with the query engine where some retrievals handing analysis hierarchies, were wrongly declaring their dependencies.
- PIVOT-4791 All datastore versions are now synchronously unmarked when stopping the pivot.
5.10.1
2021-03-26
Added
- PIVOT-4473 Add loggers for CREATE, UPDATE and DROP MDX statements
- PIVOT-4638 Add the
maskAtOrBelow()
method to theCopperMeasureToAggregateAbove
interface, allowing to define levels below which a measure will not return aggregated values when queried. The behavior is the complementary of thedoNotAggregateAbove()
method. - PIVOT-4702 Add support for DATEPART function in MDX with the simple signature DatePart(interval, date).
Changed
- PIVOT-4705 Make
Records#getGlobalDefaultValue
useint
instead ofILiteralType
. - PIVOT-4707
PointIndexedRecordBlock
no longer implementsIChunkSet
. - PIVOT-4707 Renamed
ImmutableRecordList
inImmutableRecordBlock
to match the pattern established in sibling classes.
Deprecated
- PIVOT-4705 Deprecate
SchemaHelper#undictionarize
in favour ofRecords#undictionarize
. - PIVOT-4724 Deprecate
com.qfs.pivot.impl.ActivePivotSchemaExtendedPlugin
in favour ofcom.quartetfs.biz.pivot.impl.ActivePivotSchemaExtendedPlugin
located in the conventional package.
Removed
- PIVOT-4707 Removed
PointIndexedRecordBlock
destroyer methods. - PIVOT-4707 Removed
IAggregateSource
interface. - PIVOT-4707 Removed a constructor in
AWritableFixedSizeRecordBlock
. - PIVOT-4707 Removed
transferFrom(IArrayReader source, int sourceIndex, IWritableByteRecord record)
from classARecordFieldHandler
. - PIVOT-4718 Drop legacy methods from
IByteRecordFormat
.
Fixed
- PIVOT-3790 Fix the partitioning levels of the legacy post-processor
NeighbourValuePostProcessor
. - PIVOT-4177 Prevent two Store Lookups from colliding in the query cache if they ask for different fields on the same store.
- PIVOT-4344 Fix SingleValueFunction on Arrays type.
- PIVOT-4364 Fix Real-Time issues with Copper. This includes the following corrections:
- In addition to the
CommitIsolatedStoreHandler
handler, join measures now include theStoreMeasureHandler
in their handlers' list Copper#newPostProcessor(..)
allows now to propagate the underlying measures handlers usingCopperPostProcessor#withInheritedContinuousQueryHandlers()
- Delegate continuous handler initialization to post-processors
- In addition to the
- PIVOT-4452 Fix an issue where exported memory statistics could not be read by MAC.
- PIVOT-4690 Restore allocators that where removed in the previous release:
HeapBufferChunkAllocator
,DirectBufferChunkAllocator
andDirectChunkAllocator
. - PIVOT-4691 Fix possible casting exception when using
CopperMeasure.withType(ILiteralType.BOOLEAN)
with an aggregation function returningBoolean
. - PIVOT-4710
Copper.storeLookup(...)
(i.e.StoreLookupMeasure
) now handles real time updates. - PIVOT-4719 Fix lazy initialization and double check idiom in
RecordFormat#getFieldIndex(String)
.
Security
- APS-12594 BREAKING The XML parsers used throughout ActivePivot
(JAXB, XMLA Servlet...) are now given a restrictive configuration to better prevent XXE injection attacks:
- Automatic DDoS prevention. This may limit XML constructs, such as deep recursive XML elements (XML entities calling more XML entities, and so on).
- Disables
!DOCTYPE
annotation to prevent XXE injections through this annotation. - Disables the
XInclude
annotation to prevent construction of sub-documents that could be retrieved from a distant server. - Disables the use of external Document Type Definitions, for the same reason.
5.10.0
2021-02-26
Added
- APS-12558 Add new
MdxContext
parameters that can override the visibility of hierarchies and dimensions, forcing them to be shown or hidden regardless of the cube's configuration. - APS-12866 Rename
NotificationMember#AWAIT_NOTIFICATIONS
toIDataClusterDefinition#AWAIT_NOTIFICATIONS_TIME
. The property can now be declared in data cluster definitions usingICanBuildDataClusterDescriptionBuilder#withProperty
. - APS-12879 Expressions like
Copper.sum("pnl").publish(context)
have to be replaced withCopper.sum("pnl").withName("pnl.SUM").publish(context)
. - APS-12908 Add a
selectDistinct()
method toDatastoreQueryHelper
that accepts a condition. - PIVOT-3352 Add fencing on
AUniqueRecordIndexTransaction
methods. - PIVOT-3978 Changed when the 'force discard' was called in
KeepLastEpochPolicy
. - PIVOT-3978
IPrimaryRecordIndexVersion#getKeyFields()
moved toIPrimaryRecordIndex#getFields
. - PIVOT-3978 Rename
ARemoveUnknowKeyListener
toARemoveUnknownKeyListener
to fix typo. - PIVOT-4177 Add the possibility to define a Store Lookup in Copper. See
Copper.storeLookup(storeName)
. - PIVOT-4180 Properly shutdown
DataNodes
in a distributed cluster. When a data node is being shutdown, it will send aGoodbyeMessage
to the query node which will immediately trigger an asynchronous task responsible of removing all of its subsequent contributions. - PIVOT-4220 Add on-the-fly discard of transient results during query execution.
- PIVOT-4280 Support copper join on any level. It was not possible to do a join on a bucketing level for instance.
- PIVOT-4356 Join Hierarchies with multiple levels can now be published with Copper, using the unified API
Copper.newHierarchy(...)
. - PIVOT-4357 User-defined aggregate functions can now perform dynamic aggregation on measures.
- PIVOT-4409 Allow to define an Analysis hierarchy on the base store (
withStoreName
method) - PIVOT-4417 Add a new compression for chunks, storing only values different from a frequent value.
- PIVOT-4438 Update MDX engine error messages to use hierarchy unique names instead of simple names.
- PIVOT-4476 Add the possibility to specify the fields of the records given to the
StoreTransactionBuilder
in Copper testing with the methodwithFields()
. - PIVOT-4480 Add a JMX operation in the store monitoring MBean that produces a general chunk memory usage report. MAC is still recommended for detailed memory analysis.
- PIVOT-4490 Add health events to the JDBC source notifying the success or the failure of a JDBC source fetch.
- PIVOT-4491 Added support for primitive aggregated measures in the Aggregates Cache.
- PIVOT-4546 All licenses must have an end date.
- PIVOT-4549 Add
truncate
method toITransactionManager
for deleting all records from a store. - PIVOT-4566 Add a fluent builder
withSharedContextValues(values...)
allowing the definition of multiple shared context values at once avoiding repetitive calls towithSharedContextValue(value)
. - PIVOT-4569 Add
Copper.timestamp()
to access timestamp measure. - PIVOT-4589 Add support in the parquet source for filtering parsed files using a
java.util.regex.Pattern
, throughIParquetParserBuilder.withPattern(java.util.regex.Pattern)
. These health events can be handled using the interfaceIJdbcSourceHealthEventHandler
. - PIVOT-4599 Add
IClearableBitmap
interface for non-incremental add and clear operations. - PIVOT-4600 Add
MultiVersionLongArray
.
Changed
- APS-12788
AxisHierarchy
now reports that a field used to create a level should be dictionarized, instead of stating that this operation is only available in unit-tests. - APS-12918 Add more parser-policy-related interruption checks to the CSV source's
ParserTask
s. This can considerably improve performance when using the sampling parser policy. - APS-12932 Bitmap operations now catch
CancellationException
early to prevent logging bitmaps that are valid. - APS-12943 Change the default behavior of
QueriesResultLimit
context value from#withoutLimit()
to#defaultLimit()
. Now, we also allow -1 value for a limit to represent no-limit onQueriesResultLimit
context value. - APS-12946 The
DistributedEpochManager
added in PIVOT-4501 is visible in the Manager MBean under the corresponding distributed cube's MBean. - APS-12975 Reduce
DiscardOnGcTask
timeout duration from one hour to one minute. In very rare cases, this will let a version be discarded more rapidly after being released. - PIVOT-3914 Change
AAdvancedPostProcessor.computeOutputType()
to fall back to the return type of its evaluator, if it has one. - PIVOT-4191 Rename methods in
QueriesResultLimit
. - PIVOT-4356 Bucketing Hierarchies must now be published using the unified API
Copper.newHierarchy(...).fromValues(...)
. - PIVOT-4375 The Azure Cloud Source has been migrated from Azure Blob Storage SDK v8 to v12. Please refer to the migration notes to see what has changed.
- PIVOT-4402 Remove static getters from
JoinMeasureDescription
. - PIVOT-4410 BREAKING: Changes were made on the hierarchy builder.
hierarchyBuilder.factless().withStoreName("myStore")
was replaced byhierarchyBuilder.fromStore("myStore")
. - PIVOT-4464 Remove ActiveMonitor from the sandbox projects.
- PIVOT-4501 Enhance version management in a distributed setup. Versions are now handled in the Query Cube using a dedicated
DistributedEpochManager
that keeps track of versions history and trigger discard tasks on GC. - PIVOT-4502 Optimize number of operations in chunk scan methods by computing '~epoch' once before iterating over the rows.
- PIVOT-4509 Register standard Drillthrough calculators through an extended plugin.
- PIVOT-4522 Change the signature to create a UDAF to allow allocating vectors off-heap and lazy cloning. One should now call
IWritableBuffer.allocateVector
instead ofIVector.cloneOnHeap()
, andIWritableBuffer.readWritableVector(int)
instead ofIWritableArray.readVector(int)
. - PIVOT-4558 Change the behavior of
IHierarchy#isEmpty()
. Now, the method checks whether the corresponding hierarchy is empty or not instead of checking for leaf members. This enhances the performance of queries with high cardinality hierarchies. - PIVOT-4564 Levels from hidden dimensions and hierarchies are now omitted in XMLA discoveries. This caused an incompatibility with some XMLA clients such as ADOMD.NET.
- PIVOT-4579 The severity of the log message notifying that a property is missing has been changed from WARNING to INFO.
- PIVOT-4599 Rename
FastLogical
toFastLogicalQFSBitmap
. - PIVOT-4608 Lift limitation on Datastore queries with respect to the combination of indexes. Previously, the Datastore could combine up to 3 indexes when looking for range patterns like
a in (...) and b in (...)
. Now, the maximal limit is configured byActiveViamProperty.MAX_RANGE_OPERANDS_WITH_MULTIPLE_VALUES
and set by default to 10. - PIVOT-4620 Fix issue with Hibernate where a high number of input parameters causes server exceptions.
- PIVOT-4622 Fix ActiveMonitor PointValue commit logic. This adds a consistency check when committing an update on an existing point value. Now, we make sure that the "from" point value and its active value in the database have the same key. Otherwise, the commit is not allowed and an exception is thrown.
- PIVOT-4626 Fix a bug in the parquet source where an invalid index exception would be thrown if a parquet vector field was not mapped to any field in the fed datastore.
Deprecated
- PIVOT-4244 Our web services exposed with SOAP are deprecated. Your are encourage to start using the REST services.
- PIVOT-4244 XML representation of the cube configuration and our DTOs.
- PIVOT-4679 Ability to filter the facts sent to a cube (
ActivePivotInstanceDescription.setFilterDescription
).
Removed
- APS-12686 Remove
JGroupsMessenger
. - PIVOT-3978 Remove the Transaction Log.
- PIVOT-3978 Remove legacy
TransactionWrapper
. - PIVOT-4428 Remove following methods:
IChunk.findRowsInTransactionEqualTo(Object, IIntIterator, int, IRowMapping, int, IBitmap)
IChunkSet.findRowsInTransactionEqualTo(int, Object, IIntIterator, int, int, IBitmap)
IChunk.findRowsInTransactionInSet(Set, IIntIterator, int, IRowMapping, int, IBitmap)
IChunkSet.findRowsInTransactionInSet(int, Set, IIntIterator, int, int, IBitmap)
as duplicates of their counterpart outside of a transaction (findRowsEqualTo
, ...)
- PIVOT-4560 Remove duplicate
javax.xml.stream
dependency inserialization-xstream
(this dependency is included in the JRE). - PIVOT-4615 Remove heavy-to-compute logging in
ImpactComputationTask
. - PIVOT-4669 Remove deprecated
MapAggregatesProvider
.
Fixed
- APS-12090 Fix issue with branch permission manager preventing to see new branches on real time Mdx queries.
- APS-12909 Fix a memory leak within the catch up listener's mechanism.
- APS-12911 Fix postprocessors auto-partitioning in the the planning phase.
- APS-12912 Fix a bug where spring boot would occasionally fail with message
BeanCurrentlyInCreationException: Error creating bean with name 'resourceMapping': Requested bean is currently in creation.
when importing multiple configuration classes inheritingASpringResourceServerConfig
. - APS-12915 Correctly process Cube Filters in a distributed application.
- APS-12931 Fix an erroneous check that would throw when trying to define user-defined aggregate functions in partial aggregate providers.
- APS-12937 The
FullRefreshEvent
will now include the set of all impacted measures. This allows to distinguish between measures not impacted by the real-time event and measures withnull
update. - APS-12962 Fix bug preventing measure publication when using
withType(...)
on a calculated measure, and reusing this measure in another calculated measure. - APS-12965 Fix Copper Join producing incorrect aggregation results when using a Join Measure based on the key fields of the joined Store.
- APS-12966 Fix an issue where formatters would not be taken into account for UDAF measures.
- APS-12985 Correct overflow error in dictionaries occurring when inserted more than
2 ^ 30
values in a field dictionary. - PIVOT-4241 Fix the reserved memory tracking of the
SlabMemoryAllocator
when the cache is evicted. - PIVOT-4243 Fix the reserved memory tracking of the
INativeMemoryAllocator
classes to track the reserved memory and not only the used memory. The tracking is done at the lowest level for more accuracy. - PIVOT-4370 The Parquet Source now correctly handles empty strings when writing into a store field that should not support empty strings, replacing them with the store field's default value.
- PIVOT-4388 Changed the return type of the Store Builder method
withVectorField
when chained after a dictionarized or indexed vector field. It gives access to a much fuller API to configure this second vector field, or finish configuring the store with methods likewithoutKey()
. - PIVOT-4427 Fix
ChunkedBitmap#equals
implementation. - PIVOT-4436 Fix
ClassCastException
occurring when a join measure was defined on a dictionarized field. - PIVOT-4453 ActivePivot now correctly unregister all its datastore continuous selections when stopped.
- PIVOT-4455 Correctly compute vector average, ignoring null vectors instead of counting them as actual values.
- PIVOT-4456 PIVOT-4457 Correct Datastore conditions testing for equality or greater-than/less-than on nullable fields. Previously, this could:
- throw an exception for a non-dictionarized field with long series of
null
values; - return incorrect rows from the store when looking for the primitive value 0 on a non-dictionarized field;
- return rows with
null
for greater-than/less-than conditions.
- throw an exception for a non-dictionarized field with long series of
- PIVOT-4460 Fix a bug where
MemoryAnalysisService
would not produce report files for query cubes in distributed application. - PIVOT-4461 Fix
NullPointerException
during Datastore queries looking fornull
in store fields after compression. This only happened in the case of offset compression, for int and long values or dictionarized fields. - PIVOT-4463 Fix
IllegalStateException
(No free or removed slots available) inMergingStorePartitionUpdate
. - PIVOT-4500 Fix filter translation edge case in distribution. This caused
AND
filtering operation on the same hierarchy to be wrongfully translated into anOR
operation. - PIVOT-4503 Fix a bug where the batched parquet parser could throw an end-of-file exception when reading a vector column.
- PIVOT-4503 Fix a bug where the batched parquet parser would not properly read row group and page metadata, potentially throwing an end-of-file exception.
- PIVOT-4507 Fix issue with mdx drillthrough query involving a member whose name contains brackets.
- PIVOT-4516 UDAF used in a aggregate provider always stored its vectors on heap.
- PIVOT-4517 Fix a bug where an
ArrayIndexOutOfBoundsException
would be thrown when generating the memory statistic of an empty target store referenced by a non-empty owner store. - PIVOT-4525
CopperMeasure#parentValueOn(CopperHierarchy)
now properly handles an analysis hierarchy being passed as an argument. - PIVOT-4527 Fix XMLA discovery of UDAF measures.
- PIVOT-4532 Fix the computation of retrieval results size in the query plan. The total result size for partitioned retrievals were not accumulated together correctly and an empty result for a partition was causing a NPE.
- PIVOT-4533 Fix a bug in Copper where an
UnsupportedOperationException
would be thrown when subtracting a float, long, or int vector to a null vector aggregate. - PIVOT-4534 Prevent
PrimitiveAnalysisAggregationRetrieval
from inheriting not required measures from its underlying retrieval. This prevents mismatch binding when a parentPrimitiveAnalysisAggregationRetrieval
depends on a childPrimitiveAnalysisAggregationRetrieval
including additional join measures. It also improves the query times and memory usage for such cases. - PIVOT-4542 Improve error message when
QueriesResultLimit
s are exceeded. - PIVOT-4550 Fix a Copper bug where measures could not be published.
- PIVOT-4563 Fix a bug where the
Left
andRight
MDX functions would throw aNullPointerException
fornull
values. - PIVOT-4565 Fix a bug where enforcing a parallel computation of a Copper join could make a query timeout.
- PIVOT-4572 Fix
ClassCastException
during the execution of MDX queries relying on previously cached aggregates. The issue is due to a bad partitioning of a post-processor depending on a cached node and a non-partitioned post-processor node. Now, cached nodes forbid all partitioning levels and bubble them up to their respective parents. - PIVOT-4586 Fix
NullPointerException
in DriltthoughResultDTO. - PIVOT-4590 Fix
ArrayIndexOutOfBoundsException
occuring when merging two retrieval results. Particularly, the issue was due to the fact that some post-processors ignorenull
values and don't write them into the final result. As a consequence, the capacity of the underlying post-processor column won't be aligned with the retrievals points, causing such exception when merging the actual result with another one. - PIVOT-4592 Fix Copper errors when reusing code to build complex measures.
- PIVOT-4593 Fix a bug where the batched parquet parser would read incorrect values for all subsequent vectors if a column contained a
null
or empty vector. - PIVOT-4633 Fix
ClassCastException
in DataCubeAdapter. - PIVOT-4633 BREAKING: The method
Location#getArrayLocation()
has been removed. Please use the methodILocation#getCoordinate(hierarchyIdx, levelIndex)
instead. - PIVOT-4649 Fix issue with DrillthroughQuery headers incorrectly returning the type of a column.
- PIVOT-4671 The Query cube will now always reject messages and contributions from unknown applications.
- PIVOT-4678 Fix a bug where similar Copper measures using different constants were confused with each other.