≡ Menu

Hidden Results Grid on MySQL Workbench and macOS High Sierra

MySQL Workbench with missing Results Grid

UPDATE: Oracle has released version 6.3.10!

I recently updated my MacBook Pro to macOS High Sierra. Like every other OS update, this one was fairly uneventful – with the exception of having to do a hard reboot to get the Mac to come back up after the upgrade. That was definitely a nail-biter!

Once the Mac rebooted, everything appeared to be as it should be. All was fine and dandy – or so I thought.

Though I have not had any other major issues, it would appear that High Sierra has broken the current version of MySQL Workbench (6.3.9). When trying to run a query, the Results Grid never appears. A status declaring that the query completed is shown, and the Action Output window will even tell how many rows were returned. However, the rows themselves cannot be seen.

MySQL Workbench with missing Results Grid

It took quite a bit of searching to find this – apparently not too many folks have encountered this problem as yet – but I did find confirmation on Stack Overflow that this is now a known issue, and that the next release should have it fixed.

It is interesting that Oracle has closed the official bug report, despite the fact that no patch or new version is available. A user has devised a workaround that involves installing his build of MySQL Workbench, but that is not ideal in many production environments, for obvious security concerns. The only other solution given was to downgrade to an older version of MySQL Workbench – 6.1.7.

An excerpt of the comments show several users’ reactions to the bug report having been closed with no solution offered:


[20 Oct 10:32] Bob Davenport
Changing back to open

[20 Oct 10:36] Bob Davenport
I’ve changed back to open as its not fixed till the release is available.
I never clsed it perhaps the pperson who closed it could come forward and explain how a bug rendering a product 99% unusable can be marked as closed?

[20 Oct 12:12] Mike Lischke
This bug entry was closed as part of our internal processes. Please don’t touch the status of a bug anymore, once it closed.

[20 Oct 15:25] Bob Davenport
Mike Lischke

Why is a bug closed when their is no fix ?
Or can you advides the date the fix was released?

Very disappointing that the attitude of yours is so poor.

Maybe next time i wont bother to post a bug report or how to fix.
Also mustn’t forget Mike Lischke who also wasted time with the “Works on My PC” attitude in the firs place.

A discredit to the community.

[20 Oct 15:34] Michael Brogley
I agree with Bob. Based on my experience running just such an effort, a critical status bug should only be changed to “Status: Closed” if a fix has been tested and released. Otherwise any Oracle manager that’s tracking open bugs will be misled on the product’s status. Playing bug status games like this basically cuts the nerves between the user community and management, leading to misallocation of resource problems downstream, and managers and executives getting blindsided by angry users.

Is there no “Pending” status in this system?

[20 Oct 15:37] Darren Coleman
Why would a bug be closed if the problem is not fixed?

I’ve never heard of a bug tracking system where people close bugs without actually resolving the problem??

Is it just inconvenient for Oracle to see this (very simple) bug on their TODO list? It’s ridiculous enough as it is that a community member has to go out of their way to patch a bug that existed and was reported more than once while macOS High Sierra was in BETA.. but to close the bug without resolution is just egregious.

[20 Oct 15:57] Mike Lischke
The typical workflow for a bug report in this bug database is like this:

  • The bug gets reported.
  • A support person checks the validity and clarifies things when necessary.
  • The bug is transfered to our internal bug system where the developers are notified.
  • The developers fix the bug.
  • QA tests the fix.
  • The documentation team takes a note for the change log and sets the bug to closed (both internally and externally).
  • Once all bugs for a release are closed the new version is released.

Hopefully this makes the process more clear.

[21 Oct 15:12] Bob Davenport
Mike Lischke/ Oracle Can you please advise:

How many bugs are currently open and closed and a release date please?

The bug renders the application unable to display any query results on high sierra. This isn’t an insignificant or cosmetic issue, it’s a show stopper.

If some other bugs are still unfixed could you advise a cut-off date when a release will be provided?

Is this also affecting Oracle Enterprise customers?
I think it is.

For what it’s worth…

I was performing some beta testing for apple and found the fault so decided to report to Oracle.

I provided Oracle with a suggested fix which is relatively easy to implement and is verified as working.

The fix would be effortless & without risk to deploy as a ‘patch’ if in an Agile development environment was utilised.

I would have thought Oracle would be up to date on this technology by now.

[22 Oct 22:19] Aaron Langley
It’s becoming apparent that Oracle’s senior management intends to starve MySQL of oxygen in the hope it’s user base with move on to other alternatives.

Obviously not an ideal situation. Hopefully, Oracle will release a patch soon!

Routers with DD-WRT and VPN – Where to Begin?

DD-WRT control panel, Services --> VPN

I decided to set up a VPN for use at home. After doing a little research, I found that a common setup is to get a router that is compatible with DD-WRT, a Linux-based firmware for wireless access points and routers, and then to connect to one of many VPN services.

DD-WRT VPN diagram

After signing up for a year with VPN Unlimited, I plugged in an old Linksys WRT54G (v5) router I hadn’t used in a while, and prepared to upgrade the firmware to the newest version of DD-WRT that would work with it. To find out what firmware I needed, I went to the DD-WRT Router Database and typed in “wrt54g” into the search box. For my version 5 router, the newest version of the firmware was “v24 preSP2 [Beta] Build 14896”, which was dated 9-7-2017; fairly new! I could choose from either the “Micro Generic” or the “Micro OLSRD Generic” firmware. Since I’m not setting up a mesh network, I opted for the plain vanilla Micro firmware. The upgrade went off without a hitch! I then found the pages which described how to connect to the VPN using either PPTP or OpenVPN.

DD-WRT control panel, Services --> VPN

And yet, here is where the trouble started.

I could not find the “Services / VPN” tab in the control panel of DD-WRT. It soon became apparent that I had not done enough research on the VPN functionality of DD-WRT. Some routers in this series (namely versions 1.0 through 4.0) had 16 MB RAM and 4 MB flash memory. These versions supported many different versions (standard, micro, micro_olsrd, voip, openvpn, etc.) of the DD-WRT firmware. My version 5 router, having only 8 MB RAM and 2 MB flash memory, can only hold the micro versions – which lack VPN functionality!

Since I won’t be able to use this router for VPN, I will have to buy a new one. Fortunately, I found a list containing some of the better current routers for this purpose at FlashRouters. Though you can buy the router pre-configured with DD-WRT there, I will likely buy it at Amazon for less and load the firmware myself. If you are concerned about bricking your router when changing the firmware, buying it pre-configured may be your best option.

Open-Source Alternative to Adobe ColdFusion

Lucee open-source CFML server

Six years ago, I had reason to move several CFML applications from a Macromedia ColdFusion MX 6 server to what was the only major open-source alternative – Railo.

Several years later, Railo was no longer being updated, and its website was shut down. The last post on the Railo site in mid-2015 mentioned a new (and perhaps unauthorized) fork of Railo 4.2, called Lucee. The Railo website then disappeared in mid-2016.

Due to the apparent demise of Railo and the continued need to support my CFML applications, I moved all of them back to Adobe ColdFusion 11.

Lucee open-source CFML server

Unbeknownst to me, Lucee was already gaining more support and has now taken the place as the leading open-source CFML application server.

While I don’t have any concrete plans at the moment for migrating my apps from CF 11 to Lucee, it’s good to know that I have options. Also, anyone considering moving from Railo to Lucee may find this article helpful, as this early adopter has already found some of the problems when migrating from Railo to Lucee.

Deleting Duplicate Rows in a SQL Server Table Using a CTE

CTE example

Finding duplicate rows in a table is quite simple. Deleting only the duplicates – as opposed to deleting all rows that have duplicates – is a bit more complicated.

I have a table variable called “@Readings” with the following schema:

DECLARE @Readings TABLE
(
	TagName VARCHAR(100),
	ScanTime DATETIME,
	TagValue NUMERIC(10,3)
)

First, I load the table with data from another database on a linked server called “OtherDB”:

INSERT INTO @Readings(TagName,ScanTime,TagValue)
SELECT DISTINCT tag,[time],value
	FROM 
	OPENQUERY(OtherDB,'select tag, time, value from archive.comp where (tag LIKE ''%test%'') AND time = DATE(''*'') ')

Then, I load that same data with some updates, both to the ScanTime column, and then to the TagValue column – always holding the TagName column constant.

DECLARE @DateTimeStamp DATETIME
SET @DateTimeStamp = GETDATE()

INSERT INTO @Readings(TagName,ScanTime,TagValue)
SELECT TagName,@DateTimeStamp,TagValue FROM @Readings

INSERT INTO @Readings(TagName,ScanTime,TagValue)
SELECT TagName,ScanTime,12345 FROM @Readings

To see what rows duplicate the TagName column alone, this query will suffice:

SELECT TagName FROM @PI_Readings GROUP BY TagName HAVING ( COUNT(*) > 1 )

By adding column names, you can look where the duplication is the TagName and the ScanTime:

SELECT TagName, ScanTime FROM @PI_Readings GROUP BY TagName, ScanTime HAVING ( COUNT(*) > 1 )

(If I were to add also the TagValue column, I would get zero rows returned, since there are currently no duplicates where all three columns are identical.)

So, what if you wanted to delete only the duplicates where TagName and ScanTime matched, irrespective of the TagValue?

The easiest way I have found is to use what is called a Common Table Expression, or CTE.

To use a CTE to delete these duplicates let’s first construct it to only show the duplicates:

WITH CTE AS
(
	SELECT TagName, ScanTime, TagValue,
	RN = ROW_NUMBER()OVER(PARTITION BY TagName, ScanTime ORDER BY TagName, ScanTime)
	FROM @Readings
)
SELECT * FROM CTE WHERE RN > 1

To now delete the offending rows, change the last line from a SELECT statement to a DELETE statement:

CTE example

When creating the CTE statement, make sure there is a semicolon terminating the previous statement. This is not usually required in SQL Server, but it is in this case.

Another good example of this is on Stack Overflow.

While I do like SQL Fiddle, it seems that the DELETE function does not work on CTEs there, though SELECT statements do.