Teradata drvier - NullPoint Exception

Hi!
It’s me again. I swore to my self not to ask stupid questions, but I have this error and can’t figure it out.
I’m trying to define new db connection in my Clover ETL project using teradata jdbc driver. I can load dirver from JAR, but when I try to click on it, I’m getting NullPointerException ;/

Does Clover ELT supports Teradata JDBC driver?

Screen: http://img78.imageshack.us/img78/4016/teraetlxm1.th.jpg

Hi!
this looks like a bug. Can you please look in the “error log” view? You can find it in Window->show view->other->PDE runtime->error log. Though you need to have the right edition of Eclipse installed.

Thanks!
Jaro

Hi,
thanks for an answer. I’m using:

Eclipse
Version: 3.3.2
Build id: M20080221-1800

CloverETL GUI
Version: 1.10.2
Build #: 273
Build date: 2008-05-29

Here is the stack trace:

Message:

Problems occurred when invoking code from plug-in: "org.eclipse.jface".

Exception Stack Trace:


java.lang.NullPointerException
at com.ncr.teradata.TeraDriver.acceptsURL(TeraDriver.java:334)
at cz.opentech.cloveretl.gui.wizard.dbconnection.E.Ò00000(Unknown Source)
at cz.opentech.cloveretl.gui.wizard.dbconnection.E.String(Unknown Source)
at cz.opentech.cloveretl.gui.wizard.dbconnection.E$_Oo.selectionChanged(Unknown Source)
at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:857)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:160)
at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2047)
at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1138)
at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1168)
at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:227)
at org.eclipse.jface.util.OpenStrategy.access$3(OpenStrategy.java:221)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:388)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
at org.eclipse.jface.window.Window.open(Window.java:796)
at org.eclipse.ui.actions.NewWizardAction.run(NewWizardAction.java:182)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
at org.eclipse.equinox.launcher.Main.run(Main.java:1173)

Session Data:


eclipse.buildId=M20080221-1800
java.version=1.6.0_06
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=pl_PL
Command-line arguments:  -os win32 -ws win32 -arch x86

Hi!
thanks for the detailed bug info. We were able to track down the bug, and it will be fixed in the next bugfix release of CloverGUI.

Jaro

Hi,
It seems that the bug with URL jdbc string is gone. I have configured my connection with teradata database. The connection is valid, although i have two more problems now:
- in DB_INPUT_TABLE I can’t perform SQL Query Validation or Schema extraction
- getting NoClassDefFoundError Exception while running simple reader task.
Is there any additional configuration for jdbc drivers required?

Console Log:

***  CloverETL framework/transformation graph runner ver 2.4, (c) 2002-06 D.Pavlis, released under GNU Lesser General Public License  ***
 Running with framework version: 2.4 build#2069 compiled 10/07/2008 16:35:29

INFO  [main] - Loading default properties from: defaultProperties
DEBUG [main] - Plugin org.jetel.bulkloader loaded.
	id - org.jetel.bulkloader
	version - 2.4.8
	provider-name - 
		component { className = org.jetel.component.OracleDataReader; type = ORACLE_DATA_READER;  }
		component { className = org.jetel.component.OracleDataWriter; type = ORACLE_DATA_WRITER;  }
		component { className = org.jetel.component.MysqlDataReader; type = MYSQL_DATA_READER;  }
		component { className = org.jetel.component.DB2DataWriter; type = DB2_DATA_WRITER;  }
		component { className = org.jetel.component.InformixDataWriter; type = INFORMIX_DATA_WRITER;  }
		component { className = org.jetel.component.MsSqlDataWriter; type = MS_SQL_DATA_WRITER;  }
		component { className = org.jetel.component.MysqlDataWriter; type = MYSQL_DATA_WRITER;  }
		component { className = org.jetel.component.PostgreSqlDataWriter; type = POSTGRESQL_DATA_WRITER;  }

DEBUG [main] - Plugin org.jetel.component loaded.
	id - org.jetel.component
	version - 2.4.8
	provider-name - null
		component { className = org.jetel.component.DataReader; type = DATA_READER;  }
		component { className = org.jetel.component.DataWriter; type = DATA_WRITER;  }
		component { className = org.jetel.component.DelimitedDataReader; type = DELIMITED_DATA_READER;  }
		component { className = org.jetel.component.DelimitedDataWriter; type = DELIMITED_DATA_WRITER;  }
		component { className = org.jetel.component.SimpleCopy; type = SIMPLE_COPY;  }
		component { className = org.jetel.component.Concatenate; type = CONCATENATE;  }
		component { className = org.jetel.component.SimpleGather; type = SIMPLE_GATHER;  }
		component { className = org.jetel.component.Reformat; type = REFORMAT;  }
		component { className = org.jetel.component.DBInputTable; type = DB_INPUT_TABLE;  }
		component { className = org.jetel.component.Sort; type = SORT;  }
		component { className = org.jetel.component.DBOutputTable; type = DB_OUTPUT_TABLE;  }
		component { className = org.jetel.component.FixLenDataWriter; type = FIXLEN_DATA_WRITER;  }
		component { className = org.jetel.component.Dedup; type = DEDUP;  }
		component { className = org.jetel.component.FixLenDataReader; type = FIXLEN_DATA_READER;  }
		component { className = org.jetel.component.Merge; type = MERGE;  }
		component { className = org.jetel.component.MergeJoin; type = MERGE_JOIN;  }
		component { className = org.jetel.component.MergeJoin; type = EXT_MERGE_JOIN;  }
		component { className = org.jetel.component.MergeJoin; type = SORTED_JOIN;  }
		component { className = org.jetel.component.Trash; type = TRASH;  }
		component { className = org.jetel.component.DBExecute; type = DB_EXECUTE;  }
		component { className = org.jetel.component.HashJoin; type = HASH_JOIN;  }
		component { className = org.jetel.component.HashJoin; type = EXT_HASH_JOIN;  }
		component { className = org.jetel.component.CheckForeignKey; type = CHECK_FOREIGN_KEY;  }
		component { className = org.jetel.component.DBFDataReader; type = DBF_DATA_READER;  }
		component { className = org.jetel.component.ExtFilter; type = EXT_FILTER;  }
		component { className = org.jetel.component.ExtSort; type = EXT_SORT;  }
		component { className = org.jetel.component.Partition; type = PARTITION;  }
		component { className = org.jetel.component.DataIntersection; type = DATA_INTERSECTION;  }
		component { className = org.jetel.component.Aggregate; type = AGGREGATE;  }
		component { className = org.jetel.component.SystemExecute; type = SYS_EXECUTE;  }
		component { className = org.jetel.component.RunGraph; type = RUN_GRAPH;  }
		component { className = org.jetel.component.KeyGenerator; type = KEY_GEN;  }
		component { className = org.jetel.component.AproxMergeJoin; type = APROX_MERGE_JOIN;  }
		component { className = org.jetel.component.DBJoin; type = DBJOIN;  }
		component { className = org.jetel.component.XLSReader; type = XLS_READER;  }
		component { className = org.jetel.component.XLSWriter; type = XLS_WRITER;  }
		component { className = org.jetel.component.CloverDataWriter; type = CLOVER_WRITER;  }
		component { className = org.jetel.component.CloverDataReader; type = CLOVER_READER;  }
		component { className = org.jetel.component.StructureWriter; type = STRUCTURE_WRITER;  }
		component { className = org.jetel.component.Normalizer; type = NORMALIZER;  }
		component { className = org.jetel.component.Denormalizer; type = DENORMALIZER;  }
		component { className = org.jetel.component.JmsReader; type = JMS_READER;  }
		component { className = org.jetel.component.JmsWriter; type = JMS_WRITER;  }
		component { className = org.jetel.component.LookupJoin; type = LOOKUP_JOIN;  }
		component { className = org.jetel.component.LookupTableReaderWriter; type = LOOKUP_TABLE_READER_WRITER;  }
		component { className = org.jetel.component.DataGenerator; type = DATA_GENERATOR;  }
		component { className = org.jetel.component.MultiLevelReader; type = MULTI_LEVEL_READER;  }
		component { className = org.jetel.component.SequenceChecker; type = SEQUENCE_CHECKER;  }
		component { className = org.jetel.component.TextTableWriter; type = TEXT_TABLE_WRITER;  }
		component { className = org.jetel.component.XmlXPathReader; type = XML_XPATH_READER;  }
		component { className = org.jetel.component.Pacemaker; type = PACEMAKER;  }
		component { className = org.jetel.component.SpeedLimiter; type = SPEED_LIMITER;  }
		component { className = org.jetel.component.JavaExecute; type = JAVA_EXECUTE;  }
		component { className = org.jetel.component.XmlWriter; type = XML_WRITER;  }
		component { className = org.jetel.component.XSLDataTransformer; type = XSL_TRANSFORMER;  }

DEBUG [main] - Plugin org.jetel.connection loaded.
	id - org.jetel.connection
	version - 2.4.8
	provider-name - null
		connection { className = org.jetel.connection.DBConnection; type = JDBC;  }
		connection { className = org.jetel.connection.JmsConnection; type = JMS;  }

DEBUG [main] - Plugin org.jetel.engine loaded.
	id - org.jetel.engine
	version - 2.4.8
	provider-name - null
		dictionaryEntry { className = org.jetel.graph.dictionary.StringDictionaryEntryProvider; type = string;  }

DEBUG [main] - Plugin org.jetel.jdbc loaded.
	id - org.jetel.jdbc
	version - 2.4.8
	provider-name - null
		jdbcDriver { driverLibrary = lib/mysql/mysql-connector-java-5.1.5-bin.jar; name = MySQL; dbDriver = org.gjt.mm.mysql.Driver; urlHint = jdbc:mysql://hostname:3306/database; database = MYSQL;  }
		jdbcDriver { driverLibrary = lib/postgre/postgresql-8.3-603.jdbc3.jar; name = PostgreSQL; dbDriver = org.postgresql.Driver; urlHint = jdbc:postgresql://hostname/database; database = POSTGRE;  }

DEBUG [main] - Plugin org.jetel.lookup loaded.
	id - org.jetel.lookup
	version - 2.4.8
	provider-name - null
		lookup { className = org.jetel.lookup.SimpleLookupTable; type = simpleLookup;  }
		lookup { className = org.jetel.lookup.DBLookupTable; type = dbLookup;  }
		lookup { className = org.jetel.lookup.RangeLookupTable; type = rangeLookup;  }

DEBUG [main] - Plugin org.jetel.sequence loaded.
	id - org.jetel.sequence
	version - 2.4.8
	provider-name - null
		sequence { className = org.jetel.sequence.SimpleSequence; type = SIMPLE_SEQUENCE;  }
		sequence { className = org.jetel.sequence.PrimitiveSequence; type = PRIMITIVE_SEQUENCE;  }

DEBUG [main] - Plugin org.jetel.thirdparty loaded.
	id - org.jetel.thirdparty
	version - 2.4.8
	provider-name - null
		component { className = org.jetel.component.XMLExtract; type = XML_EXTRACT;  }
		component { className = org.jetel.component.Filter; type = FILTER;  }
		component { className = com.linagora.component.LdapReader; type = LDAP_READER;  }
		component { className = com.linagora.component.LdapWriter; type = LDAP_WRITER;  }

DEBUG [main] - Plugin org.jetel.tlfunction loaded.
	id - org.jetel.tlfunction
	version - 2.4.8
	provider-name - null
		tlfunction { libraryName = math; className = org.jetel.interpreter.extensions.MathLib; function = sqrt,log,log10,exp,round,pow,pi,e,random;  }
		tlfunction { libraryName = date; className = org.jetel.interpreter.extensions.DateLib; function = today,dateadd,datediff,trunc;  }
		tlfunction { libraryName = string; className = org.jetel.interpreter.extensions.StringLib; function = concat,uppercase,lowercase,substring,left,right,trim,length,soundex,replace,split,char_at,is_blank,is_ascii,is_number,is_integer,is_long,is_date,remove_diacritic,remove_blank_space,get_alphanumeric_chars,translate,join,index_of,count_char;  }
		tlfunction { libraryName = convert; className = org.jetel.interpreter.extensions.ConvertLib; function = num2str,date2str,str2date,date2num,str2num,try_convert,base64byte,byte2base64,bits2str,str2bits,hex2byte,byte2hex,num2num,num2bool,bool2num,str2bool,long2date,date2long,to_string;  }

Graph definition file: graph\teraReader.grf
INFO  [main] - Checking graph configuration...
INFO  [main] - Initializing connection: 
INFO  [main] - DBConnection driver[com.ncr.teradata.TeraDriver]:url[jdbc:teradata://demotdat]:user[student01] ... OK
INFO  [WatchDog] - Thread started.
INFO  [WatchDog] - Running on 2 CPU(s) max available memory for JVM 65088 KB
INFO  [WatchDog] - [Clover] Initializing phase: 0
DEBUG [WatchDog] -  initializing edges: 
DEBUG [WatchDog] -  all edges initialized successfully... 
DEBUG [WatchDog] -  initializing nodes: 
DEBUG [WatchDog] - 	DATA_WRITER0 ...OK
DEBUG [WatchDog] - 	DB_INPUT_TABLE0 ...OK
INFO  [WatchDog] - [Clover] phase: 0 initialized successfully.
INFO  [WatchDog] - Starting up all nodes in phase [0]
DEBUG [WatchDog] - DATA_WRITER0 ... started
DEBUG [WatchDog] - DB_INPUT_TABLE0 ... started
INFO  [WatchDog] - Sucessfully started all nodes in phase!
DEBUG [DB_INPUT_TABLE0] - DBConnection (Connection0), component [DB_INPUT_TABLE0] attempts to connect to the database
INFO  [WatchDog] - ---------------------** Start of tracking Log for phase [0] **-------------------
INFO  [WatchDog] - Time: 22/07/08 12:54:09
INFO  [WatchDog] - Node                   Status     Port      #Records         #KB  Rec/s    KB/s
INFO  [WatchDog] - ----------------------------------------------------------------------------------
INFO  [WatchDog] - DATA_WRITER0           RUNNING        
INFO  [WatchDog] -  %cpu:..                           In:0            0           0      0       0
INFO  [WatchDog] - DB_INPUT_TABLE0        RUNNING        
INFO  [WatchDog] -  %cpu:..                          Out:0            0           0      0       0
INFO  [WatchDog] - ---------------------------------** End of Log **--------------------------------
Exception in thread "DB_INPUT_TABLE0" java.lang.NoClassDefFoundError: com/ncr/teradata/jtdgss/TdgssManager
	at com.ncr.teradata.TeraEncrypt.getTDgssVersion(TeraEncrypt.java:563)
	at com.ncr.teradata.jdbc_4.parcel.ConfigFeatureTdgss.<init>(ConfigFeatureTdgss.java:44)
	at com.ncr.teradata.jdbc_4.statemachine.InitDBConfigState.action(InitDBConfigState.java:66)
	at com.ncr.teradata.jdbc_4.statemachine.LogonController.run(LogonController.java:49)
	at com.ncr.teradata.jdbc_4.TDSession.<init>(TDSession.java:193)
	at com.ncr.teradata.jdbc_3.ifjdbc_4.TeraLocalConnection.<init>(TeraLocalConnection.java:93)
	at com.ncr.teradata.jdbc.ConnectionFactory.createConnection(ConnectionFactory.java:50)
	at com.ncr.teradata.TeraDriver.connect(TeraDriver.java:260)
	at org.jetel.connection.DBConnection.connect(DBConnection.java:282)
	at org.jetel.connection.DBConnection.getConnection(DBConnection.java:457)
	at org.jetel.component.DBInputTable.execute(DBInputTable.java:194)
	at org.jetel.graph.Node.run(Node.java:371)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: com.ncr.teradata.jtdgss.TdgssManager
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	... 15 more

Hi,
The problem is solved. I had to add two jar files to the class path: tdgssconfig.jar, tdgssjava.jar.

Best regards.

i am facing the same problem as you mentioned nullpointer exception Could you help me out