steampipe-postgres-fdw icon indicating copy to clipboard operation
steampipe-postgres-fdw copied to clipboard

Query is not working when trying to join with a concatenated value

Open bigdatasourav opened this issue 2 years ago • 1 comments

join 2 tables (Here artifact_name is optional key quals in trivy_scan_artifact table)

select artifact_name, artifact_type, metadata from trivy_scan_artifact join aws_ecr_repository on artifact_name = repository_uri

After running the above query, I can get the repository_uri in the table trivy_scan_artifact via the optional column. Expected.

With different table (Here artifact_name is optional key quals in trivy_scan_artifact table)

select artifact_name, artifact_type, metadata from trivy_scan_artifact join aws_ecr_image on artifact_name = concat(account_id,'.dkr.ecr.',region,'.amazonaws.com/',repository_name,'@',image_digest)

Here I should get the concatenated value in the table trivy_scan_artifact via the optional column artifact_name, but I am not getting that.

With CT (Here artifact_name is optional key quals in trivy_scan_artifact table)

with ecr_images as ( select concat(repository_uri,'@',image_digest) as image_uri from aws_ecr_repository as r, aws_ecr_image as i where i.repository_name = r.repository_name )select artifact_name, artifact_type, metadata from trivy_scan_artifact join ecr_images on artifact_name = image_uri

Here also, I am not getting the value in the table trivy_scan_artifact via the optional column artifact_name.

query plan for the above queries-

> explain select 
  artifact_name, 
  artifact_type, 
  metadata
from 
  trivy_scan_artifact
  join aws_ecr_repository on artifact_name = repository_uri
+-------------------------------------------------------------------------------------------------+
| QUERY PLAN                                                                                      |
+-------------------------------------------------------------------------------------------------+
| Nested Loop  (cost=0.00..10060002000000.00 rows=5000000000 width=96)                            |
|   ->  Foreign Scan on aws_ecr_repository  (cost=0.00..10000000000000.00 rows=1000000 width=100) |
|   ->  Foreign Scan on trivy_scan_artifact  (cost=0.00..60000.00 rows=200 width=300)             |
|         Filter: (artifact_name = aws_ecr_repository.repository_uri)                             |
+-------------------------------------------------------------------------------------------------+


> explain select 
  artifact_name, 
  artifact_type, 
  metadata
from 
  trivy_scan_artifact
  join aws_ecr_image on artifact_name = concat(account_id,'.dkr.ecr.',region,'.amazonaws.com/',repository_name,'@',image_digest)
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| QUERY PLAN                                                                                                                                                                                                          
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Nested Loop  (cost=0.00..30040001000000.00 rows=5000000000 width=96)                                                                                                                                                
|   ->  Foreign Scan on trivy_scan_artifact  (cost=0.00..30000000000000.00 rows=1000000 width=300)                                                                                                                    
|   ->  Foreign Scan on aws_ecr_image  (cost=0.00..40000.00 rows=100 width=400)                                                                                                                                       
|         Filter: ((trivy_scan_artifact.artifact_name = concat(account_id, '.dkr.ecr.', region, '.amazonaws.com/', repository_name, '@', image_digest)) AND (trivy_scan_artifact.artifact_name = concat(account_id, '.
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


> explain with ecr_images as (
  select 
    concat(repository_uri,'@',image_digest) as image_uri
  from 
    aws_ecr_repository as r,
    aws_ecr_image as i
  where
    i.repository_name = r.repository_name 
)select 
  artifact_name, 
  artifact_type, 
  metadata
from 
  trivy_scan_artifact
  join ecr_images on artifact_name = image_uri
+---------------------------------------------------------------------------------------------------+
| QUERY PLAN                                                                                        |
+---------------------------------------------------------------------------------------------------+
| Nested Loop  (cost=0.00..33040400000000.00 rows=25000000000000 width=96)                          |
|   ->  Foreign Scan on aws_ecr_repository r  (cost=0.00..20000000000000.00 rows=1000000 width=200) |
|   ->  Nested Loop  (cost=0.00..12040400.00 rows=100000000 width=160)                              |
|         ->  Foreign Scan on aws_ecr_image i  (cost=0.00..40000.00 rows=200 width=200)             |
|               Filter: (repository_name = r.repository_name)                                       |
|         ->  Foreign Scan on trivy_scan_artifact  (cost=0.00..60000.00 rows=200 width=300)         |
|               Filter: (artifact_name = concat(r.repository_uri, '@', i.image_digest))             |
+---------------------------------------------------------------------------------------------------+

FDW log label info -

# qual passed - 

2023-06-15 08:16:00.779 UTC [INFO]  hub: goFdwBeginForeignScan, connection 'trivy', table 'trivy_scan_artifact', explain: false
2023-06-15 08:16:00.780 UTC [INFO]  hub: connection 'trivy', table 'trivy_scan_artifact', quals 
----------------------------------------------------------------
Column: artifact_name, Operator: '=', Value: '?'
----------------------------------------------------------------
2023-06-15 08:16:00.780 UTC [INFO]  hub: StartScan for table: aws_ecr_repository, cache enabled: false, iterator 0x140008b8300, 0 quals (1686816960226)
2023-06-15 08:16:05.285 UTC [INFO]  hub: goFdwBeginForeignScan, connection 'trivy', table 'trivy_scan_artifact', explain: false
2023-06-15 08:16:05.286 UTC [INFO]  hub: connection 'trivy', table 'trivy_scan_artifact', quals 
----------------------------------------------------------------
Column: artifact_name, Operator: '=', Value: '097350876455.dkr.ecr.ap-south-1.amazonaws.com/hello'
----------------------------------------------------------------
2023-06-15 08:16:05.286 UTC [INFO]  hub: StartScan for table: trivy_scan_artifact, cache enabled: false, iterator 0x140008b83c0, 1 quals (1686816965866)
2023-06-15 08:16:10.048 UTC [INFO]  hub: goFdwBeginForeignScan, connection 'trivy', table 'trivy_scan_artifact', explain: false
2023-06-15 08:16:10.050 UTC [INFO]  hub: connection 'trivy', table 'trivy_scan_artifact', quals 
----------------------------------------------------------------
Column: artifact_name, Operator: '=', Value: '097350876455.dkr.ecr.ap-south-1.amazonaws.com/development/turbot'
----------------------------------------------------------------
2023-06-15 08:16:10.050 UTC [INFO]  hub: StartScan for table: trivy_scan_artifact, cache enabled: false, iterator 0x14000136480, 1 quals (1686816970545)
2023-06-15 08:16:10.369 UTC [INFO]  hub: goFdwBeginForeignScan, connection 'trivy', table 'trivy_scan_artifact', explain: false
2023-06-15 08:16:10.370 UTC [INFO]  hub: connection 'trivy', table 'trivy_scan_artifact', quals 
----------------------------------------------------------------
Column: artifact_name, Operator: '=', Value: '097350876455.dkr.ecr.ap-south-1.amazonaws.com/password-rotation'
----------------------------------------------------------------
2023-06-15 08:16:10.371 UTC [INFO]  hub: StartScan for table: trivy_scan_artifact, cache enabled: false, iterator 0x140008b8780, 1 quals (1686816970745)
2023-06-15 08:16:10.645 UTC [57504] LOG:  duration: 9865.055 ms  execute stmtcache_9: select 
	  artifact_name, 
	  artifact_type, 
	  metadata
	from 
	  trivy_scan_artifact
	  join aws_ecr_repository on artifact_name = repository_uri
	  
# no qual passed 
2023-06-15 08:17:40.897 UTC [INFO]  hub: could not convert OpExpr to canonical form - NOT adding qual for OpExpr
2023-06-15 08:17:40.897 UTC [WARN]  hub: RestrictionsToQuals: failed to convert 2 restrictions to quals
2023-06-15 08:17:40.898 UTC [INFO]  hub: --------
2023-06-15 08:17:40.898 UTC [INFO]  hub: no quals
2023-06-15 08:17:40.898 UTC [INFO]  hub: --------
2023-06-15 08:17:40.898 UTC [INFO]  hub: StartScan for table: trivy_scan_artifact, cache enabled: false, iterator 0x1400067a840, 0 quals (1686817060882)
2023-06-15 08:17:45.989 UTC [INFO]  hub: goFdwBeginForeignScan, connection 'aws', table 'aws_ecr_image', explain: false
2023-06-15 08:17:45.989 UTC [INFO]  hub: could not convert OpExpr to canonical form - NOT adding qual for OpExpr
2023-06-15 08:17:45.989 UTC [INFO]  hub: could not convert OpExpr to canonical form - NOT adding qual for OpExpr
2023-06-15 08:17:45.989 UTC [WARN]  hub: RestrictionsToQuals: failed to convert 2 restrictions to quals
2023-06-15 08:17:45.990 UTC [INFO]  hub: --------
2023-06-15 08:17:45.990 UTC [INFO]  hub: no quals
2023-06-15 08:17:45.990 UTC [INFO]  hub: --------
2023-06-15 08:17:45.990 UTC [INFO]  hub: StartScan for table: aws_ecr_image, cache enabled: false, iterator 0x14001335980, 0 quals (1686817065434)
2023-06-15 08:17:47.004 UTC [57504] LOG:  duration: 6105.481 ms  execute stmtcache_10: select 
	  artifact_name, 
	  artifact_type, 
	  metadata
	from 
	  trivy_scan_artifact
	  join aws_ecr_image on artifact_name = concat(account_id,'.dkr.ecr.',region,'.amazonaws.com/',repository_name,'@',image_digest)
# no qual passed

2023-06-15 08:18:51.287 UTC [INFO]  hub: no quals
2023-06-15 08:18:51.287 UTC [INFO]  hub: --------
2023-06-15 08:18:51.287 UTC [INFO]  hub: StartScan for table: trivy_scan_artifact, cache enabled: false, iterator 0x140000f7380, 0 quals (1686817131196)
2023-06-15 08:18:51.317 UTC [INFO]  hub: goFdwBeginForeignScan, connection 'trivy', table 'trivy_scan_artifact', explain: false
2023-06-15 08:18:51.317 UTC [INFO]  hub: failed to convert qual value; QualDefsToQuals: unsupported qual value (type T_FuncExpr), skipping
2023-06-15 08:18:51.317 UTC [WARN]  hub: RestrictionsToQuals: failed to convert 1 restriction to quals
2023-06-15 08:18:51.318 UTC [INFO]  hub: --------
2023-06-15 08:18:51.318 UTC [INFO]  hub: no quals
2023-06-15 08:18:51.318 UTC [INFO]  hub: --------
2023-06-15 08:18:51.318 UTC [INFO]  hub: StartScan for table: trivy_scan_artifact, cache enabled: false, iterator 0x14000be3740, 0 quals (1686817131668)
2023-06-15 08:18:51.348 UTC [INFO]  hub: goFdwBeginForeignScan, connection 'trivy', table 'trivy_scan_artifact', explain: false
2023-06-15 08:18:51.348 UTC [INFO]  hub: failed to convert qual value; QualDefsToQuals: unsupported qual value (type T_FuncExpr), skipping
2023-06-15 08:18:51.349 UTC [WARN]  hub: RestrictionsToQuals: failed to convert 1 restriction to quals
2023-06-15 08:18:51.349 UTC [INFO]  hub: --------
2023-06-15 08:18:51.349 UTC [INFO]  hub: no quals
2023-06-15 08:18:51.349 UTC [INFO]  hub: --------
2023-06-15 08:18:51.349 UTC [INFO]  hub: StartScan for table: trivy_scan_artifact, cache enabled: false, iterator 0x14001441440, 0 quals (1686817131662)
2023-06-15 08:18:51.381 UTC [INFO]  hub: goFdwBeginForeignScan, connection 'trivy', table 'trivy_scan_artifact', explain: false
2023-06-15 08:18:51.381 UTC [INFO]  hub: failed to convert qual value; QualDefsToQuals: unsupported qual value (type T_FuncExpr), skipping
2023-06-15 08:18:51.381 UTC [WARN]  hub: RestrictionsToQuals: failed to convert 1 restriction to quals
2023-06-15 08:18:51.381 UTC [INFO]  hub: --------
2023-06-15 08:18:51.381 UTC [INFO]  hub: no quals
2023-06-15 08:18:51.381 UTC [INFO]  hub: --------
2023-06-15 08:18:51.381 UTC [INFO]  hub: StartScan for table: trivy_scan_artifact, cache enabled: false, iterator 0x14001b229c0, 0 quals (1686817131912)
2023-06-15 08:18:51.417 UTC [57504] LOG:  duration: 12994.929 ms  execute stmtcache_11: 
with ecr_images as (
	  select 
	    concat(repository_uri,'@',image_digest) as image_uri
	  from 
	    aws_ecr_repository as r,
	    aws_ecr_image as i
	  where
	    i.repository_name = r.repository_name 
	)select 
	  artifact_name, 
	  artifact_type, 
	  metadata
	from 
	  trivy_scan_artifact
	  join ecr_images on artifact_name = image_uri

bigdatasourav avatar Jun 15 '23 09:06 bigdatasourav