Changes and Additions

mfd9_logo_135x149.pngRelease 9 is a community driven product that evolves very rapidly, so rapidly that this documentation cannot keep up with Cutting Edge builds.  Each new Cutting Edge build is announced in the Cutting Edge section of the user Forum with download links plus a list of changes, new features and bug fixes.   Following is a list of changes and additions from recent builds, a mix of small and large items.   The list is long, but with typically one to three builds per week it only represents a few months of progress.

 

Some items from the very latest builds have yet to be fully integrated into this documentation.   In most cases if we are aware of changes we can use this documentation as is, mentally adjusting for changes in dialogs or workflow while updates to documentation are prepared and published.   Some changes require updates to numerous topics and potentially hundreds of screen shots in this documentation, requiring days or weeks for updates to fully propagate through all topics.   

 

Topics and screen shots are updated frequently online.  If there is a puzzling mismatch between a topic and the latest build, check back in a few days to see if the topic has been updated.  For added discussion, see the georeference.org user forum.   To see discussion for a particular build, enter the build number in the filter box at the top of the forum page.

Cutting Edge Builds

Formal, published Manifold System releases run forever and never time out.  They are numbered to end in a three-digit number, for example, 9.0.168.   Cutting Edge builds are experimental, open beta builds that typically are numbered to end in a single decimal digit, such as 9.0.168.5.  New features in Cutting Edge builds are experimental and often will change based on user feedback until the next published build.  Cutting Edge builds will usually time-out 30 days after they are first published, to ensure old, experimental builds do not linger to cause confusion.   Although Cutting Edge builds include new, experimental features, they have proven to be so stable that almost all Manifold users will automatically utilize whatever is the latest Cutting Edge build.   eg_changes01_01.png

Run the Latest Version

Manifold Release 9 and Manifold Viewer evolve rapidly.  New Release 9 builds fix bugs and add numerous new features.   They are free to download and use by licensees.   If you have already activated Release 9 on the computer, un-installing an older build and then installing a newer build will not require an additional activation key.   Running the latest build guarantees you will be able to open .map and .mxb created by new builds, which older versions might not be able to open.

 

New, improved versions of Release 9 usually will use the same .map project format as earlier versions, but sometimes improvements will require changes to .map project format that older versions cannot read.   Newer versions of Release 9 will always be able to open .map project files created by older versions, but older versions might not be able to open .map project files created by the latest version.

 

ico_nb_arrow_blue.png

Always run the latest version of Release 9 or Viewer.   Newer versions of 9 or Viewer are free to download.  If 9 has been activated on a machine, no new activation will be required to un-install an older build and to then install a newer build.   If you cannot open a Release 9 .map or .mxb project file, install the latest version of 9 or Viewer and try again.  Older versions of 9 or Viewer might not be able to open projects created by the very latest build.

Check for Updates

Check for updates at any time:   Launch Manifold and choose Help - About.     Manifold will reach out through Internet to check for a new version.  If we do not have an Internet connection the system cannot check for updates.   The system does not automatically check for updates.

 

Following are recent builds, with the most recent builds at the top of the list.   Builds issued as formal, published releases are named "Manifold System" in addition to the build number.  Formal, published Manifold System releases show the 9 logo in the splash screen.   Cutting Edge builds leading up to a new, published build will show a distinctive image on the splash screen.   Build features are cumulative:  later builds will include all improvements and advances from previous builds.    

 

New builds usually include any bug fixes, which are not listed below.  See the Cutting Edge announcement in the forum for each build for a list of bug fixes in that build.

9.0.168.10

Collations

 

Collations are a big deal with modern, international data.  See the new Collations topic.

 

Discussion: Why are indexes on ANSI text fields limited to 'neutral'? Because the definition of ANSI text in 9 is 'interpret single-byte characters using whatever is the current language on the current system'. If we move a MAP file from a German system to a Portuguese system, what ANSI characters map to changes: what was being displayed as 'a' can now become 'b'. Consequently, when building indexes on ANSI character data we cannot rely on the linguistic meaning of characters, because that changes, and can only rely on what does not change, that is, on character codes. That's what the 'neutral' language does.

Discussion:  The main purpose of the change is to better support indexes on character data in databases. Databases very often use text values as unique identifiers, so being able to use indexes on text fields is very important for performance. That can be a problem, because indexes on text fields often use complex rules to tell whether text values are equal to each other and / or how they are ordered relative to each other. This happens because default settings on many databases are set to use a specific linguistic collation, whether English or not.  Another problem is that although support for Unicode has been gradually growing, many databases are only fully starting to support Unicode.  For many databases, even famous ones,  many changes to fully support Unicode are currently in development branches and are not in released versions of databases.  Before the current efforts to support Unicode, various databases often implemented linguistic collations for various languages using custom code.   That requires multiple, complex, adaptive efforts by Manifold to utilize indexes on character data within different databases, that is, to allow using these indexes in queries and various internal operations.  Manifold had to (a) extend Manifold's type system to allow plugging in arbitrary code for implementing collations, and (b) implement custom collations currently used by each database product, at least the more common and more popular DBMS products.   The above change is for (a), changes for (b) follow below.  Additional DBMS packages (Oracle, etc.) will be added in the next build.

Discussion: Indexes with external collations that cannot load can happen when, for example, a MAP file created on a later build which supports more external collations will try to load into this build, or when Manifold deprecates a particular external collation, or when an external collation that depends on data stored outside of EXT.DLL will not be able to find it, etc.

 

Other

 

 

9.0.168.9

 

-- $manifold$

 

-- prepare to convert coordinates from drawing to image

VALUE @conv TABLE = CALL CoordConverterMake(

  ComponentCoordSystem([image]),

  ComponentCoordSystem([drawing])

);

 

-- set 'height' field in drawing to average height taken from image

UPDATE (

  SELECT [mfd_id], [height],

    TileGeomAvg([image], CoordConvert(@conv, [geom])) AS [computed]

  FROM [drawing]

  THREADS SystemCpuCount()

) SET [height] = [computed];

 

9.0.168.8

 

 

richat_structure.png

 

Illustration, above: The Richat Structure in Africa, a blended display using Space Shuttle SRTM terrain elevation data colored and hill shaded, blended with Bing satellite imagery with increased contrast, and enhanced by 7x7 matrix calculation of Curvature, Profile as discussed in the Example: Enhance Terrain with Curvatures topic.  The diameter of the view is approximately 42 kilometers.

9.0.168.7  

 

9.0.168.6

 

9.0.168.5

 

9.0.168.4

 

9.0.168.3

 

9.0.168.2

 

 

9.0.168.1

 

Manifold System 9.0.168

 

Manifold System 9.0.168 - Breaking Syntax Changes

Following is a summary of breaking changes to query syntax in 9.0.168.   Queries written in older versions which use features listed below must be adjusted to the new syntax to work in 9.0.168 and subsequent builds.

 

Query parameters now use @ as a prefix.

 

-- Old

EXECUTE WITH (p NVARCHAR = 'folder') [[

  SELECT * FROM mfd_meta WHERE

    StringCompareCollate(property, p, Collate('', false, false, false)) = 0;

]];

 

-- New

EXECUTE WITH (@p NVARCHAR = 'folder') [[

  SELECT * FROM mfd_meta WHERE

    StringCompareCollate(property, @p, Collate('', false, false, false)) = 0;

]];

 

Function parameters now use @ as a prefix.

 

-- Old

FUNCTION combine(p NVARCHAR, q NVARCHAR) NVARCHAR AS

  p & ': ' & q

END;

SELECT combine(name, type) FROM mfd_root;

 

-- New

FUNCTION combine(@p NVARCHAR, @q NVARCHAR) NVARCHAR AS

 @p & ': ' & @q

END;

SELECT combine(name, type) FROM mfd_root;

 

EXECUTE requires either writing query text within [[ ... ]] brackets, or using the name of an existing query.  

 

Previous forms of syntax that allowed using EXECUTE without leaving the scope of the current query have been removed and can no longer be used.

 

-- Old

EXECUTE CALL ValueSequence(1, 10, 1);

 

-- New (uses replacement feature)

TABLE CALL ValueSequence(1, 10, 1);

 

Expressions for computed fields and constraints use [[ ... ]].

 

-- Old

CREATE TABLE temp (

  mfd_id INT64, INDEX mfd_id_x BTREE (mfd_id),

  geom GEOM,

  geomarea FLOAT64 AS GeomArea(geom, 0)

);

INSERT INTO temp (geom)

VALUES (GeomMakeRect(VectorMakeX4(0, 0, 10, 10)));

 

-- New

CREATE TABLE temp (

  mfd_id INT64, INDEX mfd_id_x BTREE (mfd_id),

  geom GEOM,

  geomarea FLOAT64 AS [[ GeomArea(geom, 0) ]]

);

INSERT INTO temp (geom)

VALUES (GeomMakeRect(VectorMakeX4(0, 0, 10, 10)));

 

For more details, see cutting edge threads in the forum for builds leading up to 9.0.168, for example, the thread for build 9.0.167.6.  The query builder lists all of the above changes plus new statements (VALUE, TABLE, SCRIPT) plus new functions.

 

 

9.0.167.9

 

9.0.167.8

 

9.0.167.7

 

9.0.167.6

 

9.0.167.5

 

9.0.167.4

 

9.0.167.3

 

9.0.167.2

'

9.0.167.1

 

Manifold System 9.0.167

 

9.0.166.6

 

9.0.166.5

 

9.0.166.4

 

9.0.166.3

 

9.0.166.2

 

9.0.166.1

 

Manifold System 9.0.166

 

9.0.165.6

 

9.0.165.5

 

9.0.165.4

 

9.0.165.3

 

9.0.165.2

 

9.0.165.1

 

Manifold System 9.0.165

 

9.0.164.9

 

9.0.164.8

 

9.0.164.7

 

9.0.164.6

 

 

9.0.164.5

 

9.0.164.4

 

9.0.164.3

 

9.0.164.2

 

9.0.164.1