Issues fixed in MarkLogic Server 9.0-3
- Last Updated: April 6, 2026
- 11 minute read
- MarkLogic Server
- Documentation
Released: Sep 25, 2017
The following issues have been addressed in this release:
| Platform | Component | Bug ID | Details |
|---|---|---|---|
| all | adminGUI | BUG-47141 | Database status page shows XDMP-CAST during large reindex A reindex of more than 4294967295 fragments will cause the database status page in the Admin UI to throw an XDMP-CAST error |
| OS X | Query Console | BUG-46552 | Chained JS function calls trigger Dev Tool error in Query Console When chaining function calls in JS in Query Console, a TypeError occurs with the auto-suggest code. |
| windows(64-bit) | security | BUG-47463 | MS Windows Only: Unable to authenticate LDAP users with accented characters LDAP or Active Directory users with accented or special characters in the User DN can not be authenticated by MarkLogic Server running on Microsoft Windows. |
| all | security | BUG-46695 | Audit Log for External Authentication missing some user logins Audit Log for External Authentication does not fully log user logins |
| linux(64-bit) | Monitoring Dashboard | BUG-42298 | Metering Process Size In the Metering User Interface, Expose the amount of memory the MarkLogic Server process is consuming |
| all | Query Console | BUG-45568 | Text color not working for enviroment UI banner in Query Console The value in "ui-header-text-color" does not work in Query Console due to styling collision. |
| all | Query Console | BUG-40443 | Query Console: Hints do not appear after multi-line quotes Query Console Hints do not appear after use of multi-line quotes Example: let $javascript := " " let $out := xdmp: Suggestions do not appear for XDMP. |
| all | Config Management | BUG-46593 | "Connection reset" when rolling back package import Rolling back a package causes the browser to redirect while the server is rebooting, causing a "Connection reset" error to render in the browser. |
| all | Backup/Restore | BUG-46843 | Incremental database restore requires write permissions on source directory Incremental database restore operation fails when restoring process has only read access to source backup files. |
| all | Geospatial | BUG-46953 | Geospatial region index stuck in reindexing For certain XPath expressions, the geospatial region index may become stuck in reindexing. |
| all | search | BUG-46812 | False positives for element query on phrase in phrase-around child element If an element is configured as a phrase-around, an element search of an element containing the phrase around element targeting the contents of the phrase around element may produce false negatives if element word positions are enabled. Example: cts:search(doc("example.xml"), cts:element-query(xs:QName("parent"), "inside child")) where "child" is configured as a phrase-around, may fail to match <parent>outside <child>inside child</child> text</parent> |
| all | search | BUG-46417 | cts:parse raises the error XDMP-UNEXPECTED for labels containing dashes (-) or dots (.) cts:parse does not parse labels that have dashes or dots in them, raising the error XDMP-UNEXPECTED instead. Example: cts:parse("my-label:example", $bindings) |
| linux(64-bit) | security | BUG-47371 | sec:role-exists incorrectly returns false in some circumstances sec:role-exists returns false for existing role using security execute privilege "role-exists" ""http://marklogic.com/xdmp/privileges/get-role" |
| linux(64-bit) | Semantics | BUG-46348 | Semantics BIND(EXISTS) with wildcard property path incorrect result Semantics BIND(EXISTS) with wildcard property path could return incorrect result |
| all | xdmp | BUG-47084 | unpath without the xdmp-value privilege You can now do unpath without the xdmp-value privilege. |
| all | xdmp | BUG-46710 | xdmp:with-namespaces does not apply namespaces correctly to FLOWR expression When xdmp:with-namespaces wraps a FLOWR expression, the namespaces may not be properly visible in that expression, causing an error to be raised. Example: xdmp:with-namespaces(("dc", "http://purl.org/dc/elements/1.1/"), for $path in ("/root/dc:title", "/root/dc:subject") return cts:path-reference($path, ( "type=string", "collation=http://marklogic.com/collation/", "unchecked")) ) |
| windows(64-bit) | Query Console | BUG-39975 | Query Console: highlight bug when apostrophes present The closing apostrophe at the end of a text block doesn't cause the highlighting to revert back to non-red. |
| linux(64-bit) | JavaScript | BUG-47556 | Server may crash when JavaScript is spawned MarkLogic Server may crash when JavaScript is executed in xdmp.spawn. |
| all | Common API | BUG-47130 | Retrieve backup status on database with multiple forests attached Retrieve backup status when backing up a database with multiple forests attached using the REST Management API. When initiating a database backup via the REST Management API you will receive a job-id which you can then use to retrieve the backup status, as illustrated in the following example. curl -s -X POST --anyauth -u admin:admin --header Content-Type:application/json -d '{"operation": "backup-status", "job-id": "10374628996171578938"}' 'http://localhost:8002/manage/v2/databases/Schemas?format=json' |
| all | MarkLogic REST API | BUG-46788 | query in the JSON Basic namespace in QBE The json:transform-from-json() function converts JSON to XML, by default using the JSON Basic namespace ("http://marklogic.com/xdmp/json/basic"). The XML result documents can be persisted in the database. QBE (Query By Example) accepts a document that supplies JSON properties or XML elements to match. Previously, when an XML QBE provided example elements in the JSON Basic namespace, the REST API incorrectly executed the request as a query for JSON documents. Now, the REST API correctly executes the request as a query for XML documents. |
| all | mlcp | BUG-44422 | MLCP missing or duplicate documents from delimited file split_input may drop records or duplicate records (when used with generate_uri) when used with delimited_files, and could skip records with multibyte characters |
| all | Geospatial | BUG-47057 | Geospatial region query with "intersects" operation gives incorrect result Geospatial region query with "intersects" operation gives incorrect result for certain polygons |
| all | xdmp | BUG-46826 | xdmp:set does not enforce type from global variables If a global variable declares a type, xdmp:set will not enforce that type. For example, the following query should throw an error, but it does not. declare variable $x as xs:int := 1; xdmp:set($x,"bad") |
| all | SQL | BUG-46903 | SQL Extract function on date column returns wrong format result in isql When extract function is used to select day/month/year from a date column, the result is wrongly formatted in isql. |
| all | XCC/Java | BUG-46115 | Text exposed by XCC/J XCC/J Client may expose text that could lead to security vulnerability |
| all | Semantics | BUG-45168 | serializing arrays in SPARQL CSV and JSON output A SPARQL SELECT statement can construct an array, for instance using a call to <http://marklogic.com/xdmp/json#to-array>((...)). Previously, array values were not serialized correctly for a SPARQL SELECT in CSV and JSON output. Now, array values are serialized in CSV and JSON. |
| all | MarkLogic REST API | BUG-46692 | Performance improvement of JavaScript resource services and transforms in the REST API Transforms and resource service extensions implemented in Server-Side JavaScript were slower than those implemented in XQuery. Now, transforms and resource service extensions implemented in Server-Side JavaScript have performance equivalent to those implemented in XQuery. |
| all | Admin API | BUG-46547 | Deletion of path namespace when in use The Admin UI and API allow deletion of the path namespace when it is still being used by a path field, causing "Warning: XDMP-UNBPRFX: (err:XPST0081) Prefix XXX has no namespace binding" warning messages when referenced in search. |
| all | adminGUI | BUG-47103 | XQuery injection vulnerability in the Admin GUI Certain forms in the Admin GUI are vulnerable to XQuery injection. These are forms involving field includes and excludes, triggers, and permissions. |
| all | mlcp | BUG-45212 | XDMP-TOOFEWARGS: mlcp 9.0-2 with JavaScript transform functions. XDMP-TOOFEWARGS is thrown from mlcp 9.0-2 with JavaScript transform functions against a MarkLogic 8.0-6.4 or above server. |
| all | conversion | BUG-46838 | Tokenizing Arabic content with certain codepoint sequences may fail with internal error This error may manifest as an error on loading, or a failure in conversion with xdmp:document-filter. It shows up in certain combinations of characters involving the LTR and RTL marks (U+200E and U+200F). |
| linux(64-bit) | MarkLogic REST API | BUG-46842 | aggregate with multiple fragments scopes in search:values() calls for tuples A search:values() call in the Search API (and the equivalent /v1/values request in the REST API) can construct tuples from range indexes as well as apply aggregates to the tuples. Previously, when the call specified different fragment scopes for the range indexes (for instance, document and properties scopes), the Search API threw an error. Now, the call executes correctly, applying the aggregate to the tuples with range indexes having different fragment scopes. |
| linux(64-bit) | jsearch | BUG-46913 | querying facets with multiple threads in JSearch The JSearch API provides conveniences for searching in JavaScript including the ability to construct facets concurrently in multiple threads. In MarkLogic 9.0-1 and 9.0-2, JSearch threw an JavaScript error if the caller specified multiple threads for facet queries. Now, JSearch uses multiple threads to query facets without error. |
| all | mlcp | BUG-47470 | MLCP adds an unexpected collection MLCP adds a collection "element" to documents with more than one node at the root level. |
| all | adminGUI | BUG-46522 | Admin UI: Application Server Count not correct In the Admin UI, the Application Server Count is not correct in some circumstances where multiple groups are configured. |
| linux(64-bit) | JavaScript | BUG-46701 | Segmentation fault when using xdmp.spawn with external variables. MarkLogic Server crashes with segmentation fault when using xdmp.spawn with external variables in a loop. |
| all | adminGUI | BUG-46915 | Admin UI: range path indexes incorrectly identical In the Admin UI, if you configure two range path indexes with the same path expression and the same scalar type, but with different attribute values, as shown in the attached figure, (eg. /a/b[@attr1 = "1"] and /a/b[@attr1 = "3"]), the admin console will return a warning "Invalid input: Two or more path range indexes are identical.". When the predicates contain white spaces, the path expressions are wrongly tokenized by space and considered to be the same. |
| all | SQL | BUG-47185 | TDE not triggering extraction on some contexts with attributes In Template Driven Extraction, a template with a context element containing attributes might not trigger extraction correctly. /foo//@bar is an example of a context that doesn't trigger any extraction. |
| all | XQuery | BUG-45721 | XDMP-MISSINGCONTEXT thrown by dls:validate-all-documents with verbose option Running dls:validate-all-documents and passing in fn:true() to enable verbose output causes MarkLogic to throw an XDMP-MISSINGCONTEXT exception. |
| windows(64-bit) | security | BUG-46703 | MS Windows: APIs that use LDAPS server do not work APIs that would use a LDAPS server do not work on Microsoft Windows. |
| all | Geospatial | BUG-47005 | geo:geohash-encode returns no geohashes for box crossing International Date Line geo:geohash-encode returns no geohashes for a box that crosses the International Date Line at any geohash precision level |
| all | search | BUG-46416 | Some combining characters create false negatives for diacritic-insensitive search Combining characters that persist in NFC normalization may cause false negatives in diacritic-insensitive search. For example, Arabic short vowels are known to have this issue. |
| all | search | BUG-47331 | Wildcard query returns false positives A character wildcard query with a high codepoint number may return false positives from index resolution even if one character wildcards are enabled, if trailing wildcards are enabled and there is no word lexicon or if the query is punctuation or whitespace sensitive (which disables use of the word lexicon). The plan will include no terms from the word query. Example query: cts:search(doc(), cts:word-query("逃*", ("punctuation-sensitive","wildcarded")) |
| windows(64-bit) | Query Console | BUG-41292 | Query Console XQuery multi-line text highlighting broken Highlighting not correct with multi-line text. Example: xquery version "1.0-ml"; let $x := "a " return $x |
| all | SQL | BUG-41220 | Static Type mismatch in SELECT-FROM-SELECT SQL Queries SELECT-FROM-SELECT queries have a mismatch in static type when order of the columns are different. |
| all | SQL | BUG-47366 | ODBC connection incorrectly results in a SQL-NOCOLUMN error An ODBC connection from Cognos or other BI/ODBC based tools can result in the error "SQL-NOCOLUMN: Column not found: table". |
| all | search | BUG-46705 | Root field with advanced-stemming makes large json document insert extremely slow Root field with advance-stemming makes a large json document insert extremely slow. |
| windows(32-bit) | SQL | BUG-47083 | ODBC Setup not working with 9.0.1 ODBC 32-bit Driver on Windows 7 When attempting to install the ML ODBC driver mlsqlodbc-1.3-2-i686.msi on a Windows 7 32 bit system the installation fails with the error: The routines for the MarkLogic SQL ODBC driver could not be loaded due to system error code 126: The specified module could not be found. (C:\Program Files\MarkLogicOdbcDriver\0902\bin\mlsqlodbcw.dll) |
| all | search | BUG-46418 | cts:parse does not support value sequences after LT, LE, NE, GE, GT cts:parse allows value sequences after EQ, but not the other comparison operators. Example: Given "label" is bound to a range index cts:parse of "label LT (this that)" will return a parse error, while cts:parse of "label EQ (this that)" will be OK. |
| all | MarkLogic REST API | BUG-47480 | JavaScript transforms after MarkLogic Server upgrade fail with XDMP-UNEXPECTED The REST API supports transforms for reading and writing documents including documents matched by search. On upgrade from an earlier MarkLogic release, transforms are upgraded for compatibility with the latest REST API framework code. Previously, JavaScript transforms were mistakenly upgrade in the same way as XQuery transforms. As a result, requests using JavaScript transforms after upgrade failed with an XDMP-UNEXPECTED error. Now, upgrade correctly maintains JavaScript transforms as JavaScript so requests using upgraded JavaScript transforms do not return the error. |
| all | SQL | BUG-47300 | Distinct aggregate SQL Query incorrect SQL Query result could be incorrect when distinct aggregate is used against large dataset |
| linux(64-bit) | mlcp | BUG-46783 | mlcp command gives argument list too long error Using a wildcard for an input_file_pattern expands and can create an error for a too-long argument list. |
| all | adminGUI | BUG-46463 | Forest's configuration upper and lower bound fields do not reflect database assignment policy In the Admin UI, forest's configuration upper and lower bound fields are only relevant for range assignment policies. Fields in "Forest Configuration" page of admin UI are now disabled if the assignment policy associated with the database is not "range". |
| all | MarkLogic REST API | BUG-46860 | UDFs returning maps for REST API values requests A values request in the REST API can query a range index for values lists including executing a C++ UDF (User Defined Function) to aggregate over the matched values. Previously, if the UDF returned a map instead of an atomic value, the REST API used only the value of the first key in the map. Now the REST API correctly returns the map. |
| all | xdmp | BUG-47054 | Resource cleanup In rare circumstances, the XQuery evaluator does not release resources resulting in a slow memory leak. |
| all | security | BUG-46501 | Keystore State Keystore state now available in Admin UI and detected keystore errors logged. |
| all | Optic API | BUG-46611 | incorrect cast for JavaScript number literals in the Optic API The SJS (Server-Side JavaScript) implementation of the Optic API accepts JavaScript number literals and casts integers to an XML Schema data type for execution by the engine. Previously, the API incorrectly cast integer literals to the xs.int data type, which caused casting errors for integers larger than 2147483647. Now, the API correctly casts integer literals to the xs.long data type, supporting JavaScript integer literals to the largest JavaScript value (9007199254740991). |
| all | SQL | BUG-47056 | Selection of column with nulls causes a segmentation fault Under some circumstances selection of a nullable string column in SQL or in cts:value-tuples may cause a segmentation fault. |
| all | Geospatial | BUG-47414 | Geospatial Region Index setting "ignore" invalid values does not work for certain errors Documents with invalid values get inserted into the database despite the Geospatial Region Index setting to "ignore" invalid values. |
| all | mlcp | BUG-46897 | Wrong namespace of attributes imported with aggregate XML files by mlcp When mlcp users import aggregate XML files, if there is default namespace defined but some attributes are not in the default namespace, those attributes are actually ingested in database with the default namespace. |
| linux(64-bit) | SQL | BUG-44470 | Error in SQL queries containing an Union inside Exists clause All the expressions selected in the union query should have equal number of columns. The check for number of columns selected were wrong if the union query is nested inside an exists. Thus resulting in an unexpected error. |
| all | SQL | BUG-45699 | SQL select with unqualified view name doesn't throw an error. When there are views with the same name in multiple schema, then selected the view without a schema name doesn't throw error and resolves to a random schema. |
| OS X | JSON | BUG-47133 | JavaScript: cts.jsonPropertyValueQuery() with number doesn't return document For certain values, cts.jsonPropertyValueQuery() involving a number doesn't return document in JavaScript. |
| all | Common API | BUG-46723 | Metering memory metrics Meter the size of used huge pages, total and free system memory size, expose huge pages size and system free memory size to monitoring history board on Linux; Meter total and free system memory, expose system free memory to monitoring history board on Windows. |
| all | Geospatial | BUG-46902 | Geospatial region queries involving circles are slow A cts:geospatial-region-query involving a cts:circle may exhibit unacceptable performance. |
| linux(64-bit) | SQL | BUG-45886 | Ordering by variable in group by Order by clauses using variables from group by sometimes cause incorrect ordering of results. |
| all | MarkLogic REST API | BUG-46693 | multiple path indexes for a range constraint in the Search API The query options for the Search API can define constraints for range indexes. Multiple range indexes with the same data type can supply values for a single constraint. Previously, if a single constraint specified multiple path range indexes, only one of the path range indexes was used for the query. Now, the query correctly uses all of multiple path range indexes when specified by a single constraint. |
| all | search | BUG-46585 | Missing annotation in relevance trace for field value query The relevance trace for a cts:search query with a field value query in it has the key, but not the annotation telling you what the key means. |