GithubHelp home page GithubHelp logo

antonshuvaev / intellij-dynamodb Goto Github PK

View Code? Open in Web Editor NEW
15.0 15.0 0.0 1.23 MB

DynamoDB plugin for Intellij IDEA and other JetBrains IDEs

Home Page: https://plugins.jetbrains.com/plugin/18896-dynamodb

database database-gui dynamodb dynamodb-gui dynamodb-gui-client intellij intellij-plugin nosql

intellij-dynamodb's People

Contributors

antonshuvaev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

intellij-dynamodb's Issues

reduce size of csv headers

Screenshot from 2023-03-07 15-41-12

The size of the headers can take up a lot of space. It would be nice to provide an option to collapse them to a json path dot notation as well as providing a dot dot dot ... at the end so when you hover over a column header you could see the full path.

only shows the first 50 tables

I have a project with a lot of tables, but the browser view only shows the first chunk of them (i think its 50), i can manually type queries and use the other tables, but only if i know the names

Batch Write Items to another table directly from UI

Is your feature request related to a problem?

I can copy items only through export to files

Describe the solution you'd like

Batch Write Item need's Copy table to... options
image

image

Additional context

I have production DDB and it have some items,
For developing even I have local DDB and often need to copy some items to local table.

[Feature] Move bookmarks to dynamodb window

If it would be possible to have saved queries in the same window as dynamodb tables that might improve user experience for people who are not used to jetbrain's bookmark functionality.

page size selecter bug

assuming this is a bug in the page size computation logic... it doubles the next max page size every time you select it but obviously does not fetch this amount of records. there is no limit.
image

Common errors

Hello.
Виджет крутой, купил, пользуюсь, благодарствую!

Периодически бывают ошибки, буду кидать сюда по мере появления.

Первое, что хотелось бы отметить это как я понял отсутствие автоматической отправки багов.
image


04/08/2023
java.lang.NullPointerException:  must not be null
	at org.dynamodb4idea.bY.a(SourceFile:82)
	at org.dynamodb4idea.bY.e(SourceFile:57)
	at org.dynamodb4idea.bY.a(SourceFile:14)
	at org.dynamodb4idea.bY.a(SourceFile:10)
	at org.dynamodb4idea.bR.b(SourceFile:291)
	at org.dynamodb4idea.bR.<init>(SourceFile:143)
	at org.dynamodb4idea.bs.actionPerformed(SourceFile:18)
	at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:228)
	at com.intellij.openapi.actionSystem.impl.ActionButton.lambda$performAction$2(ActionButton.java:207)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:356)
	at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:207)
	at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:518)
	at java.desktop/java.awt.Component.processEvent(Component.java:6421)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2804)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:790)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:763)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:761)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:760)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:667)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:615)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:570)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:829)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
java.lang.NullPointerException:  must not be null
	at org.dynamodb4idea.bY.a(SourceFile:82)
	at org.dynamodb4idea.bY.e(SourceFile:57)
	at org.dynamodb4idea.bY.a(SourceFile:14)
	at org.dynamodb4idea.bY.a(SourceFile:10)
	at org.dynamodb4idea.bR.b(SourceFile:291)
	at org.dynamodb4idea.bR.b(SourceFile:119)
	at java.desktop/javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1257)
	at java.desktop/javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1318)
	at java.desktop/javax.swing.JComboBox.contentsChanged(JComboBox.java:1365)
	at java.desktop/javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:127)
	at java.desktop/javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:94)
	at java.desktop/javax.swing.JComboBox.setSelectedItem(JComboBox.java:609)
	at java.desktop/javax.swing.JComboBox.setSelectedIndex(JComboBox.java:654)
	at java.desktop/javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:946)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:298)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6656)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3385)
	at java.desktop/javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:551)
	at java.desktop/java.awt.Component.processEvent(Component.java:6421)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2804)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:790)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:763)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:761)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:760)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:667)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:615)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:570)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:829)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1080)
	at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:741)
	at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:466)
	at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1675)
	at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1633)
	at org.dynamodb4idea.bs.actionPerformed(SourceFile:23)
	at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:228)
	at com.intellij.openapi.actionSystem.impl.ActionButton.lambda$performAction$2(ActionButton.java:207)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:356)
	at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:207)
	at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:518)
	at java.desktop/java.awt.Component.processEvent(Component.java:6421)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2804)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:790)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:763)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:761)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:760)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:667)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:615)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:570)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:829)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
java.lang.IllegalStateException: Do not change documents during undo as it will break undo sequence.
	at com.intellij.openapi.command.impl.DocumentUndoProvider.handleBeforeDocumentChange(DocumentUndoProvider.java:62)
	at com.intellij.openapi.command.impl.DocumentUndoProvider.beforeDocumentChange(DocumentUndoProvider.java:50)
	at com.intellij.openapi.editor.impl.event.EditorEventMulticasterImpl$1.lambda$beforeDocumentChange$0(EditorEventMulticasterImpl.java:41)
	at com.intellij.openapi.extensions.impl.ExtensionProcessingHelper.forEachExtensionSafe(ExtensionProcessingHelper.kt:32)
	at com.intellij.openapi.extensions.ExtensionPointName.forEachExtensionSafe(ExtensionPointName.kt:49)
	at com.intellij.openapi.editor.impl.event.EditorEventMulticasterImpl$1.beforeDocumentChange(EditorEventMulticasterImpl.java:41)
	at com.intellij.openapi.editor.impl.DocumentImpl.lambda$beforeChangedUpdate$1(DocumentImpl.java:881)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeNonCancelableSection$3(CoreProgressManager.java:222)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$computeInNonCancelableSection$4(CoreProgressManager.java:230)
	at com.intellij.openapi.progress.Cancellation.computeInNonCancelableSection(Cancellation.java:99)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeInNonCancelableSection(CoreProgressManager.java:230)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:221)
	at com.intellij.openapi.editor.impl.DocumentImpl.beforeChangedUpdate(DocumentImpl.java:878)
	at com.intellij.openapi.editor.impl.DocumentImpl.updateText(DocumentImpl.java:818)
	at com.intellij.openapi.editor.impl.DocumentImpl.replaceString(DocumentImpl.java:664)
	at com.intellij.openapi.editor.impl.DocumentImpl.lambda$setText$4(DocumentImpl.java:1091)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:210)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:174)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:164)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:150)
	at com.intellij.openapi.editor.impl.DocumentImpl.setText(DocumentImpl.java:1096)
	at org.dynamodb4idea.ah$a.a(SourceFile:84)
	at org.dynamodb4idea.ah$a.invoke(SourceFile:80)
	at com.intellij.openapi.application.ActionsKt.runWriteAction$lambda$0(actions.kt:9)
	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$runWriteAction$8(ApplicationImpl.java:965)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteActionWithClass(ApplicationImpl.java:944)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:965)
	at com.intellij.openapi.application.ActionsKt.runWriteAction(actions.kt:9)
	at org.dynamodb4idea.ah.a(SourceFile:80)
	at org.dynamodb4idea.ad.a(SourceFile:237)
	at org.dynamodb4idea.ad.d(SourceFile:215)
	at org.dynamodb4idea.ad.a(SourceFile:83)
	at org.dynamodb4idea.ad$1.caretPositionChanged(SourceFile:118)
	at jdk.internal.reflect.GeneratedMethodAccessor59.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at com.intellij.util.EventDispatcher.dispatchVoidMethod(EventDispatcher.java:120)
	at com.intellij.util.EventDispatcher.lambda$createMulticaster$1(EventDispatcher.java:85)
	at jdk.proxy1/jdk.proxy1.$Proxy108.caretPositionChanged(Unknown Source)
	at com.intellij.openapi.editor.impl.CaretModelImpl.fireCaretPositionChanged(CaretModelImpl.java:543)
	at com.intellij.openapi.editor.impl.CaretImpl.doMoveToLogicalPosition(CaretImpl.java:461)
	at com.intellij.openapi.editor.impl.CaretImpl.moveToLogicalPosition(CaretImpl.java:606)
	at com.intellij.openapi.editor.impl.CaretImpl.lambda$moveToLogicalPosition$2(CaretImpl.java:318)
	at com.intellij.openapi.editor.impl.CaretModelImpl.doWithCaretMerging(CaretModelImpl.java:414)
	at com.intellij.openapi.editor.impl.CaretImpl.moveToLogicalPosition(CaretImpl.java:318)
	at com.intellij.openapi.editor.impl.CaretModelImpl.lambda$setCaretsAndSelections$4(CaretModelImpl.java:460)
	at com.intellij.openapi.editor.impl.CaretModelImpl.doWithCaretMerging(CaretModelImpl.java:419)
	at com.intellij.openapi.editor.impl.CaretModelImpl.setCaretsAndSelections(CaretModelImpl.java:447)
	at com.intellij.openapi.fileEditor.impl.text.TextEditorProvider.setStateImpl(TextEditorProvider.java:259)
	at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorProvider.setStateImpl(PsiAwareTextEditorProvider.java:97)
	at com.intellij.openapi.fileEditor.impl.text.AsyncEditorLoader.setEditorState(AsyncEditorLoader.kt:204)
	at com.intellij.openapi.fileEditor.impl.text.TextEditorImpl.setState(TextEditorImpl.java:155)
	at com.intellij.openapi.fileEditor.impl.text.TextEditorImpl.setState(TextEditorImpl.java:149)
	at com.intellij.openapi.command.impl.UndoRedo.restore(UndoRedo.java:282)
	at com.intellij.openapi.command.impl.UndoRedo.execute(UndoRedo.java:111)
	at com.intellij.openapi.command.impl.CommandMerger.undoOrRedo(CommandMerger.java:300)
	at com.intellij.openapi.command.impl.UndoManagerImpl.lambda$undoOrRedo$1(UndoManagerImpl.java:430)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:219)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:174)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:164)
	at com.intellij.openapi.command.impl.UndoManagerImpl.undoOrRedo(UndoManagerImpl.java:438)
	at com.intellij.openapi.command.impl.UndoManagerImpl.undo(UndoManagerImpl.java:409)
	at com.intellij.ide.actions.UndoAction.perform(UndoAction.java:31)
	at com.intellij.ide.actions.UndoRedoAction.actionPerformed(UndoRedoAction.java:52)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.java:333)
	at com.intellij.openapi.keymap.impl.ActionProcessor.performAction(ActionProcessor.java:47)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$1.performAction(IdeKeyEventDispatcher.java:585)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.lambda$doPerformActionInner$9(IdeKeyEventDispatcher.java:707)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
	at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.lambda$doPerformActionInner$10(IdeKeyEventDispatcher.java:707)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:356)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.doPerformActionInner(IdeKeyEventDispatcher.java:704)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:648)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:596)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processActionOrWaitSecondStroke(IdeKeyEventDispatcher.java:480)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.java:469)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:225)
	at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.kt:599)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:569)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:829)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

com.intellij.util.IncorrectOperationException: Sorry but parent: org.dynamodb4idea.ad[,0,0,570x928,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] (class org.dynamodb4idea.ad) has already been disposed (see the cause for stacktrace) so the child: org.dynamodb4idea.cQ[,0,0,0x0,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=com.intellij.ui.border.CustomLineBorder@3d1584b8,flags=9,maximumSize=,minimumSize=,preferredSize=] (class org.dynamodb4idea.cQ) will never be disposed
	at com.intellij.openapi.util.ObjectTree.register(ObjectTree.java:43)
	at com.intellij.openapi.util.Disposer.register(Disposer.java:164)
	at org.dynamodb4idea.cQ.<init>(SourceFile:89)
	at org.dynamodb4idea.cS.b(SourceFile:64)
	at org.dynamodb4idea.cS.b(SourceFile:88)
	at org.dynamodb4idea.cS.a(SourceFile:84)
	at org.dynamodb4idea.ad$h.a(SourceFile:399)
	at org.dynamodb4idea.ad$h.invoke(SourceFile:398)
	at com.intellij.openapi.application.ActionsKt.invokeLater$lambda$5(actions.kt:58)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
	at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:21)
	at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:829)
	at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:454)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:79)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:122)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:41)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:788)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:758)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:667)
	at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$7(IdeEventQueue.kt:571)
	at com.intellij.openapi.application.impl.ApplicationImpl.withoutImplicitRead(ApplicationImpl.java:1444)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:571)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:829)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)


Expanding edit window doesn't expand textarea

Describe the bug
When you have the edit window on a record open, expanding the window via the drag handle doesn't also open up the text editing area. See screenshot.

Steps to reproduce

  1. edit a record
  2. go to lower right of editing box
  3. expand with cursor

Expected behavior
should also open textarea

Environment information:

  • OS: macos
  • IDE version:
  • plugin version:
Screenshot 2023-08-20 at 08 40 08

Failed to refresh process-based credentials

Using the "profile from credentials file" option and setting the credentials and config files results in an error:
"Connection test failed: java.lang.IllegalStateException: Failed to refresh process-based credentials"

The same configuration works when using the Big Data Tools plugin in JetBrains.

What steps can I take to troubleshoot the connection issue?

DataGrip 2023.1
Build #DB-231.8109.163, built on March 27, 2023
Runtime version: 17.0.6+10-b829.5 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

DynamoDB plugin:
2023.1.0-23

csv export not exporting column headers

Describe the bug
When choosing export with CSV exporter, choosing the option to include headers will generate a blank line at the top as if it's inserting headers, but no actual headers. Both the preview and csv results are like this, see screenshot

Steps to reproduce
Choose any file and Export
CSV export
Check checkbox for header rows
Screenshot 2023-10-04 at 1 14 56 PM

Expected behavior

Environment information:

  • OS:
  • IDE version:
  • plugin version:

DynamoDB Scan Request Doesn't Work As Expected

Describe the bug
I've got a simple Scan query (copied from the request body view of the plugin):

{
  "FilterExpression": "fooId = :val_1",
  "ExpressionAttributeValues": {
    ":val_1": {
      "S": "some value"
    }
  },
  "TableName": "my-table",
  "ReturnConsumedCapacity": "TOTAL"
}

where fooId is not a key (hence it's a scan call). This request returns no items, but when I run it on AWS web console (not the actual JSON, but using the provided form) it correctly returns three items.

Steps to reproduce
Not entirely sure what is the root cause here. Sometimes scan calls return some result sometimes not.

Expected behavior
It should return the correct items.

Environment information:
IntelliJ IDEA 2023.2 (Ultimate Edition)
Build #IU-232.8660.185, built on July 26, 2023
Runtime version: 17.0.7+7-b1000.6 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 13.5
GC: G1 Young Generation, G1 Old Generation
Memory: 2048M
Cores: 12
Metal Rendering is ON
Non-Bundled Plugins:
org.dynamodb4idea (2023.2.1-232)
Kotlin: 232-1.9.0-IJ8660.185

[Bug] Filter resets every time I run a query

When selecting only certain attributes to be shown upon issuing another query filter is not kept. See video below showcasing the issue:

9ZpBDnFRA2_rider64_2022-07-07_13-40-32.mp4

[Suggestion] Open query runner in a window instead of a tab

I find tabs less usable than windows when it comes to dynamodb query editor/runner. This is mainly because I'm used to having code in tabs and other functionality in windows. This is especially felt when I'm trying to open a code file and expecting query editor to stay, or when I would prefer to dock query editor to the bottom and hide/unhide it.

I'm not sure this would be a good change in all scenarios, feel free to close the issue if you don't find it a good suggestion.

Deleting table does not refresh display

Describe the bug
When deleting a table, the table list does not refresh. The deleted table will not even disappear on a manual refresh click.

Steps to reproduce
For Delete:

  1. Right click on a table and select Delete
  2. Confirm Yes
    Expected behavior
    Expect new table to disappear from the list. The triangle disappears but the table name stays and will not disappear even if you click the Reload circular icon.

Environment information:

  • OS: MacOS
  • IDE version: WebStorm Build #WS-232.9921.42, built on September 12, 2023
  • plugin version:2 023.2.6-232

Dynamodb local cconnection fails

Describe the bug
I try to create a new local dynamodb connection

Connection test failed: java.lang.IllegalArgumentException: Expected a profile or property
definition on line 2

Steps to reproduce
I try to connect to a local dynamodb connection on a local docker. I can use dynamodb-admin just fine.

Expected behavior
I should be able to connect to a local dynamodb instance

Environment information:

  • OS: Windows 10
  • IDE version: PyCharm 2023.2.1 (Professional Edition - Build #PY-232.9559.58, built on August 22, 2023
  • plugin version: 2023.2.5-232

Request: Please add table names pattern to connection

I only have access to certain tables that start with abc- ,but when I test the connection I get an error

not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:xxxxxxxxxxx:table/*

I think it may work if that said :table/abc-* which I had put in the tables names pattern in advanced.

Not work with YDB Documents tables

In my YC Functions I work with YDB Document tables with @aws-sdk/client-dynamodb and @aws-sdk/lib-dynamodb libs for all Cmd.
In latest PhpStorm plugin connect successfully but not open tree of content

New Sort feature not working properly with primary keys

Describe the bug
On the new feature Sort results within ddb window #45 the sorting works fine for non-key columns but columns that make up up your PK or SK are not working properly.

Clicking on a non-key column will resort all the columns together which is what you would expect, to keep the record together. But clicking on the PK column will sort only that column, meaning the rows are no longer aligned.

Steps to reproduce
Bring up a query of 100 rows that have several columns
click on a non-key column, all sorts correctly
click on the PK column and only that column will sort

Expected behavior

Environment information:

  • OS:
  • IDE version:
  • plugin version:

Edit and see favorites?

Hey AntonShuvaev,

I really like your dynamodb plugin for intelliJ.
Can you explain me where the favorites are saved to?
Is there a possibility within the plugin to edit and remove favorites?

Best wishes,
Mario

[Suggestion] Make double-clicking on the row ID a shortcut to opening the edit window

Is your feature request related to a problem?

no

Describe the solution you'd like

You can click on a record and then the toolbar (or Command B) to open the edit window. For click connivence, you could also make the row # itself to the left of the record (highlighted in screenshot) react to a double-click to open this box.

If you wanted to take it a step further, make a user config option somewhere to have double clicking on the row anywhere open the box instead of just the single field as it does now/

Screenshot 2023-08-19 at 12 57 12

Additional context

No response

MFA serial in config

I have a mfa_serial defined in my config file that is connected to my user. To connect to DynamoDB, I need to enter an OTP, but the plugin doesn't give me the option to do so. Therefore I get a 403 when I try to connect.

image
image

Tables list search and filtering

Is your feature request related to a problem?

Currently, searching by table name is not convenient, because it searches by part of the name
If I search a table User it highlights lots of tables containing User but starting with A, B, C, etc. and I have to scroll down in any way

Describe the solution you'd like

Tables filter
Instead of highlighting tables, I would like to have a filtered list of matching tables similar to how it is done in the AWS console in the Explore Items view

Additional context

No response

No tables listed from localhost:8000

I have a local dynamoDB docker instance running.
when running command
aws dynamodb list-tables --endpoint-url http://localhost:8000
lists the tables available.
These tables do not show under the plugin.

any ideas?

Plugin installation failed with status code 404

Installing the plugin from the plugins marketplace inside IntelliJ IDEA 2022.1.4 (Ultimate Edition) fails. An error popup with the following message is displayed:

Plugin Installation
Plugin "DynamoDB" was not installed:
Request failed with status code 404

The following exception gets logged in the log file:

2022-07-25 22:50:19,698 [44199438]   INFO - #c.i.o.u.i.PluginDownloader - Request failed with status code 404
com.intellij.util.io.HttpRequests$HttpStatusException: Request failed with status code 404. Status=404, Url=https://plugins.jetbrains.com/pluginManager/?id=org.dynamodb4idea&build=IU-999.SNAPSHOT&uuid=0104222aafebc17-b9fd-49d2-b93c-36778b43835e
	at com.intellij.util.io.HttpRequests.throwHttpStatusError(HttpRequests.java:652)
	at com.intellij.util.io.HttpRequests.openConnection(HttpRequests.java:630)
	at com.intellij.util.io.HttpRequests$RequestImpl.getConnection(HttpRequests.java:359)
	at com.intellij.util.io.HttpRequests$RequestImpl.getInputStream(HttpRequests.java:367)
	at com.intellij.util.io.HttpRequests$RequestImpl.saveToFile(HttpRequests.java:458)
	at com.intellij.util.io.HttpRequests$Request.saveToFile(HttpRequests.java:91)
	at com.intellij.ide.plugins.marketplace.MarketplacePluginDownloadService$downloadPlugin$1.process(MarketplacePluginDownloadService.kt:75)
	at com.intellij.ide.plugins.marketplace.MarketplacePluginDownloadService$downloadPlugin$1.process(MarketplacePluginDownloadService.kt:37)
	at com.intellij.util.io.HttpRequests.doProcess(HttpRequests.java:516)
	at com.intellij.util.io.HttpRequests.process(HttpRequests.java:498)
	at com.intellij.util.io.HttpRequests$RequestBuilderImpl.connect(HttpRequests.java:333)
	at com.intellij.ide.plugins.marketplace.MarketplacePluginDownloadService.downloadPlugin(MarketplacePluginDownloadService.kt:73)
	at com.intellij.openapi.updateSettings.impl.PluginDownloader.tryDownloadPlugin(PluginDownloader.java:358)
	at com.intellij.openapi.updateSettings.impl.PluginDownloader.prepareToInstall(PluginDownloader.java:218)
	at com.intellij.ide.plugins.PluginInstallOperation.prepareToInstall(PluginInstallOperation.java:257)
	at com.intellij.ide.plugins.PluginInstallOperation.prepareToInstallWithCallback(PluginInstallOperation.java:225)
	at com.intellij.ide.plugins.PluginInstallOperation.prepareToInstall(PluginInstallOperation.java:198)
	at com.intellij.ide.plugins.PluginInstallOperation.run(PluginInstallOperation.java:138)
	at com.intellij.ide.plugins.newui.MyPluginModel.runInstallOperation(MyPluginModel.java:441)
	at com.intellij.ide.plugins.newui.MyPluginModel$1.run(MyPluginModel.java:409)
	at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:442)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:114)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$5(CoreProgressManager.java:493)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:244)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:189)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:176)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:244)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:829)

Thanks for help.

Issue Connecting to Scylla DynamoDB

Hi Anton

I have been trying to get the plugin to work with Scylla alternator DynamoDB . I am not sure this is supported but being a drop in replacement I thought I would try. Unfortunately the IDE errors on connecting. I think it might have to do with Scylla adding log tables xxx_scylla_cdc_log which error out when called with describe-table. Maybe filtering out these could help. Again, not sure this officially supported. IDE error below.

Thanks
Lee

java.lang.NullPointerException: Cannot invoke "software.amazon.awssdk.services.dynamodb.model.Projection.projectionType()" because "<parameter2>" is null at org.dynamodb4idea.dq.a(TableNodeDescriptor.kt:75) at org.dynamodb4idea.dq.<init>(TableNodeDescriptor.kt:45) at org.dynamodb4idea.di.getChildren(DatabaseNodeDescriptor.kt:37) at com.intellij.ui.treeStructure.SimpleTreeStructure.getChildElements(SimpleTreeStructure.java:12) at com.intellij.ui.tree.StructureTreeModel.getValidChildren(StructureTreeModel.java:412) at com.intellij.ui.tree.StructureTreeModel.validateChildren(StructureTreeModel.java:330) at com.intellij.ui.tree.StructureTreeModel$Node.isModelLeaf(StructureTreeModel.java:585) at com.intellij.ui.tree.StructureTreeModel.isLeaf(StructureTreeModel.java:366) at com.intellij.ui.tree.LeafState.get(LeafState.java:64) at com.intellij.ui.tree.AsyncTreeModel$CmdGetChildren.getNode(AsyncTreeModel.java:543) at com.intellij.ui.tree.AsyncTreeModel$Command.get(AsyncTreeModel.java:443) at com.intellij.ui.tree.AsyncTreeModel$Command.get(AsyncTreeModel.java:409) at com.intellij.util.concurrency.Invoker$Task.run(Invoker.java:305) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1086) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:71) at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.runActionAndCancelBeforeWrite(ProgressIndicatorUtilService.java:63) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:128) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:109) at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:68) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:190) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:591) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:666) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:622) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:590) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:177) at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:68) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:106) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:71) at com.intellij.util.concurrency.Invoker.invokeSafely(Invoker.java:187) at com.intellij.util.concurrency.Invoker.lambda$offerSafely$0(Invoker.java:165) at com.intellij.util.concurrency.Invoker$Background.lambda$offer$0(Invoker.java:475) at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:243) at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:29) at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:216) at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:212) at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:205) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699) at java.base/java.lang.Thread.run(Thread.java:833)

Query for attributes containing '-' fails

Description

When query contains attribute with - in name then it fails with following error:

ValidationException
Invalid KeyConditionExpression: Syntax error; token: "-", near: "GI-1"

This is caused by not masking ExpressionAttributeNames with valid values. This is btw. the same error that competing product Dynobase has. This is killer, because it makes plugin unusable for most of tables that follow this naming convention. It's extremely inconvenient as AWS encourages developers to name their entities and attributes in DNS compliant way, which contains - character.

Steps to reproduce

  • Create table with GI named GI-1-PK
  • Scan for table in DynamoDB plugin
  • Fill in query GI-1-PK = "A"

Suggestion for fix

Use ExpressionAttributeNames to rename all attributes to safe names

Connection test failed: java.lang.IllegalArgumentException: Expected a profile or property definition on line 2

I was trying to test connection with my aws creds, apparently the connection fails.

image

image
image

I tried all the 3 modes of connection, nothing seem to succeed. However, I can connect and query successfully via aws cli. Not sure what is missing.

Following is the version of the plugin I have installed.
image

Intellij Version:
image

Content inside my aws config/credential file looks like this. I have masked the creds for sharing:

[default]
    region=us-west-2
    aws_access_key_id = ****
    aws_secret_access_key = ****

Not working over proxy

The https traffic does not flow over the proxy that is defined in IntelliJ. Can this be added?

Import failed. Unable to execute HTTP request: Read timed out

Export from localstack table (DynamoDB JSON) and then try to import the exported file back into a new table created with the same schema also exported as Create Table.

The export is only 38 meg.
After failure the target import table has only 25 of 42756 items.

[Suggestion] Dragging columns should be preserved if you refresh query

Is your feature request related to a problem?

no

Describe the solution you'd like

If you do a query and then drag the columns around, then do a Command+r to refresh by requerying (but not otherwise leave the screen), the column order should really be preserved. I understand if you go to other menu options and go back that it would reset to the original order, but for troubleshooting where you might want to move a column up front to focus on, and then refresh as you're doing things with the db, having that column order stick is very useful.

Additional context

No response

SSL connection error

I am attempting to connect to dynamo from behind a gateway that intercepts SSL connections and uses a self-signed certificate instead. I am getting the following error when using this plugin. Usually this error indicates that the JVM is not configured to trust the certificate. However, my system is configured to trust the self-signed certificate and IntelliJ is configured to trust it as well. Outside of this plugin I am not having issues connecting to dynamo or other AWS resources. The AWS toolkit plugin is able to connect to dynamo.

Plugin version 2023.1.1-231

2023-04-06 10:26:56,371 [  19784]   WARN - #org.dynamodb4idea.lJ - Error while testing connection
software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:111)
	at software.amazon.awssdk.core.exception.SdkClientException.create(SdkClientException.java:47)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.utils.RetryableStageHelper.setLastException(RetryableStageHelper.java:223)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:83)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:36)
	at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
	at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:56)
	at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:36)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:80)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:60)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:42)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:48)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:31)
	at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
	at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26)
	at software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:193)
	at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103)
	at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:171)
	at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:82)
	at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:179)
	at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:76)
	at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
	at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:56)
	at software.amazon.awssdk.services.sso.DefaultSsoClient.getRoleCredentials(DefaultSsoClient.java:140)
	at software.amazon.awssdk.services.sso.auth.SsoCredentialsProvider.getUpdatedCredentials(SsoCredentialsProvider.java:106)
	at software.amazon.awssdk.services.sso.auth.SsoCredentialsProvider.updateSsoCredentials(SsoCredentialsProvider.java:94)
	at software.amazon.awssdk.utils.cache.CachedSupplier.lambda$jitteredPrefetchValueSupplier$3(CachedSupplier.java:283)
	at software.amazon.awssdk.utils.cache.CachedSupplier$PrefetchStrategy.fetch(CachedSupplier.java:419)
	at software.amazon.awssdk.utils.cache.CachedSupplier.refreshCache(CachedSupplier.java:198)
	at software.amazon.awssdk.utils.cache.CachedSupplier.get(CachedSupplier.java:127)
	at software.amazon.awssdk.services.sso.auth.SsoCredentialsProvider.resolveCredentials(SsoCredentialsProvider.java:138)
	at software.amazon.awssdk.services.sso.auth.SsoProfileCredentialsProviderFactory$SsoProfileCredentialsProvider.resolveCredentials(SsoProfileCredentialsProviderFactory.java:122)
	at org.dynamodb4idea.c.resolveCredentials(SourceFile:117)
	at software.amazon.awssdk.core.internal.util.MetricUtils.measureDuration(MetricUtils.java:50)
	at software.amazon.awssdk.awscore.internal.authcontext.AwsCredentialsAuthorizationStrategy.resolveCredentials(AwsCredentialsAuthorizationStrategy.java:100)
	at software.amazon.awssdk.awscore.internal.authcontext.AwsCredentialsAuthorizationStrategy.addCredentialsToExecutionAttributes(AwsCredentialsAuthorizationStrategy.java:77)
	at software.amazon.awssdk.awscore.internal.AwsExecutionContextBuilder.invokeInterceptorsAndCreateExecutionContext(AwsExecutionContextBuilder.java:120)
	at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.invokeInterceptorsAndCreateExecutionContext(AwsSyncClientHandler.java:69)
	at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:78)
	at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:179)
	at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:76)
	at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
	at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:56)
	at software.amazon.awssdk.services.dynamodb.a.listTables(SourceFile:5145)
	at software.amazon.awssdk.services.dynamodb.DynamoDbClient.listTables(DynamoDbClient.java:5787)
	at org.dynamodb4idea.lJ$g.a(SourceFile:143)
	at org.dynamodb4idea.lJ$g.invoke(SourceFile:146)
	at org.dynamodb4idea.r.a(SourceFile:24)
	at org.dynamodb4idea.r.b(SourceFile:49)
	at org.dynamodb4idea.s$a.run(SourceFile:27)
	at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:429)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:114)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$6(CoreProgressManager.java:480)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:252)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:252)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
	at java.base/java.lang.Thread.run(Thread.java:833)
	Suppressed: software.amazon.awssdk.core.exception.SdkClientException: Request attempt 1 failure: Unable to execute HTTP request: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	Suppressed: software.amazon.awssdk.core.exception.SdkClientException: Request attempt 2 failure: Unable to execute HTTP request: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	Suppressed: software.amazon.awssdk.core.exception.SdkClientException: Request attempt 3 failure: Unable to execute HTTP request: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:371)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:314)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:309)
	at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1357)
	at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1232)
	at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1175)
	at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:458)
	at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:201)
	at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)
	at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1510)
	at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1425)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:436)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384)
	at software.amazon.awssdk.http.apache.internal.conn.SdkTlsSocketFactory.connectSocket(SdkTlsSocketFactory.java:65)
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
	at software.amazon.awssdk.http.apache.internal.conn.ClientConnectionManagerFactory$DelegatingHttpClientConnectionManager.connect(ClientConnectionManagerFactory.java:86)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
	at software.amazon.awssdk.http.apache.internal.impl.ApacheSdkHttpClient.execute(ApacheSdkHttpClient.java:72)
	at software.amazon.awssdk.http.apache.ApacheHttpClient.execute(ApacheHttpClient.java:254)
	at software.amazon.awssdk.http.apache.ApacheHttpClient.access$500(ApacheHttpClient.java:104)
	at software.amazon.awssdk.http.apache.ApacheHttpClient$1.call(ApacheHttpClient.java:231)
	at software.amazon.awssdk.http.apache.ApacheHttpClient$1.call(ApacheHttpClient.java:228)
	at software.amazon.awssdk.core.internal.util.MetricUtils.measureDurationUnsafe(MetricUtils.java:63)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeHttpRequestStage.executeHttpRequest(MakeHttpRequestStage.java:77)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeHttpRequestStage.execute(MakeHttpRequestStage.java:56)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeHttpRequestStage.execute(MakeHttpRequestStage.java:39)
	at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
	at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
	at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
	at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:73)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:42)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:78)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:40)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:50)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:36)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:81)
	... 68 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)
	at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)
	at java.base/sun.security.validator.Validator.validate(Validator.java:264)
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132)
	at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1341)
	... 111 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
	at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
	at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
	at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)
	... 116 more

Unable to use assumed roles

Setting up the profile to use an assumed role looks like this

[auth]
region=eu-west-1
aws_access_key_id=KEY_FROM_AUTH_ACCOUNT
aws_secret_access_key=SECRET_FROM_AUTH_ACCOUNT
[prod]
role_arn=arn:aws:iam::999999999999:role/role_name
source_profile=auth

This works on the command line as follows

aws --profile=prod dynamodb list-tables

And the list of tables comes back, using the auth credentials and assuming the role listed to get the visible tables for that role.

Using the plugin comes back with


Connection test failed: software.amazon.awssdk.core.exception.SdkClientException: Profile file
contained no credentials for profile 'prod': ProfileFile(profiles=[Profile(name=default,
properties=[output, region])])

I assume its looking for the key and secret to be listed and not using the profile.

Could using assumed roles be supported ?

Sort results within ddb window

Is your feature request related to a problem?

When querying on ddb data, it would be nice to be able to sort within the window, as sort of a "local sort". For example if you have a query result of 100 items, clicking on any column heading would sort your results on that column just locally. Makes it easier to find things

Describe the solution you'd like

Additional context

No response

Assumed role not respected

Hello,

I have the plugin configured to connect with a profile set up to use an assumed role and am able to enumerate and query tables but they are the tables in the bastion account and not the sub-account that the profile is pointed to.

image

The enumerated list in the DynamoDB panel are the tables in the bastion account and not the assumed role account.

When I list the tables with the CLI (aws --profile=staging dynamodb list-tables), the correct set of tables are listed.

Pertinent contents of ~/.aws/config:

[default]
region=us-east-1

[profile main]
region=us-east-1

[profile staging]
role_arn=arn:aws:iam::############:role/OrganizationAccountAccessRole
source_profile=main
region = us-east-1

Pertinent contents of ~/.aws/credentials:

[main]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[staging]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Fetching tables list takes too long

When opening an IDE and fetching the initial list of tables it takes two-three minutes to see the tables
In my AWS account, I have around 600 tables

I suppose the plugin fetches tables and then the metadata for each table before showing a list
Maybe it is worth splitting metadata collection into the background, with the possibility of opening a separate table in the data browser before all the metadata is gathered

problems for export data

Describe the bug

when you tried to export data the button is not enabled, after making several selections it is enabled but never starts the data export process

Steps to reproduce
make a query.
in Icon bar select csv.
click the download icon.
Select the path where the data is to be extracted.
click export button

Expected behavior
export the data of all pages of my query

Environment information:

  • OS: macOS Ventura 13.5.1
  • IDE version: Intellij 2023.2.1
  • plugin version: 2023.2.3-221

Login does not support AWS temporary credentals

Describe the bug
On the company system, we use Okta to login into AWS, which gives us three keys to put in ~/.aws/credentials every day: aws_access_key_id, aws_secret_access_key and aws_session_token (these are STS temporary credentials good for 12 hours).

These go into the credentials file under a header that looks like this: [1234567890_devel] i.e. an account number an label which comes out of Okta's integration.

The AWS config file ~/.aws/config is set up to have profiles that use these and look like this:

[profile 999]
region=us-east-1
output=json
source_profile=1234567890_devel
role_arn=arn:aws:iam::1234567890:role/My-Dept-Dev-Role

this profile is set up to use the credentials in the other file.

For cli commands, you simply do the --profile 999 just like any hardcoded profile key/secret set, it works the same. But the Dynamo plugin gives this error when picking "profile from credential file" and the 999, and clicking test:

Connection test failed: java.lang.IllegalStateException: Invalid profile file: Circular relationship
detected with profiles [1234567890_devel, 999].

Steps to reproduce
You can test this scenario without Okta by just using the aws cli to generate a set of temp credentials yourself. You will need to define a Role that has permissions to do whatever first and get the arn for it, and then from the command line:

aws sts assume-role --role-arn $ROLE_ARN --role-session-name  'MyTestSession'

then put these into aws/credentials like above and set up a config profile that points to them and the same ROLE_ARN

testing from the command line like

aws s3api list-buckets --profile 999

would confirm the credentials work and then attempt to use that same profile in the plugin.

Expected behavior

Environment information:

  • OS: macos
  • IDE version: webstorm
  • plugin version:

courtesy of ChatGPT:

#!/bin/bash

# Specify your AWS profile name
AWS_PROFILE="your_profile_name"

# Specify the ARN of the IAM role you want to assume
ROLE_ARN="arn:aws:iam::123456789012:role/YourRoleName"

# Specify the session name for the assumed role session
SESSION_NAME="TemporarySession"

# Execute AWS CLI command to assume the role and get temporary credentials
TEMP_CREDENTIALS=$(aws sts assume-role --role-arn $ROLE_ARN --role-session-name $SESSION_NAME)

# Extract temporary credentials from the output
ACCESS_KEY=$(echo $TEMP_CREDENTIALS | jq -r '.Credentials.AccessKeyId')
SECRET_KEY=$(echo $TEMP_CREDENTIALS | jq -r '.Credentials.SecretAccessKey')
SESSION_TOKEN=$(echo $TEMP_CREDENTIALS | jq -r '.Credentials.SessionToken')

# Update the AWS credentials file with the temporary credentials
aws configure set aws_access_key_id $ACCESS_KEY --profile $AWS_PROFILE
aws configure set aws_secret_access_key $SECRET_KEY --profile $AWS_PROFILE
aws configure set aws_session_token $SESSION_TOKEN --profile $AWS_PROFILE

echo "Temporary credentials have been generated and updated in the AWS credentials file."

Support of Unicode

Inserting or updating data with unicode like German 'ä' results in an error.

Bad conversion of JSON null field to binary

When importing the following file, I receive an invalid DyanamoDB JSON, as shown below.

{
  "key": "sample",
  "key-2": null
}

Screenshot 2023-01-15 at 22 36 40

Note, that I manually marked the type of "key-2" as binary. I'd expect that field to be converted to {"NULL": true} instead instead of specifying a malicous binary value.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.