Hide a column from ArcGIS by making it INVISBLE (Oracle)

317
2
05-31-2022 07:00 PM
Bud
by
Notable Contributor

Is anyone using INVISIBLE Oracle columns to hide a specific column from ArcGIS?

19.2.12.1 Understand Invisible Columns

You might use invisible columns if you want to make changes to a table without disrupting applications that use the table. After you add an invisible column to a table, queries and other operations that must access the invisible column must refer to the column explicitly by name.

More info: Oracle Base: Invisible Columns

For example, I'd hoped to hide an additional geometry column from ArcGIS, since I know ArcGIS only supports a single geometry column per FC. Unfortunately, Oracle doesn't support invisible SDO_GEOMETRY columns, so I hit a wall there. 

But that got me thinking, are there any other use cases for invisible columns in feature classes? Maybe there are certain columns or column types that you want to hide from ArcGIS? and/or hide from users?

(I know the knee-jerk reaction is to say, "It's not supported. Be afraid, be very afraid." But, the whole point of invisible columns is that applications have no way to see the column. If ArcGIS has no way of knowing about an invisible column, then it ought to be safe. At least, safe enough to consider & test.)

Cheers.

Tags (2)
0 Kudos
2 Replies
JohannesLindner
MVP Frequent Contributor

Hmm, interesting. I don't use Oracle, so I haven't used invisible columns. So take these thoughts with a grain of salt:

 

It seems this keyword was implemented mainly to keep backwards compatibility of your tables and applications that consume those tables by using SELECT * FROM Table. As I understand it, it only hides the column from those queries, you can still get the values with SELECT InvisibleColumn FROM Table.

So this is a very bad way to store sensitive information (passwords, private data, department-internal comments, etc.).

 

I have no idea how ArcGIS consumes the table. INVISIBLE could only be used to hide a column in ArcGIS if it uses SELECT *. If you want to hide fields from a layer inside an ArcGIS Project, you are better off using the Visible attribute in the Fields view.

JohannesLindner_0-1654069437831.png

 

If this does hide the column from ArcGIS (again, no clue), I could see use cases where you need to calculate some values for use in other appilcations (say, an asset management system) and you need those values to be uneditable in ArcGIS. Then again, you could do this with Attribute Rules...

 

It really doesn't sound like "Let's use this to hide data", but "We have an app that uses SELECT * and adding a new column would make that app not work anymore. It's easier to use this keyword than to fix the app."


Have a great day!
Johannes
Bud
by
Notable Contributor

Yeah. Like you, I wasn't thinking of INVISIBLE as a way to hide a column from users for security purposes. I mostly just thought it could be useful in niche situations for hiding a field from ArcGIS. For example, hide a column that would cause problems in ArcGIS, such as an additional geometry column. 

Yes, OOB ArcGIS Pro functionality is of course preferred. That is, if the organization is using Pro (ours isn't yet). I'll strike out the "and/or hide from users" part in the original post to make the question cleaner.

0 Kudos