This topic provides release notes for the very latest builds. For information on different types of builds and a history of recent builds, see the Changes and Additions topic.
Build 175.1 is a cutting edge build that contains a big set of fixes and improvements for databases, better error diagnostics for operations on data in MAP files, and a rework of query operations for tile masks.
Databases, Error Diagnostics, and Query Operations
Error messages for table design operations in MAP files have been extended to include the names of fields, the names of constraints, and the names of indexes relevant to the error. For example: Cannot rename field 'length', referenced by computed field 'length-km'.
Error messages for table record operations in MAP files have been extended to include the names of fields, the names of constraints, and the names of indexes relevant to the error. For example: Cannot set values of one or more fields, rejected by index 'name-x'. For example: Invalid value of key field 'x', null not allowed.
The file filter for GDB has been changed from *.gdb;gdb to just gdb.
The file filter for GDBMOBILE has been renamed from GEODATABASE Files to GDB Mobile Files.
Computing a bounding box for geometry data on SQLITE with SPATIALITE or ESRI ST_GEOMETRY extensions uses ST_MinX, ST_MinY, ST_MaxX, and ST_MaxY functions for much better performance.
Creating a new table on DB2, Jet, MySQL, Oracle, PostgreSQL, and SQL Server with a name specified that is longer than allowed by the server reduces the name of the table to obey server limits on names.
Data sources set to cache data in the parent database check the capabilities of the parent database and proceed without cache if the database does not support all features required for caching. For example, Manifold .map is accepted, databases like SQL Server are accepted with a couple of minor limitations. For example, DB2 is rejected for vector caches because the DB2 default SRID requires X and Y values to be non-negative (engineering work is underway to find a workaround for that DB2 limitation). GDB and similar data sources that look like databases but have many limitations are rejected for cache.
Data sources set to cache data in the parent database use separate cache tables for each database schema. Previously, the system tried to use cache tables in any accessible schema: that could create situations where different users with limited permissions could create their own cache tables (OK, no problem) and then users with extensive permissions could end up having to choose between multiple available cache tables, having to make the choice basically at random (not OK). The change makes things much more predictable. Whichever schema you connect to by default now is used for the cache.
Data sources set to cache data in the parent database will continue working without cache when cache tables cannot be created or are inaccessible.
All databases implement uniqueness requirements implied by BTREExxx indexes using UNIQUE indexes instead of UNIQUE constraints. The change has been made because using UNIQUE constraints could backfire in some situations. Using UNIQUE within indexes matches more closely semantics currently in use by the system. BTREExxx indexes created by older versions of 9 will continue to work as before.
The TileMaskExtract SQL function has been renamed to TileMask.
The TileMask query function now produces a numeric tile with 0/1 values (was producing a tile with boolean values).
The TileMaskReplace query function now accepts mask as a numeric tile (was accepting a tile with boolean values). Pixels whose mask is either missing or 0 are made invisible in the result. Other pixels are made visible. Pixels that were previously invisible but have become visible are set to 0.
The NOT, AND, OR, and XOR operators for tiles now accept numeric tiles with 0 or any other values: 0 is interpreted as FALSE and any other value is interpreted as TRUE. The operators produce a numeric tile with 0 or 1 values.
The comparison operators for number/tile, tile/number, and tile/tile combinations now produce a numeric tile with 0 or 1 values.
The Compare query function for number/tile, tile/number, and tile/tile combinations now produces a numeric tile with -1, 0, or 1 values.
The TileCompare query function has been removed, since the Compare query function now does everything the former TileCompare function did and more.
The BETWEEN operator for tiles, that is, used in cases where at least one of the operands is a tile and operands that are not tiles are numbers, now produces a numeric tile with 0 or 1 values.
(Fix) ALTER TABLE no longer can rename a schema item of the wrong type. Previously, attempting to rename, for example, an index did not check whether the schema contained an index with the specified name; instead it just checked that the schema contained an item with the specified name. The operation could then rename an item of a different type, for example, a field. The fix now causes such an attempted rename to fail early.
(Fix) Creating a new non-primary index on SQLITE using a non-unique name automatically adjusts the name of the index to make it unique.
(Fix) Creating an identity field on GPKG no longer forces the identity field to be autoincrementing.
(Fix) Creating an RTREE index on GPKG fails if the index references a field other than the primary key field (such an index referencing a non-primary key field violates the GPKG spec).
(Fix) Data sources set to cache data in the parent database (for example, Bing Maps or some other web image server with the Saved cached data between session option turned on) no longer sometimes fail to work if the parent database is not a MAP file.
(Fix) Creating a new computed field or constraint no longer sometimes accepts an expression with extra tokens at the end. For example, b+100- (with a minus sign at the end) previously was accepted as b+100 (with no minus sign). The system now complains about the extra minus sign - character at the end.
Build 9.0.175 is a Base build. This build or more recent is a must have build for most users to replace all prior builds, for all Release 9 and Manifold Viewer users. Build 9.0.175 provides numerous improvements with substantial changes to many topics in documentation, with illustrations now totalling over 12,300 full color illustrations. For detailed lists of changes, see the build notes in the Changes and Additions topic for builds 220.127.116.11 though 18.104.22.168.
Starting with Release 9 build 9.0.175 and Release 8 build 8.0.31, Manifold® products use a new activation system. See the discussion in the New Activation web page.
Important: If you do not want to switch over to the new activation system, do not install and activate Release 9 build 9.0.175 or Release 8 build 8.0.31. Activating a newer build using a legacy serial number will automatically upgrade that serial number to the new activation system. That is a one way upgrade: Once upgraded, a serial number cannot be degraded back to legacy status.
While the new system provides great convenience for most people, some licensees may prefer to stay with the old activation system. If desired, licensees can stay with the old activation system by not installing new builds. To stay with the old system, continue using Release 9 build 9.0.174 and Release 8 build 8.0.30. See the Manifold Activation topic for more information.
Highlights of build 9.0.175 can be grouped into several main sections:
Labels: Numerous additions to labels, such as curved line labels to follow line segments, both on screen and when printed, along with numerous style features such as curved Unicode labels, mixing multiple languages, mixing right to left and left to right languages, multiple lines in labels, shadows, and much more.
Coordinate Systems: Thousands of updates for EPSG 10.19, new Natural Earth projections.
Dataports: Upgrades to GDAL, GDB, SQLITE / GPKG, Esri mobile geodatabases, LAS/LAZ LiDAR dataports, LAS library, and more.
User Interface: Drag and drop from Windows Explorer to import or to link files and data sources into the Project pane, ODBC configuration from About, better copy and paste into GDB and similar data sources.
SQL: Use of double quotes as delimiters, new functions such as GeomWithin, GeomOverlayWithin / GeomOverlayWithinFilter, faster GeomOverlay functions, dramatically faster unindexed joins, specification of field properties when creating tables using SELECT INTO and much more.
For details, see the Changes and Additions listings for builds 22.214.171.124 through 126.96.36.199. Improvements integrated into build 9.0.175 since build 188.8.131.52 include:
URLs used for Manifold sites in the product and in install packages have been switched from HTTP to HTTPS.
Build 174.4 provides several significant improvements for the query engine and SQL functions, which can provide dramatic speed increases in certain cases. Other new features provide improvements in Esri file geodatabase (GDB) connectivity and LAS / LAZ LiDAR operations.
LAS / LAZ
Support for LAS / LAZ has been updated to use LASzip version 3.4.3. This fixes several bugs in encoding and decoding.
(Fix) Reading LAS files with extra field values no longer sometimes fails.
Esri File Geodatabase (GDB)
Esri file geodatabase (GDB) 64-bit modules have been updated to the version 184.108.40.2068 SDK that was issued by Esri last week. The new version of the Esri SDK does not contain 32-bit modules, so they continue to be at level 220.127.116.11. Esri's new update fixes a few issues which rarely occur.
The GDB dataport attempts to work around an Esri bug that frequently occurs in geodatabases created by recent versions of ArcGIS Pro. The bug makes a newly created table fail to register completely. The dataport examines the state of the geodatabase and, if the table has been created and is operable, reports that the table has been created and marks it in the metadata to prompt execution of special workaround logic within Manifold that compensates for the table not being registered completely in the geodatabase.
The GDB dataport no longer reports indexes on tables returned by file GDB modules as BTREExxx, since Esri's indexes can only be efficiently used to search for individual records, with other operations being unoptimized. This lets the query engine optimize around not having these indexes instead of being tricked into using them with subpar results. Built-in Esri indexes on the OBJECTID field continue to be reported as BTREE, with all operations optimized internally by the dataport. Using Manifold optimizations can result in dramatically faster operations than using limited Esri indexes.
Exporting a drawing to GDB no longer creates a feature data set. Creating a feature data set for each drawing, for example, when exporting a map with multiple layers, is not necessary and often is not desired by the user. Manifold now only creates a feature class and leaves adding any desired feature data sets up to the user.
The query engine allows enclosing identifiers in double quotes " characters, in addition to square bracket [ ] characters and back tick ` characters. Double quote characters were already allowed as delimiters in the ODBC driver, because double quotes are the default for many tools. This added capability extends the use of double quote " characters as delimiters for all queries, such as those run interactively or through scripts. This helps interoperability when adapting SQL copied from other systems.
The query engine optimizes unindexed INNER / LEFT / RIGHT joins with a condition such as: f(a) = b.x (where a and b are tables and x is a field. That is a very common condition, so the optimization has a big effect. The performance gains depend on the number of records in the involved tables, but are typically really big, similar to the performance difference between indexed and unindexed joins. This optimization helps a lot because while it is always advisable to build appropriate indexes on fields that are used in queries, that is not always possible or desirable. For example, a table we might want to index may reside in a data source that does not support indexes, or we might not have permissions to alter the data source by adding an index. Adding an index to such a table would mean making a copy of it and indexing that, which can be both time consuming and inconvenient.
The query engine writes into createdname and creatednamequoted pragmas the final name of a table created by SELECT INTO, for use by further statements that might want to create components linked to the created table. This is similar to what is done for CREATE.
The query engine allows specifying properties for the fields of a table created by SELECT INTO, for example, using the syntax SELECT ... INTO t (PROPERTY ..., ...) ...; This allows using SELECT INTO with data sources like GDB or GPKG which require additional configuration for geometry fields at the time the table is created. Typical properties specified on creation of tables in such data sources are the coordinate system, the geometry type, whether the geometry is 2D or 3D, and so on. For example, when creating a table within an Esri file GDB if we want to store areas in that table we must specify the FieldGeomType.geom property to have a value of area:
SELECT [area], [code], [name], [geom]
INTO [gdb]::[states] (
PROPERTY 'FieldGeomType.geom' 'area' -- the default would be 'point'
) FROM [states];
The GeomWithin query function optimizes tests for zero distance.
There are new GeomOverlayWithin and GeomOverlayWithinPar query functions that take a primary drawing, an overlay drawing, a distance in the coordinate system of the primary drawing, and return all pairs of geoms in the primary drawing and the overlay drawing that are within the specified distance.
There are new GeomOverlayWithinFilter and GeomOverlayWithinFilterPar query functions that take a primary drawing, an overlay drawing, a distance in the coordinate system of the primary drawing, and return all geoms in the primary drawing for which there is at least one geom within the specified distance in the overlay drawing.
The GeomOverlayXxx (non-topology) query functions skip normalizing geoms whenever possible for performance. This frequently produces a significant performance gain, particularly for cases when the overlaid drawings have many overlaps.
Build 174.3 provides improvements for LiDAR data use in the LAS and LAS library dataports as well as various system improvements. Several other development branches (for example, with various improvements to labels) have been maintained during recent builds: changes from these branches will appear in the near future.
Welcome text in the gray background area for the Manifold desktop can be turned off in Tools - Options.
Layout windows supports keyboard shortcuts to set cursor modes:
Default = Shift-Space,
Create Text = Shift-T,
Create Area Sample = Shift-A,
Create Color Sample = Shift-C,
Create Line Sample = Shift-L,
Create Point Sample = Shift-P,
Create Text Sample = Shift-X.
The LAS dataport exposes data within built in and custom LAS headers as Info and InfoVLR tables.
The LAS library dataport exposes data within built in and custom LAS headers from individual files as Info and InfoVLR tables. Both tables contain an additional field for the file path.
Processing a folder of LAS files using the Index LiDAR Files tool caches header data in MAPMETA files. MAPMETA files composed by older versions of the tool that contain no header data are accepted and updated on the fly.
Exporting data to LAS or LAZ format sets the name of the generating software package to Manifold System followed by the build number.
Activation dialogs use a short version of product names in the title, and use the product name in text prompts. This helps make it clear which product is being activated on a system with multiple Manifold products installed.
MSI install packages use product-specific banner images.
There is a new command line switch to remove the ODBC driver. Running the command requires administrator privileges:
The About dialog allows updating or removing the ODBC driver from a non-administrator account. Attempting to update or remove the ODBC driver from a non-administrator account asks the system to perform an action with administrator privileges, which in turn prompts the user for administrator credentials using a system screen.
Copying and pasting a table with geometry data from a MAP file into a data source that does not allow mixing geometry types within a single table (for example, GDB) automatically sets the geometry type of pasted data to that used by most records.
(Fix) Cutting edge builds of Manifold Viewer are now correctly reported as '... Beta' builds.
Illustrations above: The Natural Earth (at left) and Natural Earth II (at right) projections. Natural Earth II is a more rounded projection, with smaller polar regions.
Build 174.2 is a quick build to enhance label capabilities, along with some database and UI improvements and miscellaneous fixes.
Rendering curved line labels renders halos.
Placing a line label prioritizes placing the label near a straight line segment that is long enough to fit it. If there are multiple such segments, the system uses the segment closest to the center of the line.
Placing a line label avoids placing the label onto a sequence of segments with high curvature (large angles between segments), to improve legibility. The maximum bend angle can be specified in the Label Style dialog (in the Position tab, accessed from the More... choice at the bottom of the pull down menu for the total style button). The default maximum bend angle is 60 degrees. Setting the maximum bend angle to 0 places labels near straight line segments only.
Labels with multiple lines of text, with a box, or with an icon are always placed near points or near straight line segments.
Reduced graphics mode supports labels with multiple lines of text.
Rendering labels with multiple lines of text uses the alignment specified in the in the Label Style dialog (in the Position tab, accessed from the More... choice at the bottom of the pull down menu for the total style button). Available choices are: left (default), center, right.
EPSG coordinate systems that switched bases (5 cases) and coordinate transforms that switched source or target systems (3 cases) in the latest, 10.19 version of the EPSG database have been adjusted to coincide with their EPSG definitions.
The gray background area of the main Manifold desktop window shows a dimmed Manifold logo and dimmed text with tips for new users.
The context menu for a component in the Project pane includes a new Open command, which opens the component.
Creating a primary key on an existing text field in PostgreSQL always uses the collation of the field. This became a requirement in PostgreSQL 13. Secondary indexes continue to be able to use collations different from those of the fields.
Creating an index on an existing text field in MySQL or SQL Server always uses the collation of the field and does not attempt to change it. Previously, adding an index on a field that was not part of any other index attempted to change the collation of the field to that specified for the index. The system no longer does that and instead shows, for a likely edit, the collation of a field directly in the user interface.
(Fix) Importing data automatically skips tables that cannot be accessed, for example, due to permissions. This fixes the regression with MDB import in the previous build.
(Fix) Opening a table that cannot be accessed, for example, due to permissions, no longer creates a fetch record (row with a small "more" down triangle at end of tables) in an otherwise empty table window.
(Fix) Double-clicking a word in a text window no longer sometimes fails to select it if the text has more than 64k characters.
(Fix) Nested include directives in queries now resolve from the current data source instead of from the data source of the topmost query. This allows composing a query with includes, then including that query from within a different data source with nested includes resolving correctly.
(Fix) References to components in included queries now resolve from the current data source instead of from the data source of the topmost query. This allows composing a query which references a script function, then including that query from within a different data source with the script reference resolving correctly.
Build 174.1 introduces rendering improvements and provides a starting implementation of curved line labels, including improvements in Unicode / multi-language labeling for all labels. The build also provides significant improvements in importing and linking files, such as drag and drop files from Windows Explorer to import or link, as well as upgrades to EPSG. Upcoming builds will expand on labels, add new features for vector editing, and add various small improvements throughout the system.
Rendering and Labels
Label placement on lines only considers those parts of line branches that appear on screen. (Previously, in cases where some branch parts were invisible a label might have been placed partly off screen.)
Label placement on lines has been reworked to place labels at the center of each visible part of a line. Labels can follow multiple consecutive segments. (Previously, labels were placed on line segments that were long enough to fit the label, a too restrictive constraint.)
Curved labels, that is, labels following multiple line segments, are rendered with the following supported / not supported label features:
Unicode features, including multiple code points collapsing into a single glyph, a single code point expanding into multiple glyphs, all types of whitespace, etc - supported,
Mixing multiple languages in the same label, including switching fonts - supported,
Right to left text, mixing left to right and right to left fragments - supported,
Multiple lines in label text: Normally curved text uses a single line, but if curvature is not high, the results with multiple text lines are reasonably legible), - supported,
Font face, font weight, font italics - supported,
Shadows - supported,
Underline, strikeout - not supported,
Halos - pending (not currently supported but will be added),
Icons - pending (not currently supported but will be added),
Underline - not supported (continue to be supported for single line segment labels),
Strikeout - not supported (continue to be supported for single line segment labels),
Boxes - not supported (continue to be supported for single line segment labels),
Curved labels are supported for printing, with optimizations for high resolution printing and large print areas.
Labels following multiple segments are not supported in reduced graphics mode.
Label placement on lines slightly simplifies line metrics, to avoid label text distortion from overly close line following. Upcoming builds will allow turning this feature off or specifying tolerances. Upcoming builds also will allow line label placement relative to the line, such as above or below the line.
Drag and Drop / Import and Link
Dragging and dropping files from Windows Explorer into the Project pane imports files, and dragging and Shift-dropping links those files. The cursor automatically changes to show import or link when pressing the Shift key during the drag.
Dropping files into a child data source confirms the action. If the confirmation is turned off, it can be turned back on using the Confirm dropping files into child data source option in Tools - Options.
Dropping files into a child data source that has not been opened yet or is read-only shows an error.
Dropping a single MAP or MXB file opens the file as long as the user is not trying to link it (by holding Shift).
See the 10 Minute Tutorial - Drag and Drop video for examples.
Importing or linking a VRT file (*.VRT) automatically invokes GDAL / OGR to import or link the VRT file's components as a single, virtual image or drawing. GDAL must be installed for this facility. A VRT file is a text file that specifies which GDAL / OGR driver to use and with which parameters, similar to DSN for ODBC or UDL for OLE DB. VRT files are often used to present collections of individual image or vector files as a single "virtual" image or drawing mosaic.
EPSG coordinate systems have been updated to EPSG 10.19. Rare exceptions are a few cases where an EPSG coordinate system was redefined to change its base coordinate system (!). Those changes have not yet been accepted, but will be accepted in upcoming builds in the near future.
A new coordinate system type has been added: Lambert Conformal Conic (Single Parallel, B).
Activation dialogs have been renamed to include Manifold 9 in the caption. This allows distinguishing them from Release 8 activation dialogs, in cases where a user may have both 8 and 9 installed on a machine and has launched a yet-to-be-activated Release 8 installation.
The GDAL / OGR dataport supports GDAL 3.2.x (GDAL302.DLL).
Writing a coordinate system to WKT or WKT2 (for example, using a Transform template) writes authority codes for EPSG systems. Parsing a coordinate system from WKT or WKT2 reads authority codes for EPSG systems: if the definition of the parsed system matches that of the referenced EPSG system, the system will add the EPSG code to the parsed system, to allow using transforms for that system specified in the EPSG system, for example, transforms based on grid files.
The SQLITE and GPKG dataports support deleting table fields.
The SQLITE and GPKG dataports support renaming table fields.
The SQLITE and GPKG dataports support Esri ST_GEOMETRY extension for all operations if it is installed, in both 32-bit and 64-bit modes.
Refreshing a table within a database automatically reloads table metadata from the database to catch changes done in other sessions, for example, in a different instance of Manifold or other client connected to the same database.
Attempting to open a MAP or MXB file from the list of recently opened files removes the file from the list if the attempt to open fails.
Migrating a compressed image from a MAP file created by Manifold Release 8 puts the compressed image into a new ECW / JP2 file with a stable name, to avoid creating a new such file on each migration.
Migrating an image from a MAP file created by Manifold Release 8 no longer creates a Level field in the image table, to avoid making the image unusable in many transforms.
(Fix) The Erase command in a map window when keeping the inner part no longer fails to erase data far from the edited geometry.
(Fix) Matching a bracket in a text edit control using Ctrl-] or Ctrl-Shift-] no longer fails to scroll the caret into view if the match is offscreen.
(Fix) Parsing a coordinate system from WKT or WKT2 no longer misparses systems with different units for XY and Z.
(Fix) The application window no longer fails to show non-ANSI characters in the caption.
(Fix) Opening a MAP or MXB file with non-ANSI characters in the path no longer fails.
Changes and Additions